在给定值处叠加栅格

overlay rasters at a given value

我对使用 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)
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)

这样就可以了。该函数采用两个栅格和一个值,该值将用于确定受叠加(加法)影响的像元。