uMORPH is a global dataset of 7 urban canopy parameters (UCPs) comprising 24 gridded layers at 100 m resolution, derived from ~2.38 billion building footprints with heights. It covers 98.4% of cities above 50,000 population and 94.5% of global population.
Jain, M., Ortiz, L. E., & McPhearson, T. (2026). uMORPH: Global LOD1 buildings and 100-meter urban canopy parameters dataset. (forthcoming)
Global distribution of 2°×2° tiles in uMORPH v1.0, color-coded by continent. Red points denote city centres with population > 50,000.
Area-weighted mean building height (H_aw) at 100 m resolution for 30 representative cities spanning all continents.
uMORPH is distributed as three complementary products:
| Product | Format | Coverage | Description |
|---|---|---|---|
| LOD1 Building Morphology | GeoParquet | Per 2°×2° tile, organised by continent | Building footprints + heights (2.5D); ~2.38B polygons |
| UCP Rasters | Cloud-Optimized GeoTIFF (COG) | Global, 1 file per UCP layer | 24 layers at 100 m, WGS84 |
| WRF Geogrid Binaries | Binary + index | Continental ZIP archives | WRF-ready, compatible with SLUCM, BEP, BEP+BEM |
Full dataset available at: [data portal link — pending]
| # | Variable | Symbol | Layers | Description |
|---|---|---|---|---|
| 1 | Mean Building Height | H_mean | 1 | Arithmetic mean height per grid cell |
| 2 | Area-Weighted Mean Height | H_aw | 1 | Height weighted by footprint area |
| 3 | Std Dev of Building Height | H_std | 1 | Population std dev (ddof=0) |
| 4 | Plan Area Fraction | λ_p | 1 | Union of building footprints / cell area |
| 5 | Building Surface-to-Plan Area Ratio | λ_B | 1 | (Roof area + wall area) / cell area |
| 6 | Frontal Area Index | FAI | 4 | At 0°, 45°, 90°, 135° wind directions |
| 7 | Building Height Distribution | p(z) | 15 | Area-weighted fractions, 0–75 m in 5 m bins |
See docs/ucp_definitions.md for full formulae and units.
01_tile_system_umorph.py # Grid generation + city-tile mapping (local)
02_tiled_3d_morphology.py # Overture Maps download + GHSL height infilling (HPC array job)
03_tiled_compute_ucp.py # UCP computation → UTM + WGS84 rasters (HPC)
04_continent_ucp_merge.py # Per-continent tile mosaic (HPC)
05_global_cog_ucp.py # Global VRT → Cloud-Optimized GeoTIFF (HPC)
06_shp_to_geoparquet.py # LOD1 SHP tiles → GeoParquet for distribution (HPC)
Scripts 02–06 are designed for SLURM batch execution. Each has a paired .sh job script in hpc/job_scripts/.
Geogrid binary conversion (product 3) was performed using the GIS4WRF QGIS plugin for uMORPH v1.0. See docs/geogrid_ingestion.md.
| Source | Version | Use |
|---|---|---|
| Overture Maps | v1.9.0–v1.10.0 (May–Jun 2025) | Building footprints + native heights |
| GHSL ANBH | R2023A (E2018) | Height infilling for footprints lacking native heights |
| SimpleMaps World Cities | v1.90 | City locations + population filter |
Two files are distributed:
| File | Description |
|---|---|
worldcities_over_50k_tile_bounds.csv |
Master tile index: tile_id, min_lon, min_lat, max_lon, max_lat, continent (2,624 tiles) |
worldcities_over_50k_tiles.shp (+ sidecars) |
Tile polygons, EPSG:4326 |
City centre points are not distributed as they derive directly from the SimpleMaps World Cities database (CC-BY 4.0). To regenerate locally:
# Download free SimpleMaps CSV from https://simplemaps.com/data/world-cities
python pipeline/01_tile_system_umorph.py \
--input_cities /path/to/worldcities.csv \
--output_dir data/tile_index/ \
--pop_threshold 50000Sample GeoParquet tiles are available from the uMORPH data portal [link pending]. Recommended tiles for testing:
| Tile ID | City | Size |
|---|---|---|
| R030_C034 | Phoenix, AZ | ~115 MB |
| R026_C047 | Chicago, IL | ~358 MB |
| R029_C031 | Los Angeles, CA | ~407 MB |
import geopandas as gpd
gdf = gpd.read_parquet("R030_C034.parquet")
print(gdf.crs) # EPSG:4326
print(len(gdf)) # number of buildings
print(gdf.columns) # id, version, sources, height, height_fil, was_filled, ghsl_pixel, geometry- Overture Maps CLI —
pip install overturemaps==0.14.0 - GHSL ANBH raster — download
GHS_BUILT_H_ANBH_E2018_GLOBE_R2023A_4326_3ss_V1_0.tiffrom the GHSL portal. Updateghsl_rasterpath in02. - SimpleMaps World Cities CSV — free version from simplemaps.com/data/world-cities. Update
input_worldcitiespath in01.
conda env create -f environment.yml
conda activate umorph_envSee environment.yml for full dependency list (Python 3.9, rasterio 1.4.3, geopandas 1.0.1, gdal 3.10.2).
python pipeline/01_tile_system_umorph.py \
--input_cities data/simplemaps/worldcities.csv \
--output_dir data/tile_index/ \
--pop_threshold 50000Edit hpc/config/config.sh with your paths, then:
sbatch hpc/job_scripts/02_tiled_3d_morphology.shsbatch hpc/job_scripts/03_tiled_compute_ucp.shsbatch hpc/job_scripts/04_continent_ucp_merge.sh
sbatch hpc/job_scripts/05_global_cog_ucp.shsbatch hpc/job_scripts/06_shp_to_geoparquet.shumorph/
├── README.md
├── CITATION.cff
├── LICENSE
├── environment.yml
│
├── pipeline/
│ ├── 01_tile_system_umorph.py
│ ├── 02_tiled_3d_morphology.py
│ ├── 03_tiled_compute_ucp.py
│ ├── 04_continent_ucp_merge.py
│ ├── 05_global_cog_ucp.py
│ └── 06_shp_to_geoparquet.py
│
├── hpc/
│ ├── job_scripts/
│ │ ├── 02_tiled_3d_morphology.sh
│ │ ├── 03_tiled_compute_ucp.sh
│ │ ├── 04_continent_ucp_merge.sh
│ │ ├── 05_global_cog_ucp.sh
│ │ └── 06_shp_to_geoparquet.sh
│ └── config/
│ └── config.sh
│
├── data/
│ └── tile_index/ # tile CSVs + SHPs
│
├── docs/
│ ├── ucp_definitions.md
│ ├── tile_naming.md
│ ├── geogrid_ingestion.md
│ ├── validation.md
│ └── figures/
│ ├── umorph_global_coverage.jpg
│ └── umorph_haw_30cities.jpg
│
├── wrf/
│ └── GEOGRID.TBL.ARW_LCZ_UMORPH_north_america
│
└── tests/
└── test_ucp_formulae.py
@article{jain2026umorph,
title = {uMORPH: Global LOD1 buildings and 100-meter urban canopy parameters dataset},
author = {Jain, Madhavi and Ortiz, Luis E. and McPhearson, Timon},
year = {2026},
note = {Forthcoming}
}Dataset (uMORPH v1.0 data products): Open Database License (ODbL) 1.0 — https://opendatacommons.org/licenses/odbl/
uMORPH v1.0 derives from OpenStreetMap and Microsoft Buildings data, both licensed under ODbL. The ODbL share-alike clause requires that derivative databases be distributed under the same license. You are free to use, share, and adapt uMORPH data with attribution and under the same ODbL terms.
Pipeline code: Apache License 2.0 — https://www.apache.org/licenses/LICENSE-2.0
Source data licenses:
| Source | License |
|---|---|
| OpenStreetMap (via Overture Maps) | ODbL 1.0 |
| Microsoft Buildings (via Overture Maps) | ODbL 1.0 |
| Google Open Buildings (via Overture Maps) | CC BY 4.0 |
| GHSL ANBH | CC BY 4.0 |
| SimpleMaps World Cities | CC BY 4.0 |
Madhavi Jain · Urban Systems Lab, New York University · mj3848@nyu.edu