【问题标题】:overlay rasters at a given value以给定值覆盖栅格
【发布时间】:2017-07-10 09:59:43
【问题描述】:

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

【问题讨论】:

  • 所以如果我理解正确,值0 fo raster1 你想添加raster2 的值?
  • 是的,没错。

标签: r overlay gis raster r-raster


【解决方案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)

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

【讨论】:

  • 太棒了。非常感谢。
  • @DfFinch 注意:但是,您应该只将它用于较小的栅格。很高兴我能帮上忙。如果您喜欢我的回答,我将不胜感激。
猜你喜欢
  • 2021-01-25
  • 2020-05-06
  • 2018-09-17
  • 2020-04-27
  • 2013-07-06
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多