Python的momepy.gdf_to_nx处理含MultiLineString的GeoDataFrame报错如何解决
问题解决方法
报错原因
你遇到的NotImplementedError: Multi-part geometries do not provide a coordinate sequence报错,核心原因是momepy.gdf_to_nx()仅支持单部件LineString类型的几何要素,你的输入GeoDataFrame包含MultiLineString多部件几何,因此无法直接解析。
解决步骤
完全不影响后续图转换流程的前提下,你可以直接通过GeoPandas内置的explode()方法拆分多部件几何:
- 拆分MultiLineString为单个LineString
# 拆分多部件几何,每个拆分后的LineString会继承原要素的所有属性 Streets_exploded = Streets.explode(index_parts=True) # 验证转换结果,输出应为仅包含LineString的数组 print(Streets_exploded.geom_type.unique())
index_parts=True参数会为拆分后的每一段生成多级索引,既可以追溯原要素ID,也不会破坏原有几何的拓扑关联。
- 重新调用momepy方法构建图结构
G = momepy.gdf_to_nx(Streets_exploded, approach="primal")
方案有效性说明
拆分操作不会影响后续图构建的正确性:
- 拆分后的每段LineString的端点坐标和原MultiLineString的节点坐标完全一致,momepy会自动按坐标重合匹配连通节点,拓扑关系和直接使用原几何构建的结果完全相同
- 所有原属性字段都会完整保留,后续网络分析的属性统计不会出现数据丢失
内容的提问来源于stack exchange,提问作者Ofir Zak
相关产品推荐
相关产品推荐

