在栅格砖上叠加条件函数以在R中生成单个图层

时间:2017-11-21 01:21:59

标签: r raster

我尝试根据应用于多个图层的单个条件函数生成二进制栅格图层。这是我找到的想要完成的一个例子,但是,这个例子仅适用于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) 
              })

1 个答案:

答案 0 :(得分:2)

你可以这样做:

r <- any(s == 2)

z <- calc(s, function(x) any(x==2))