r语言 - 如何计算terra包中的聚合事实参数?



terra包具有聚合函数,该函数允许创建具有较低分辨率(较大单元格)的新SpatRaster,但需要fact参数。

在转换多个栅格时,每次都需要计算fact,是否有办法根据另一个栅格的目标分辨率传递fact参数?其他函数将现有栅格作为输入,例如function(r1,r2)

library(terra)
r1 <- rast(ncol=10,nrow=10)
r2 <- rast(ncol=4,nrow=4)
values(r1) <- runif(ncell(r1))
values(r2) <- runif(ncell(r2))

我试过了

r3 = aggregate(r1,fact=res(r1)/res(r2))

错误:参数'fact'中的[aggregate]值应该是>0

找到了答案,我把res(r1)/res(r2)倒过来了,应该是

r3 = aggregate(r1,fact=res(r2)/res(r1))

如果只传递目标的栅格分辨率的名称就更好了。

不能将r2聚合为r1,因为res(r2)/res(r1)不返回整数。

res(r2)/res(r1)
#[1] 2.5 2.5

更一般地说,你不能假设你可以将一个栅格聚合到另一个栅格,所以将另一个栅格作为第二个参数不像使用其他方法(如ressample)那样明显。

在这种特殊情况下,你可以输入

aggregate(disagg(r1, 2), 5)

最新更新