【问题标题】:Neighboring Zipcodes from State Polygons州多边形的相邻邮政编码
【发布时间】:2021-04-13 13:08:08
【问题描述】:

第一次在 SO 上发帖

我有一个 shapefile,其中包含每个邮政编码的几何图形以及州名称。我想弄清楚哪些邮政编码位于州边界上。 我想实现这一点的方法是通过组合每个州的所有邮政编码并导致一个州的几何图形,然后找到每个州的相邻邮政编码。

我使用以下方式将邮政编码组合成州:

state_shape <- shapefile %>% group_by(State) %>% summarise(geometry = sf::st_union(geometry))

但是当我尝试使用poly2nb查找相邻的邮政编码时

state_nb <- poly2nb(st_geometry(state_shape))

它给了我一个错误

Error in poly2nb(st_geometry(state_shape)) : Polygon geometries required

我知道要找到边界邮政编码,我必须在 poly2nb 中传递邮政编码几何图形,但错误仍然存​​在。

任何帮助都将受到高度赞赏,也非常欢迎任何其他解决此问题的方法。

【问题讨论】:

  • 想象一下,您正试图向某人提供帮助。如果您可以运行他们的代码会有所帮助吗?我想我的意思是,如果您提供您正在使用的数据和库,以便有人可以运行您的代码并对其进行调试,您可能会获得更多帮助。
  • 数据基本上是一个.shp文件。第一列是邮政编码,第二列是邮政编码所属州的名称,第三列是邮政编码的几何形状。我使用的库是 sf、dplyr、rgeos 和 geosphere
  • 因此,如果没有可重现的示例,很难知道。但是state_shape <- shapefile %>% group_by(State) %>% summarise(geometry = sf::st_union(geometry)) 在我看来就像您在按州进行总结。所以,我想你没有县级信息。

标签: r spatial sf sp spdep


【解决方案1】:

考虑这个示例,它建立在随 {sf} 包一起分发的广泛可用的北卡罗来纳州 shapefile 之上。

这个例子的作用是:

  • 首先解散县,然后将生成的多面体转换为多线串,从而创建北卡罗来纳州的边界线

  • 在县和边界线上运行sf::st_touches(),并将稀疏设置为false;结果是一个逻辑向量,可用于对原始 shapefile 进行子集化(过滤掉与 NC 边界共享边界的县)

  • 使用 {ggplot2} 以图形格式显示结果;接壤的县是蓝色的,其余的只是空白

      library(sf)
      library(dplyr)
      library(ggplot2)
    
      # all NC counties (from shapefile distributed with {sf})
      shape <- st_read(system.file("shape/nc.shp", package="sf")) 
    
      # border, via dplyr::summarise() & cast as a linestring
      border <- shape %>% 
        summarise() %>% 
        st_cast("MULTILINESTRING")
    
      # logical vector of length nrow(shape)
      neighbours <- sf::st_touches(shape,
                                   border,
                                   sparse = F)
      # report results
      ggplot() +
        geom_sf(data = shape[neighbours, ], fill = "blue") + # border counties
        geom_sf(data = shape, fill = NA, color = "grey45") # all counties for context
    

【讨论】:

    猜你喜欢
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2016-05-16
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多