Connectivity diagnostics¶
Connectivity helpers inspect components and help remove disconnected fragments before routing.
# To install IduEdu in a clean environment:
# !pip install IduEdu
OSM_ID = 1114252
from iduedu import get_drive_graph, get_walk_graph
G_walk_all = get_walk_graph(osm_id=OSM_ID, simplify=True, keep_largest_subgraph=False)
G_drive_all = get_drive_graph(osm_id=OSM_ID, simplify=True, keep_largest_subgraph=False)
Undirected connected components¶
Use connected_components for undirected graphs such as walking networks.
from iduedu import connected_components, largest_connected_component, number_connected_components
components = connected_components(G_walk_all)
print("component count:", number_connected_components(G_walk_all))
print("largest component size:", len(largest_connected_component(G_walk_all)))
print("top component sizes:", [len(component) for component in components[:5]])
component count: 110
largest component size: 19588
top component sizes: [19588, 63, 18, 7, 6]
Directed graph connectivity¶
For directed graphs, weak components ignore edge direction and strong components require reachability in both directions.
from iduedu import (
largest_component,
largest_strongly_connected_component,
largest_weakly_connected_component,
number_strongly_connected_components,
number_weakly_connected_components,
)
print("weak components:", number_weakly_connected_components(G_drive_all))
print("strong components:", number_strongly_connected_components(G_drive_all))
print("largest weak:", len(largest_weakly_connected_component(G_drive_all)))
print("largest strong:", len(largest_strongly_connected_component(G_drive_all)))
print("largest auto:", len(largest_component(G_drive_all)))
weak components: 1
strong components: 39
largest weak: 745
largest strong: 707
largest auto: 707
Keep the largest component¶
Builders can do this automatically with keep_largest_subgraph=True. The same operation is available as a method.
G_drive_main = G_drive_all.keep_largest_connected_component(mode="auto")
print("before:", len(G_drive_all.nodes_gdf), "nodes,", len(G_drive_all.edges_gdf), "edges")
print("after :", len(G_drive_main.nodes_gdf), "nodes,", len(G_drive_main.edges_gdf), "edges")
2026-07-07 15:17:36.416 | WARNING | Removing 38 nodes outside the largest strongly connected component. Retaining 707 of 745 nodes.
before: 745 nodes, 1243 edges
after : 707 nodes, 1188 edges