我有一個包含溫度值和座標點作爲我所需緩衝器的中心的一個列表中的光柵文件給定的條件內的值,在圖中以紅色着色像:光柵緩衝帶中的R
如何從包含匹配條件Tmax= Tcentroid+6ºC
的所有鄰居單元的質心周圍提取緩衝區? 另外我想重疊緩衝區,如果它們相交,合併成一個單一的。
我有一個包含溫度值和座標點作爲我所需緩衝器的中心的一個列表中的光柵文件給定的條件內的值,在圖中以紅色着色像:光柵緩衝帶中的R
如何從包含匹配條件Tmax= Tcentroid+6ºC
的所有鄰居單元的質心周圍提取緩衝區? 另外我想重疊緩衝區,如果它們相交,合併成一個單一的。
這是一個獲得該方法的方法。有可能是一個更有效的方式通過函數在gdistance
包來完成
示例數據:
library(raster)
r <- raster(ncol=36, nrow=18)
r[] <- 1:ncell(r)
xy <- cbind(-55, seq(-25, 20, by=20))
算法(請注意,我使用的是默認的「車」鄰接規則):
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='+')
你想一個特定的卜內獲取值可以匹配條件(獲取緩衝區中的所有值,刪除那些不匹配並刪除空間重複項的值);或者應該由條件決定緩衝區大小(是緩衝區的條件;這看起來有點複雜)?另外,請設置一個可重複的例子。 – RobertH
我希望緩衝區內的值符合條件。在附接在圖像I嘗試在緩衝器內的細胞是那些小於或等於6例示的情況下 [1]:http://i.stack.imgur.com/71PAs.png – ADM