如何从多面体中提取邮政编码?
How to extract zip codes from multipolygons?
我有一个包含公用事业公司服务区域的地理数据框。每个地理数据框都有一个多面体来表示公司提供服务的区域。我正在尝试构建一个数据框,其中可以用邮政编码表示这些多面体。
数据框如下所示:
例如,目标是第一家公用事业公司,如果几何重叠 10 个邮政编码,则新数据框将有十行具有相同的公用事业公司名称和 ID。
我以前对单个经度和纬度坐标进行过反向地理编码,但从未使用过多边形。网络上的大部分资源都涉及将邮政编码转换为多边形,而不是相反。
编辑:下方的邮政编码地理数据框
所以基本上您需要做的就是使用 gpd.sjoin。如果您只想要其他数据框中的邮政编码,您只需使用如下内容:
with_zip = gpd.sjoin(utility_gdf,zipcode_gdf[['ZIP_CODE','geometry']],how='left',op='intersects')
进一步参考请参阅:
Merging Data - GeoPandas
编辑:
查看几何图形后,这两个数据集实际上使用了不同的坐标参考系统。让两个 crs 匹配是一个两步过程;
- 转换crs
- 在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)
然后然后您可以重试合并操作。
我有一个包含公用事业公司服务区域的地理数据框。每个地理数据框都有一个多面体来表示公司提供服务的区域。我正在尝试构建一个数据框,其中可以用邮政编码表示这些多面体。
数据框如下所示:
例如,目标是第一家公用事业公司,如果几何重叠 10 个邮政编码,则新数据框将有十行具有相同的公用事业公司名称和 ID。
我以前对单个经度和纬度坐标进行过反向地理编码,但从未使用过多边形。网络上的大部分资源都涉及将邮政编码转换为多边形,而不是相反。
编辑:下方的邮政编码地理数据框
所以基本上您需要做的就是使用 gpd.sjoin。如果您只想要其他数据框中的邮政编码,您只需使用如下内容:
with_zip = gpd.sjoin(utility_gdf,zipcode_gdf[['ZIP_CODE','geometry']],how='left',op='intersects')
进一步参考请参阅: Merging Data - GeoPandas
编辑:
查看几何图形后,这两个数据集实际上使用了不同的坐标参考系统。让两个 crs 匹配是一个两步过程;
- 转换crs
- 在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)
然后然后您可以重试合并操作。