You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NetworkX中删除边数少于10的OSM孤立子图?

基于边数过滤NetworkX中的孤立道路子图

完全可行,你可以借助NetworkX的连通分量工具实现这个需求,具体步骤和代码如下:

实现思路

  1. 提取图中所有连通分量(对应你所说的“孤立网络”)
  2. 逐个统计每个分量对应子图的边数
  3. 保留边数≥10的子图,合并得到过滤后的新图

代码示例

假设你已经通过OSMx加载并构建了NetworkX图G:

import networkx as nx

# 获取无向连通分量(若为有向道路网络,根据需求改用nx.weakly_connected_components或nx.strongly_connected_components)
connected_components = nx.connected_components(G)

# 筛选符合边数要求的子图
qualified_subgraphs = []
for component in connected_components:
    subgraph = G.subgraph(component)
    if len(subgraph.edges()) >= 10:
        qualified_subgraphs.append(subgraph)

# 合并所有合格子图,得到最终过滤后的图
filtered_graph = nx.union_all(qualified_subgraphs)

关键注意点

  • 若处理的是有向道路网络(需考虑单行道方向),要根据分析场景选择连通分量判断方式:
    • weakly_connected_components:忽略道路方向,只要节点间有路径连通就视为同一分量
    • strongly_connected_components:严格遵循道路方向,只有双向可达才视为同一分量
  • 你设置的retain_all=True会保留原始图中所有孤立分量,这是后续过滤的必要前提,无需调整
  • 该方法不会修改原始图,而是生成新的过滤后图,方便你对比原始数据和处理结果

内容的提问来源于stack exchange,提问作者Santiago Cardona Urrea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:05:25