Documentation v0.3.0

Urban Congestion Indices

Speed and congestion indices derived from Google Maps.

Granularity
City
Format
Parquet
Time resolution
Static
Module version
v0.3.0
License
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License

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

Examples in the City Explorer: Dhaka, Bogotá, Dallas.

Source: Akbar et al. (2023) — The Fast, the Slow, and the Congested: Urban Transportation in Rich and Poor Countries

Joining this data#

A Python example using GeoPandas and pandas. Replace the file paths with your local downloads. See boundary levels and join keys.

Python
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#

NameTypeUnitsDescription
idstring—City identifier.
versionstring—Boundary version used for the match.
traffic_yearint64—Year of traffic data measurement.
congestion_indexfloat64—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_indexfloat64—Demeaned log city fixed effect for speed. Zero is the sample mean city, not a speed.
uncongested_speed_indexfloat64—speed_index + congestion_index, exactly. Measure of the city's speed at free flow, on the same demeaned log scale.
speed_index_sdfloat64—Dispersion of speed_index across contributing source cities. Zero on single-city rows.
mean_speed_kmhfloat64km/hMean 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_sd for 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

Citation
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

View original source

Urban Growth Center

Citation
Development Data Lab. (2026). Urban Growth Center. https://cities.devdatalab.org/