点周围的衰减缓冲区
Decaying buffer around points
我有一个栅格,代表一系列斑驳的栖息地。每个栖息地块的值为 1。栅格中的所有其他像元均设置为 NA。我想像使用 raster::buffer
一样在点周围应用缓冲区,但需要一些额外的功能。
当您离开补丁时,我希望缓冲 'decay'。因此,如果 patch=1 并且缓冲区设置为 3 个 mapunits,我希望缓冲区在 mapunits=3 时衰减到零。如果两个补丁靠得足够近以至于它们的缓冲区重叠,我将需要应用一些函数来确定重叠单元格中的值(例如总和、平均值、第一个、最后一个等)。
我在下面包含了一些说明预期结果的代码。由于我在网上找不到任何解决方案(搜索 "decreasing buffers" 或 "decaying buffer"),我无法提供更多代码来帮助,抱歉。
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)
我认为您正在寻找 distance
和 buffer
的组合,如下所示:
示例数据
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)
我有一个栅格,代表一系列斑驳的栖息地。每个栖息地块的值为 1。栅格中的所有其他像元均设置为 NA。我想像使用 raster::buffer
一样在点周围应用缓冲区,但需要一些额外的功能。
当您离开补丁时,我希望缓冲 'decay'。因此,如果 patch=1 并且缓冲区设置为 3 个 mapunits,我希望缓冲区在 mapunits=3 时衰减到零。如果两个补丁靠得足够近以至于它们的缓冲区重叠,我将需要应用一些函数来确定重叠单元格中的值(例如总和、平均值、第一个、最后一个等)。
我在下面包含了一些说明预期结果的代码。由于我在网上找不到任何解决方案(搜索 "decreasing buffers" 或 "decaying buffer"),我无法提供更多代码来帮助,抱歉。
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)
我认为您正在寻找 distance
和 buffer
的组合,如下所示:
示例数据
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)