transit accessibility · research demos

How far can a city take you?

Interactive maps of public-transport accessibility for three European cities — Torino, Milano, and Paris — computed from open GTFS schedules: each city's transit network is rebuilt from its timetables, travel times are routed over a hexagonal grid (with OSRM walking legs), and every cell is colored by how well transit serves it. Methodology from my first-author papers at hEART 2022 and TRB 2023 — including equity metrics comparing the three cities below.

Map typesP2P: average travel time from each cell to the whole city · P2POI: travel time to points of interest · Essential services: how many services each cell reaches in 60 minutes, recomputed 2026 from current GTFS (the layer behind the equity numbers below). P2P and P2POI carry the original research values, re-rendered; yellow always means best served. Most maps offer 3:00 / 8:00 / 22:00 departure layers.

Torino

P2P
city-wide travel time
P2POI
time to amenities
Essential services
reachable in 60 min · 2026

Milano

P2P
city-wide travel time
P2POI
time to amenities
Essential services
reachable in 60 min · 2026

Paris

P2P
city-wide travel time
P2POI
time to amenities
Essential services
reachable in 60 min · 2026

Equity

How evenly is that accessibility spread over people? Two population-weighted views, using the inequality-index family of my hEART 2022 and TRB 2023 papers. Whole-city reach and time to amenities: each hex's average travel time t (to the entire city, or to the points of interest — recovered from the maps above, 8:00 layer) as a velocity-like accessibility 1/t. Essential services: how many schools, universities, hospitals, clinics, doctors, pharmacies, supermarkets and markets (OpenStreetMap) each hex reaches by transit within 60 minutes at 8:00 — a cumulative-opportunities measure recomputed from current GTFS timetables with the same limits as the original research (15-min walk to stops, 5-min transfers), drawn hex by hex in the Essential-services maps above. 0 means perfectly equal on every index; the Palma ratio is the accessibility share of the best-served 10% of people over the worst-served 40% (0.25 at perfect equality).

CityViewGiniTheilAtkinson (ε=0.5)PalmaBottom-50% share
TorinoP2P — whole-city reach0.0870.0120.0060.3643.7%
MilanoP2P — whole-city reach0.1070.0180.0090.4042.4%
ParisP2P — whole-city reach0.0810.0100.0050.3644.2%
TorinoP2POI — time to amenities0.3440.2140.0971.4427.3%
MilanoP2POI — time to amenities0.4140.2750.1381.7819.7%
ParisP2POI — time to amenities0.2340.0880.0420.7733.5%
TorinoEssential services within 60 min0.2590.1530.0970.7830.9%
MilanoEssential services within 60 min0.2870.2000.1340.9028.9%
ParisEssential services within 60 min0.2340.1180.0740.6733.2%
P2P — whole-city reach
Torino · Gini 0.087Milano · Gini 0.107Paris · Gini 0.081cumulative population share (least accessible first)cumulative accessibility share
P2POI — time to amenities
Torino · Gini 0.344Milano · Gini 0.414Paris · Gini 0.234cumulative population share (least accessible first)cumulative accessibility share
Essential services within 60 min
Torino · Gini 0.259Milano · Gini 0.287Paris · Gini 0.234cumulative population share (least accessible first)cumulative accessibility share

Read a Lorenz curve as: the bottom x% of people (ranked by accessibility) hold y% of the city's total accessibility — the farther below the diagonal, the less equal. Near-equality on whole-city reach is expected: an average over the entire city is dominated by geography every resident shares, and the source exports cap travel times at 120 minutes. Caveats: population weights come from the original research exports (one assumed service day per city); unreachable cells were dropped at export time; travel times are floored at one minute before inversion (a few cells contain the amenity itself and export ~0 minutes); the essential-services view walks straight-line distances scaled by 1.3 rather than routed streets, and uses 2026 timetables while the maps above show the original research runs.