首页 > 解决方案 > 在R中的栅格中找到一个点的8个邻居?

问题描述

如果我有这样的栅格:

 library(raster)
 r1 <- raster(ncol=10, nrow=10)
 r1[] <- runif(ncell(r1))
 r1[] = 1:ncell(r1)
 x=c(-6)            
 y=c(-67)

我可以提取与这一点相对应的值:

values = extract(r1, SpatialPoints(cbind(y,x),CRS("+init=EPSG:4326")))

但是,这会提取最接近该点坐标的像素。我需要提取最接近的 9 个像素(提取像素的 8 个邻居)到这一点。任何想法?

标签: rraster

解决方案


您可以使用该adjacent方法。

示例数据

library(raster)
r <- raster(ncol=10, nrow=10)
values(r) = 1:ncell(r)
xy <- cbind(-67, -6) 

解决方案

cells <- cellFromXY(r, xy)
adj <- adjacent(r, cells, 8, include=TRUE)

r[adj[,2]]
# [1] 54 43 53 63 45 55 65 44 64

这将返回单元格的值(因为include=TRUE)及其 8 个邻居


推荐阅读