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