【发布时间】:2018-09-22 16:32:53
【问题描述】:
我有几个图层的堆栈栅格数据集,但是,我想计算每个单元格的总和以进行不同的图层选择,最后生成一个新图层,任何人都可以通过使用 calc 或 overlay 或其他一些栅格来提供一些好的建议R中的计算? 我可以通过循环进行计算,但是当我有很多层时它会消耗很多次,并且还使用很多存储,我的脚本如下,
## library(raster)
make_calc <- function(rr, start, end) {
rr <- as.array(rr)
start <- as.array(start)
end <- as.array(end)
dms <- dim(raster)
tmp <- array(NA, dim = dms[1:2])
for (i in 1:dms[1]) {
for (j in 1:dms[2]) {
tmp[i,j] <- sum(raster[i,j,start[i,j,1]:end[i,j,1]], na.rm = TRUE)
}
}
return(tmp)
}
rr <- raster(res = 10)
rr[] <- 1
rr <- stack(rr, rr, rr, rr)
start <- raster(res = 10)
start[] <- sample(1:2, ncell(start), replace = TRUE)
end <- raster(res = 10)
end[] <- sample(3:4, ncell(end), replace = TRUE)
result <- make_calc(rr, start, end)
【问题讨论】:
-
也许您正在寻找 stackSelect 或 stackApply?