← Back to map

About / Methodology

How Metro Graph compares subway networks, what every metric means, and where the data comes from.

What this is

Metro Graph compares subway / metro networks across 40+ cities on topology, geographic extent, frequency, centrality, robustness, and population coverage. Most networks are built from the operator's public GTFS feed (filtered to subway / metro route_type codes); planned networks and a few small operating systems come from other sources (see Data sources). Each is then analysed as a graph.

This is the short version of the NSA Hub network analysis — what every metric means in plain English and how to read the comparison chart. Each metric's full definition and source appear in its section below.

Data sources

  • GTFS feeds, one per city (Source link in the sidebar opens the operator's open-data portal).
  • WorldPop 2020 1km population-density grid sampled via ArcGIS.
  • Carto Positron basemap.
  • JTMT shapefiles for the planned Jerusalem metro (vendored under data/jtmt/). JLM population uses the same WorldPop 2020 method as the peer cities.
  • National MT GeoPackage (vendored under data/mt/) for the planned Tel Aviv / Haifa metro lines.
  • OpenStreetMap station coordinates for a few small operating metros with no usable public GTFS (Lausanne, Thessaloniki, Catania).

Network comparison tab — how to read it

The second view in the app is a multi-city scatter explorer. Every chart maps four dimensions onto one figure:

  • X axis — any metric.
  • Y axis — any metric.
  • Bubble size — any metric, scaled linearly.
  • Bubble color — either the μ-based topology family (green tree → red densely meshed) or any metric on a continuous ramp.

Presets are pre-wired combinations the explorer opens with — pick "Network density vs walk-shed coverage" for a quick read on whether the metro hits where people live. Custom mode opens the four dropdowns for any combination. Bar mode ranks every city on one metric.

Limitations

  • Schedule-time, not real-time. Frequency reflects the GTFS schedule on the configured service date. Planned networks and the few OSM-built small metros have no schedule, so their frequency is synthesised from a nominal headway.
  • "Subway" is fuzzy. Each city declares its route_types — Berlin is U-Bahn only here; LA includes light rail because that's the bulk of the system; Boston excludes the Green Line (light rail).
  • Coverage counts 800 m walking distance only. Hilly cities (Jerusalem, Lisbon) inflate real walk times.
  • JLM frequency is synthetic — 5-min headway × 18 h service day, not from an observed timetable.
  • No ridership data — every metric here is structural or population-based, none use boardings.

Size and extent

  • Stations — count after merging duplicate platforms within 500 m of each other on the same line.
  • Lines — distinct logical lines (e.g. M1A and M1B counted separately when they appear as separate GTFS routes).
  • Metro network km — metro alignment length, counted once across graph edges using real GTFS/JTMT shape geometry where available; this is not route-km or engineering track-km.
  • Avg station spacing — metro network km ÷ (stations − 1). 0.7–1.0 km is European-urban convention; ≥ 2 km is suburban (BART, Atlanta).
  • Interchanges — stations served by ≥ 2 distinct lines.
  • Articulation points — stations whose removal disconnects the graph. High % = tree-like, fragile network.

Topology & cycles

  • Cyclomatic μ — number of independent loops in the network. μ = 0 means tree (no redundancy); μ ≥ 1 means at least one closed route exists.
  • α index — cycle saturation (0–1).
  • β index — edges per node.

Derrible & Kennedy 2010 indicators

  • Coverage σ (eq. 9) = 0.25 · stations / radius². Station density in the service circle. Topology-only — does not see whether people live near stations.
  • Max transfers d — worst-case number of line transfers between any pair of stations (the Dong & Chen 2005 transit-line-network model). d = 1 means one transfer always suffices.
  • Directness τ (eq. 16) = n_lines / d. Higher τ = the network exposes many lines reachable within the same transfer budget; lower τ = many lines but they require lots of transfers to traverse. Trees have d = 0 so τ is undefined and reported as 0.
  • Connectivity ρ (eq. 14) = (Σ(lines_at_transfer − 1) − overlap_edges) / transfer_stations. Higher ρ = transfers usually link three or more lines (rich interchanges); ρ near 0 = transfers are mostly two-line.
  • Boardings per capita — annual unlinked passenger trips (UPT) divided by service-area population. Used in the original Derrible & Kennedy 2009 paper as the outcome variable σ / τ / ρ should predict (Figures 3-5). Sourced from each operator's published ridership (Wikipedia) for the 28 operating cities; for JLM and JLM-M3 it is the JTMT 2050 FORECAST (120 M / 150 M pax/yr) — not a measurement.

Structure & paths

  • Avg shortest path — average number of stops between two stations.
  • Diameter — longest shortest path.
  • Roth core size % — share of stations left after the network's branches are pruned away: repeatedly strip dead-end stations until none remain, and what survives is the loop-bearing core. High = most of the network sits on the core; low = the system is mostly radial branches.

Per-station centrality

  • Betweenness — fraction of shortest paths through this station. High = the network's bottleneck.
  • Closeness — average graph-distance to all other stations. High = central.
  • Eccentricity — distance to the farthest station, computed within the station's own connected component.
  • Criticality — the share of the network's global efficiency lost when this station is removed (a relative drop, so values compare across cities). Clamped at zero in the rare case where removing a peripheral station nudges efficiency up.

Robustness

  • Robustness r_T — area under the surviving-component curve during an adaptive targeted attack: the highest-degree station is removed, degrees are recomputed on what remains, and the new highest-degree station goes next, per Schneider et al. 2011. Bounded roughly 0–0.5; higher = the network keeps more of itself connected under worst-case station loss.

Population & reach

  • Population in area — total population inside the service circle (WorldPop 2020 by default; polygon overrides are supported for scenario tests). This is the figure the coverage maths uses.
  • City & metropolitan population — curated context figures (municipality and metro-area population) shown in the stats card and comparison table. These are not the WorldPop "Population in area" above and are not used in any coverage or per-capita metric.
  • Walk-shed coverage % — share of that population within 800 m of any station. The single best "is this useful for the city" indicator.
  • Network density — metro network km / service-area km². How packed the metro is within its catchment.
  • LRT network km / LRT-to-metro ratio — dissolved tram / light-rail network km in the same service area, divided by metro network km. n/a means no usable tram geometry in the selected feed.
  • Stations / metro network km per million — per-capita reach.

Map color modes — quick reference

Stations

  • Lines served — how many distinct lines stop here. ≥ 2 = interchange.
  • Degree / Betweenness / Closeness / Eccentricity / Criticality — colour scales are continuous viridis-style; legend shows min↔max.
  • Articulation points — single-cut failure points highlighted.

Edges

  • Line color — operator-published line colour.
  • Edge betweenness — fraction of shortest paths through this segment.
  • Peak tph — peak-hour trains per hour.