代码之家  ›  专栏  ›  技术社区  ›  GCGM

如果条件R内有多个图

  •  1
  • GCGM  · 技术社区  · 6 年前

    我正在使用 if 处理一些数据并创建三个显示在 Viewer

    if (S2_input){
          S2_images<-stack(S2_rsp)
          S2_images
          cubeView(S2_images)
    
          # Plot True/False color
          viewRGB(S2_images, 3,2,1, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik"))
          viewRGB(S2_images, 4,3,2, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik"))
    }
    

    哪里 S2_images 是:

    > S2_images
    class       : RasterStack 
    dimensions  : 660, 1074, 708840, 30  (nrow, ncol, ncell, nlayers)
    resolution  : 10, 10  (x, y)
    extent      : 219800, 230540, 4097480, 4104080  (xmin, xmax, ymin, ymax)
    coord. ref. : +proj=utm +zone=30 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
    names       : L2A_T30ST//51_B02_10m, L2A_T30ST//51_B03_10m, L2A_T30ST//51_B04_10m, L2A_T30ST//51_B08_10m, L2A_T30ST//51_B11_20m, L2A_T30ST//51_B12_20m, L2A_T30ST//21_B02_10m, L2A_T30ST//21_B03_10m, L2A_T30ST//21_B04_10m, L2A_T30ST//21_B08_10m, L2A_T30ST//21_B11_20m, L2A_T30ST//21_B12_20m, L2A_T30ST//51_B02_10m, L2A_T30ST//51_B03_10m, L2A_T30ST//51_B04_10m, ... 
    min values  :                     1,                   127,                     6,                     1,                    88,                    86,                     1,                     1,                     1,                     1,                     1,                     1,                    50,                   198,                     7, ... 
    max values  :                  8702,                  9090,                  7589,                  7322,                  5379,                  5474,                  8743,                  9298,                  7585,                  8530,                  5712,                  5905,                  8048,                  7692,                  7187, ... 
    

    问题是当我运行完 如果 只有决赛 viewRGB 在查看器中显示。知道如何在条件中创建所有这些元素吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   LocoGris    6 年前

    正如你在这里看到的 Printing 'Hello world' n number of times in R ,r只显示循环中的最后一条指令,因此解决问题的方法是将映射包装在 print() 所以:

    if (S2_input){
          S2_images<-stack(S2_rsp)
          S2_images
          cubeView(S2_images)
    
          # Plot True/False color
          print(viewRGB(S2_images, 3,2,1, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik")))
          viewRGB(S2_images, 4,3,2, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik"))
    }
    

    if (S2_input){
          S2_images<-stack(S2_rsp)
          S2_images
          cubeView(S2_images)
    
          # Plot True/False color
          print(viewRGB(S2_images, 3,2,1, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik")))
          print(viewRGB(S2_images, 4,3,2, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik")))
    }
    

    或者您也可以构造一个映射向量:

    if (S2_input){
          S2_images<-stack(S2_rsp)
          S2_images
          cubeView(S2_images)
    
          # Plot True/False color
          v <-c(viewRGB(S2_images, 3,2,1, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik")),viewRGB(S2_images, 4,3,2, map.types=c("Esri.WorldTopoMap", "Esri.WorldImagery", "OpenStreetMap.Mapnik")))
          v
    }