我想使用terra将我在列表中拥有的多个栅格叠加起来。
以前,在raster中可以很容易地使用stack()
函数对列表进行叠加。然而,在terra中这已不再适用。请参见下面的示例:
r1 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.1)
r2 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.2)
r_list <- list(r1, r2)
r_stack <- stack(r_list)
栅格堆栈中的结果:
class : RasterStack
dimensions : 6, 6, 36, 2 (nrow, ncol, ncell, nlayers)
resolution : 0.5, 0.5 (x, y)
extent : -1.5, 1.5, -1.5, 1.5 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
names : layer.1, layer.2
min values : 0.1, 0.2
max values : 0.1, 0.2
但是在 terra 中,使用 c()
等价于在列表上直接使用它是行不通的:
r1 <- rast(nrows = 1, ncols = 1, resolution = 0.5, xmin = -1.5, xmax = 1.5, ymin = -1.5, ymax = 1.5, vals = 0.1)
r2 <- rast(nrows = 1, ncols = 1, resolution = 0.5, xmin = -1.5, xmax = 1.5, ymin = -1.5, ymax = 1.5, vals = 0.2)
r_list <- list(r1, r2)
r_c <- c(r_list)
错误信息如下:
请问如何解决在列表中整理spatRaster的问题?Error in .local(x, ...) : Arguments should be Raster* objects or filenames
r_c <- c(r1, r2)
并删除r_list <- list(r1, r2)
。在raster
包中也不需要r_list <- list(r1, r2)
。直接运行r_stack <- stack(r1, r2)
即可。 - UseR10085