在R中镶嵌多波段光栅时的错误

8yoxcaq7  于 2023-05-20  发布在  其他
关注(0)|答案(3)|浏览(138)

我试图将多个多波段数据集镶嵌到R中的一个大型多波段栅格中。我试图使用此代码进行此操作,但它返回一个单波段图像。

library(sp)  
library(raster)  
library(rgdal)  
setwd("C:\\Projects\\Rice-fallow_4_states\\Bihar\\S1")  
x <- list.files(".\\", pattern='tif$',
                    full.names = TRUE) # list all the rasters  
X1<- as.list(x)    

allrasters1 <- lapply(X1, raster)  
x.mosaic <- do.call(merge,allrasters1)   
names(x.mosaic)  
x.mosaic  
plot(x.mosaic)
qltillow

qltillow1#

我建议你应该使用terra代替raster包。terraraster快得多。可以使用以下代码

library(terra) 

setwd("C:\\Projects\\Rice-fallow_4_states\\Bihar\\S1")  
x <- list.files(".\\", pattern='tif$',
                full.names = TRUE) # list all the rasters  

allrasters1 <- lapply(x, rast)  
x.mosaic <- do.call(mosaic, allrasters1)  
names(x.mosaic)  
x.mosaic  
plot(x.mosaic)
jjjwad0x

jjjwad0x2#

这就是如何使用Terra(“栅格”的替换)来实现这一点

library(terra)
ff <- list.files(".\\", pattern='tif$',
                    full.names = TRUE) 
x <- sprc(ff) 
m <- mosaic(x)
dfuffjeb

dfuffjeb3#

在R中使用raster()加载光栅时,它只加载图像的一个层。如果要加载整个多波段图像,请使用stack()brick()。我相信brick()是最适合多波段图像的,但我不经常处理这些,所以我还没有找到stack()之间有意义的区别。

相关问题