如何在Geopandas中按ADM分组执行sjoin_nearest近邻空间连接?
按行政区域分组的空间最近邻左连接解决方案
需求说明:
拥有两个基于多边形Shapefile生成的GeoDataFrame:df1和df2,二者均包含共同属性ADM(标识要素质心所属的行政区域)。需要将df2的属性左连接到df1,匹配规则限定为:仅考虑与df1要素处于同一ADM区域、且直线距离在500米以内的最近df2要素。现有工具的问题:
- Geopandas内置的
sjoin_nearest()函数不支持按属性分组执行,直接调用会出现跨ADM区域错误匹配的情况; - ArcGIS Pro的Near By Group工具虽能实现分组匹配逻辑,但处理大规模数据集时耗时过长,且容易出现运行报错。
- Geopandas内置的
高效可行方案:
采用@rob-raymond提出的分片处理方案,该方案要求环境满足:Geopandas版本≥0.11,Python版本为3.10或3.11。实际测试中,该方案处理全国级规模的数据集仅需数分钟,效率远超传统工具。
内容的提问来源于stack exchange,提问作者GraceMakesMaps
相关产品推荐
相关产品推荐

