以给定值覆盖栅格

时间:2017-07-10 09:59:43

标签: r overlay gis raster r-raster

我使用R并使用GIS数据相对较新。

我正在尝试创建一个覆盖两个Raster图层的函数,仅当其中一个栅格(在这种情况下为raster1)处于某个值时(在本例中为0)。我已经尝试了很多选项,但它们似乎没有用。我的最后一次尝试在下面提供,它运行但输出只是说NULL并且它没有绘制。

library(raster)

raster1 <- raster(ncols=10,nrows=10) 
raster2 <- raster(ncols=10,nrows=10) 

values(raster1) <- round(runif(ncell(raster1)))
values(raster2) <- round(runif(ncell(raster2)))

plot(raster1)
plot(raster2)

overlay_zero <- function (x, y) {
if (isTRUE(x == 0)) {
  overlay(x, y, fun=function(x,y) {return(x+y)})}
} 


z <- overlay_zero(raster1, raster2)
z
plot(z)

1 个答案:

答案 0 :(得分:1)

overlay_ras <- function(ras1,ras2,value=0){

  result              <- ras1
  result[ras1==value] <- ras1[ras1==value] + ras2[ras1==value]
  return(result)

}

overlaid <- overlay_ras(raster1,raster2,0)

这样就可以了。该函数需要两个栅格和一个值,用于确定受叠加影响的单元格(添加)。