制作相邻多边形的列表,触摸R中每个多边形的相同边界

时间:2017-07-04 22:32:27

标签: r geospatial spatial nearest-neighbor

我有一个形状文件,其中包含不同地区的地理地图。我已经将它加载到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)

并且它也有效,但是我想找到为每个地区接触边界的邻近地区,这似乎只是让最近的邻居不依赖于他们是否接触边界。我还想为每个地区名称列出这些邻近的地区名称。

我遇到了这个链接:http://grokbase.com/t/r/r-sig-geo/072fxj7bhr/how-to-find-neighbor-polygons-and-analysis-of-their-attributes

在这个链接中,一个人要求的东西与我想要的东西相似,所以我尝试了与她共享的代码,看看它是否适用于我,但我只有这么远:

   nbs <- poly2nb(as(shapefile, "SpatialPolygons"))
   wts <- nb2listw(nbs, style = "W")

我不确定在此之后怎么做/怎么做,我甚至不确定它是否会引导我到我想要的东西。在网站上,他们使用滞后功能。我试过了:

   shapefile$W_var <-lag(wts, shapefile$var)

但它没有用,并说,“错误:n必须是非负整数标量,而不是长度为0的NULL”。我怀疑是因为我的shapefile中没有名为“var”的列,但我不确定他们试图引用哪种类型的列。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

要获取多边形数字列表是邻居,您需要使用:

list.nb <- gTouches(shapefile, byid = TRUE, returnDense = FALSE)

数字是shapefile中多边形的位置。因此,您可以使用简单的向量提取来获取名称:shapefile$Territory[number]。在您的情况下,您需要将其应用于完整列表:

list.Territories <- lapply(list.nb, function(x) shapefile$Territory[x])