Documentation v0.3.0
Urban Congestion Indices
Speed and congestion indices derived from Google Maps.
Coverage and granularity#
Not all cities have values. Authors' source cities are mapped onto cities and aggregated as appropriate to produce one value per city.
1,086 of 9,849 parent cities · 2019 · 1,086 rows across the package
- City: 1,086 of 9,849 boundary IDs
- ADM1: 0 of 387 boundary IDs
- ADM2: 0 of 3,130 boundary IDs
Row key: id, version
Joining this data#
A Python example using GeoPandas and pandas. Replace the file paths with your local downloads. See boundary levels and join keys.
import geopandas as gpd
import pandas as pd
boundaries = gpd.read_file("parent.gpkg")
observations = pd.read_parquet("ddl-congestion.parquet")
joined = boundaries.merge(
observations, on="id", how="left", validate="one_to_one"
)
print(joined.head())Methodology#
Akbar et al. (2023) estimate city-level speed and congestion fixed effects from a 2019 global sample of source cities, by simulating trips and measuring travel time and speed from Google Maps. Each source city is matched to the cities it falls within; where several contribute to one city, their indices are combined by area weight and the contributors are recorded per row alongside the dispersion of their estimates. Coverage is measured on the union of the contributing polygons.
Schema#
| Name | Type | Units | Description |
|---|---|---|---|
id | string | — | City identifier. |
version | string | — | Boundary version used for the match. |
traffic_year | int64 | — | Year of traffic data measurement. |
congestion_index | float64 | — | Demeaned log of the congestion factor. Negative for most cities because it is demeaned, not because those cities are faster than free flow. Zero is the sample mean city. |
speed_index | float64 | — | Demeaned log city fixed effect for speed. Zero is the sample mean city, not a speed. |
uncongested_speed_index | float64 | — | speed_index + congestion_index, exactly. Measure of the city's speed at free flow, on the same demeaned log scale. |
speed_index_sd | float64 | — | Dispersion of speed_index across contributing source cities. Zero on single-city rows. |
mean_speed_kmh | float64 | km/h | Mean speed averaged from measurements taken throughout the day. |
Notes#
- Data is only available for a subset of cities
- Traffic data comes from measurements taken between June and November 2019 on Google maps from simulated trips
- Several source-city polygons may contribute to one city. Look at
speed_index_sdfor spread across contributing cities - uncongested_speed_index = speed_index + congestion_index, exactly. It is a decomposition, not an independent measurement.
Citation#
When using these data, cite Urban Growth Center and the original source below, where applicable.
Original source
Akbar, P. A., Couture, V., Duranton, G., & Storeygard, A. (2023). The Fast, the Slow, and the Congested: Urban Transportation in Rich and Poor Countries. NBER Working Paper 31642. https://doi.org/10.3386/w31642
Urban Growth Center
Development Data Lab. (2026). Urban Growth Center. https://cities.devdatalab.org/