如何从多个多边形中提取邮政编码?

2024-05-19 23:03:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

数据帧如下所示:enter image description here

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

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

编辑:邮政编码geodataframe位于enter image description here


Tags: 数据端口名称框架id区域目标公司
1条回答
网友
1楼 · 发布于 2024-05-19 23:03:07

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

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

有关更多参考,请参阅: Merging Data - GeoPandas

编辑:

在查看几何图形之后,这两个数据集实际上使用了不同的坐标参考系。使两个CR匹配是一个两步过程

  1. 转换crs
  2. 在geoseries上设置crs类型

但首先,您需要了解每个数据集当前使用的crs。 要找到每个gdf使用的crs,只需键入

gdf.geometry.crs

如果其中任何一个数据集都有一个“非类型”的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)

然后,您可以重试合并操作

相关问题 更多 >