Documentation v0.3.0

DDL Global Urban Boundaries

City polygons with stable identifiers, published globally.

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

Coverage and granularity#

Every parent city with a population of at least 50,000.

9,849 of 9,849 parent cities · static · 13,366 rows across the package

  • City: 9,849 of 9,849 boundary IDs
  • ADM1: 387 of 387 boundary IDs
  • ADM2: 3,130 of 3,130 boundary IDs

Row key: id

Examples in the Boundary Explorer: Guangzhou, Dallas, Athens.

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

# Match the boundary file to the module's geographic level.
level = "PARENT"
boundaries = gpd.read_file("parent.gpkg")
observations = pd.read_parquet("ddl-population-historical.parquet")
observations = observations.loc[observations["boundary_level"].eq(level)]

joined = boundaries.merge(
    observations, on="id", how="left", validate="one_to_many"
)
print(joined.head())

Before you use this#

  • area is computed on the geography type, in square metres, not in the layer's own projected units.
  • Hong Kong publishes under CHN, because the boundaries carry it that way.

Schema#

NameTypeUnitsDescription
idstring—City identifier. Stable across releases.
namestring—City name.
populationint64peopleEstimated population of the city.
alpha3string—ISO 3166-1 alpha-3 country code.
areafloat64m²Geometry area in square meters.
geometrygeometry—Urban boundary polygon. Coordinate system: EPSG:4326.

Notes#

  • The parent city is the reference geography for the city profile. Its identifier connects the published tables.
  • ADM1 and ADM2 files contain released administrative intersections of qualifying parent polygons. Published splits may not cover the whole parent; do not assume their measures sum to parent totals. Use the split identifier for split-level measures and parent_id to relate a split to its parent.
  • GHSL and GADM map overlays provide comparison geographies. They do not change the boundaries used to calculate the profile measures.

Citation#

When using these data, cite Urban Growth Center and the original source below, where applicable.

Urban Growth Center

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

Further reading#

Methodology paper Coming soon