我是 terra 包的新手。我正在尝试aggregate
只有一层的分类栅格(或更准确地说是 SpatRaster)。结果应该是一个栅格,其层数与原始栅格中的类别一样多;单元格的值应具有每个类别中原始(较小)单元格的数量。
这是一个示例,显示了我试图实现的目标:
library(terra)
# the SpatRaster with 3 categories: 1, 2, 3
set.seed(0)
r <- rast(nrows=4, ncols=4)
values(r) <- sample(3, ncell(r), replace=TRUE)
# create one layer per category with binary indicators
r1 <- subst(r, from=c(2,3), 0)
r2 <- subst(r, from=c(1,3), 0); r2 <- subst(r2, from=2, 1)
r3 <- subst(r, from=c(1,2), 0); r3 <- subst(r3, from=3, 1)
# stack
s <- c(r1, r2, r3)
names(s) <- c("cat1", "cat2", "cat3")
# aggregate
a <- aggregate(s, fact = 2, fun = "sum")
这适用于这个例子。但这既不实用也不高效。对于大型栅格数据集(数量级 1GB-10GB)和许多类别,这可能(?)不可行。
那么,terra
专业人士将如何做到这一点?