我有一个包含温度值的光栅文件和一个坐标点列表作为我想要的缓冲区的中心,颜色为红色,如图所示:
如何在包含符合条件Tmax= Tcentroid+6ºC
的所有相邻单元格的质心周围提取缓冲区?
此外,我想重叠缓冲区,如果它们相交,将它们合并为一个缓冲区。
答案 0 :(得分:0)
这是一种获得它的方法。通过gdistance
包
示例数据:
library(raster)
r <- raster(ncol=36, nrow=18)
r[] <- 1:ncell(r)
xy <- cbind(-55, seq(-25, 20, by=20))
算法(注意我使用的是默认&#34; rook&#34;邻接规则):
start <- cellFromXY(r, xy)
svalues <- extract(r, xy)
result <- list()
for (i in 1:nrow(xy)) {
value <- svalues[i]
cells <- start[i]
allcells <- cells
while(TRUE) {
adj <- adjacent(r, cells, pairs=FALSE)
asel <- which(abs(r[adj] - value) < 5)
if (length(asel) == 0) break
cells <- adj[asel]
cells <- cells[!cells %in% allcells]
allcells <- c(allcells, cells)
}
result[[i]] <- allcells
}
检查结果:
p <- xyFromCell(r, unlist(result))
plot(r)
points(xy, pch=20)
points(p, pch='+')