我有一个形状文件,其中包含不同地区的地理地图。我已经将它加载到R.它的CRS是NAD83,椭圆是GRS80。
我正在尝试列出地图中每个地区触及边界的所有地区。
当我输入head(shapefile)时,它会显示如下内容:
Territory Year
0 ACE 1803
1 FAS 1814
2 CAT 1865
3 TAT 1834
4 GAL 1833
5 UBE 1877
我已经尝试过了:
gTouches(shapefile, byid = TRUE)
并且它有效,但它不是我想要的格式。我也试过
shapefile.knn <- knearneigh(coordinates(shapefile), k=7)
plot(knn2nb(shapefile.knn), coordinates(shapefile), col="red", add=TRUE)
并且它也有效,但是我想找到为每个地区接触边界的邻近地区,这似乎只是让最近的邻居不依赖于他们是否接触边界。我还想为每个地区名称列出这些邻近的地区名称。
在这个链接中,一个人要求的东西与我想要的东西相似,所以我尝试了与她共享的代码,看看它是否适用于我,但我只有这么远:
nbs <- poly2nb(as(shapefile, "SpatialPolygons"))
wts <- nb2listw(nbs, style = "W")
我不确定在此之后怎么做/怎么做,我甚至不确定它是否会引导我到我想要的东西。在网站上,他们使用滞后功能。我试过了:
shapefile$W_var <-lag(wts, shapefile$var)
但它没有用,并说,“错误:n
必须是非负整数标量,而不是长度为0的NULL”。我怀疑是因为我的shapefile中没有名为“var”的列,但我不确定他们试图引用哪种类型的列。
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
要获取多边形数字列表是邻居,您需要使用:
list.nb <- gTouches(shapefile, byid = TRUE, returnDense = FALSE)
数字是shapefile中多边形的位置。因此,您可以使用简单的向量提取来获取名称:shapefile$Territory[number]
。在您的情况下,您需要将其应用于完整列表:
list.Territories <- lapply(list.nb, function(x) shapefile$Territory[x])