我尝试根据应用于多个图层的单个条件函数生成二进制栅格图层。这是我找到的想要完成的一个例子,但是,这个例子仅适用于3层。如果我想检查超过25层的条件,有没有办法做到这一点,不需要在函数中输入25个参数?
library(raster)
set.seed(0)
r <- raster(ncol=10, nrow=10, xmn=0, xmx=10, ymn=0, ymx=10)
r1 <- setValues(r, round(runif(ncell(r), 1, 2)))
r2 <- setValues(r, round(runif(ncell(r), 1, 2)))
r3 <- setValues(r, round(runif(ncell(r), 1, 2)))
s <- stack(r1, r2, r3)
res1 <- overlay(s, fun =
function(x,y,z) {
ifelse( x == 2 | y == 2 | z ==2, 1, 0)
})
答案 0 :(得分:2)
你可以这样做:
r <- any(s == 2)
或
z <- calc(s, function(x) any(x==2))