如何使用R、terra合并栅格数据的土地覆盖图

问题描述 投票:0回答:1

我想将土地覆盖图合并为一张,我找到了下面的代码:

tif_files <- list.files(path = "LandCover",
                          pattern = ".tif$",
                          full.names = TRUE,
                          ignore.case = TRUE
  )
  tif_rasts <- list()
  for (i in 1:length(tif_files)){
    # print(tif_file_name[i])
    tif_rasts <- c(tif_rasts,  rast(tif_files[i]))
  }
  
  
  tif_mosaic <- do.call(mosaic, c(tif_rasts, fun="max"))
  plot(tif_mosaic)
  
  writeRaster(tif_mosaic,
              filename = "land_cover.tif"),
              overwrite = TRUE
  )        

但是,我发现最终的土地覆盖数据分为3个波段(图层),并且这些图层具有相同和不同的值。我想知道如何将它们组合成一个图层,以便识别每个值代表的土地利用类型。

unique(tif_mosaic)
   CHI_1_LULC_1 CHI_1_LULC_2 CHI_1_LULC_3
2             0            0            0
3             0            0          255
4            34          139           34
5           128            0            0
6           128          236          104
7           133          133          133
8           255            0            0
9           255            0          192
10          255          193           37
11          255          255          255
r terra
1个回答
0
投票

你的问题不太清楚。您确定您的文件具有不同的空间范围吗?这对于使用

mosaic
很重要。我也不认为你需要循环。假设
tif_files
只有三个文件。只要这样做:

library(terra)

tif_files <- rast(list.files(path = "LandCover",
                          pattern = ".tif$",
                          full.names = TRUE))

tif_mosaic = mosaic(tif_files[[1]], tif_files[[2]], tif_files[[3]], fun = 'mean') #assuming you don't have a reason for using fun = max

``
© www.soinside.com 2019 - 2024. All rights reserved.