我想将土地覆盖图合并为一张,我找到了下面的代码:
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
你的问题不太清楚。您确定您的文件具有不同的空间范围吗?这对于使用
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
``