点周围的衰减缓冲区

时间:2019-05-09 11:02:58

标签: r raster r-raster

我有一个代表一系列斑驳栖息地的栅格。每个栖息地斑块的值为1。栅格中的所有其他像元均设置为NA。我想像使用raster::buffer一样在点周围应用缓冲区,但需要一些额外的功能。

当您离开补丁时,我希望缓冲区“衰减”。因此,如果patch = 1且缓冲区设置为3个mapunit,我希望缓冲区在mapunits = 3之前衰减到零。如果两个补丁之间的距离足够近,以致它们的缓冲区重叠,那么我需要应用一些函数来确定重叠单元格中的值(例如,求和,均值,第一个,最后一个等)。

我在下面提供了一些代码,这些代码说明了预期的结果。由于无法在线找到任何解决方案(搜索“递减缓冲区”或“递减缓冲区”),对不起,我无法提供更多代码来帮助您。

focal = raster(nrow=5, ncol=5, crs=NA, xmn=0, xmx=5, ymn=0, ymx=5)
focal[] = c(0.33,NA,NA,NA,0.33,
            0.66,0.33,NA,0.33,0.66,
            1,0.66,0.33,0.66,1,
            0.66,0.33,NA,0.33,0.66,
            0.33,NA,NA,NA,0.33)
plot(focal)

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找distancebuffer的组合,如下所示:

示例数据

library(raster)
r <- raster(nrow=10, ncol=10, crs="+proj=utm +zone=1", xmn=0, xmx=5, ymn=0, ymx=5)
r[c(39,52)] <- 1

解决方案

d <- distance(r)
b <- buffer(r, 1.5)
m <- mask(d, b)

显示

plot(m)
text(m, digits=1)

buffer and distance