Skip to content

UrbanSystemsLab/uMORPH

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uMORPH: Global Urban Canopy Parameters Dataset

DOI License: ODbL License: Apache 2.0 Python 3.9

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)

uMORPH global tile coverage 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 for 30 cities Area-weighted mean building height (H_aw) at 100 m resolution for 30 representative cities spanning all continents.


Dataset Products

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]


UCPs Provided

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


Pipeline Overview

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 0206 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.


Data Sources

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

Data

Tile Index (data/tile_index/)

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 50000

Sample Tiles

Sample 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

Requirements

Data prerequisites (download separately)

  1. Overture Maps CLIpip install overturemaps==0.14.0
  2. GHSL ANBH raster — download GHS_BUILT_H_ANBH_E2018_GLOBE_R2023A_4326_3ss_V1_0.tif from the GHSL portal. Update ghsl_raster path in 02.
  3. SimpleMaps World Cities CSV — free version from simplemaps.com/data/world-cities. Update input_worldcities path in 01.

Environment setup

conda env create -f environment.yml
conda activate umorph_env

See environment.yml for full dependency list (Python 3.9, rasterio 1.4.3, geopandas 1.0.1, gdal 3.10.2).


Quickstart

Step 1 — Generate tile grid (local)

python pipeline/01_tile_system_umorph.py \
    --input_cities data/simplemaps/worldcities.csv \
    --output_dir data/tile_index/ \
    --pop_threshold 50000

Step 2 — Download buildings + infill heights (HPC)

Edit hpc/config/config.sh with your paths, then:

sbatch hpc/job_scripts/02_tiled_3d_morphology.sh

Step 3 — Compute UCPs (HPC)

sbatch hpc/job_scripts/03_tiled_compute_ucp.sh

Steps 4–5 — Mosaic + COG export (HPC)

sbatch hpc/job_scripts/04_continent_ucp_merge.sh
sbatch hpc/job_scripts/05_global_cog_ucp.sh

Step 6 — Convert LOD1 SHPs to GeoParquet (HPC)

sbatch hpc/job_scripts/06_shp_to_geoparquet.sh

Repository Structure

umorph/
├── 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

Citation

@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}
}

License

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

Contact

Madhavi Jain · Urban Systems Lab, New York University · mj3848@nyu.edu

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages