【问题标题】:How to extract zip codes from multipolygons?如何从多面体中提取邮政编码?
【发布时间】:2021-03-10 17:50:29
【问题描述】:

我有一个包含公用事业公司服务区的地理数据框。每个地理数据框都有一个多面体来表示公司提供服务的区域。我正在尝试构建一个数据框,其中这些多面体可以用邮政编码表示。

数据框如下所示:

例如,目标是第一家公用事业公司,如果几何与 10 个邮政编码重叠,则新数据框将有十行具有相同公用事业公司名称和 ID。

我以前对单个经度和纬度坐标进行了反向地理编码,但从未使用过多边形。网络上的大多数资源都涉及将邮政编码转换为多边形,而不是相反。

编辑:下面的邮政编码地理数据框

【问题讨论】:

  • 查找邮政编码多边形的开源数据集。我很快就找到了适合我所在地区的。然后,您可以在服务区和邮政编码之间进行空间连接。如果您找到这样的数据集,请发布您当前 gdf ​​的示例和邮政编码之一,我会帮助您。
  • 非常感谢。我刚刚更新了帖子以包含来自 esri 的邮政编码 .gdb。

标签: python polygon shapely


【解决方案1】:

所以基本上你需要做的就是使用 gpd.sjoin。如果您只想要其他数据框中的邮政编码,则只需使用以下内容:

with_zip = gpd.sjoin(utility_gdf,zipcode_gdf[['ZIP_CODE','geometry']],how='left',op='intersects')

请参阅以获取更多参考: Merging Data - GeoPandas

编辑:

查看几何图形后,这两个数据集实际上使用不同的坐标参考系统。让两个 crs 匹配是一个 2 步过程;

  1. 改造crs
  2. 在 geoseries 上设置 crs 类型

但首先,您需要弄清楚每个数据集当前使用的是什么 crs。 要查找每个 gdf ​​使用的 crs,只需键入

gdf.geometry.crs

如果其中任何一个数据集有一个“NoneType”crs,您将不得不进行一些谷歌搜索以找出它实际使用的 crs。

一旦你弄清楚你有哪些 crs,然后你就可以转换它。 这是关于转换crs的一个很好的线程: GIS stack exchange thread

然后,将实际几何数据点转换为新的 crs 后,您需要设置 geoseries 的适当 crs 类型。例如,如果您将 gdf1.geometry 从“EPSG:2966”转换为“EPSG:4236”,您将调用:

gdf1.set_crs("EPSG:4236",inplace=True,allow_override=True)

然后然后你可以重试合并操作。

【讨论】:

  • 再次感谢您的跟进。我运行了完全相同的代码并遇到了这个错误::1: UserWarning: CRS mismatch between the CRS of the CRS and the CRS of the right geometry。使用to_crs() 重新投影其中一个输入几何图形以匹配另一个的 CRS。左 CRS:EPSG:3857 右 CRS:EPSG:4326
  • @NateLeMay,刚刚编辑了原件并添加了一些附加信息。
  • @NateLeMay 拉德!我很高兴它起作用了,我担心有效地传达程序。
  • 效果很好!我没有意识到 python 的地理空间功能。迫不及待想深入了解它
猜你喜欢
  • 2021-02-24
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多