使用复杂的ifelse函数叠加多个Raster图层

时间:2016-05-16 21:13:56

标签: r if-statement overlay raster

我想在R中使用复杂的ifelse函数执行3个光栅文件的叠加(包Raster):

Raster <- RasterSPI

fun1 <- function(x,y,z) {

    if (is.na(x[]) || is.na(y[]) || is.na(z[])){
      Raster[] = NA
    } else if (x[] > 0) {
      Raster[] = 1 
    } else if (y[] > 0) {
      Raster = 2
    } else if ((x[] > 0 || y[] > 0) && z[] > 0){
      Raster[] = 3 
    } else {
      Raster = 0 
    }
}

Raster <- stack(RasterSPI, RasterICE, RasterNDVI)
Raster <- overlay(RasterSPI, RasterICE, RasterNDVI, 
                    fun = function(x,y,z){
                            fun1(RasterSPI[], RasterICE[], RasterNDVI[])
                  })

我需要关闭R这需要很长时间。是否有可能在R中执行类似的叠加效果? (覆盖另一个包的功能,重新构造ifelse()函数,......?)

0 个答案:

没有答案