【问题标题】:Overlaying a conditional function over a raster brick to produce a single layer in R在栅格砖上覆盖条件函数以在 R 中生成单层
【发布时间】:2017-11-21 01:21:59
【问题描述】:

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

【问题讨论】:

    标签: r raster


    【解决方案1】:

    你可以这样做:

    r <- any(s == 2)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 2013-02-17
      • 1970-01-01
      • 2016-06-30
      • 2013-09-28
      相关资源
      最近更新 更多