Step by step through the whole pipeline on three real cities, with every number taken from a real physics run. Maps are drawn in your browser from raw model output, so hovering any pixel reads its actual temperature.
Open, credential-free pipeline that turns any city into an urban heat decision problem, plus baselines and a benchmark.
WRI's Cool Cities Lab solved the forward model: given an intervention, how much cooler? shadecast solves the inverse problem: given a budget, what should you build?
- shadecast is this repo and library.
- CoolBench is the benchmark artifact it publishes.
- Umbra is the interactive instrument built on the same surrogate.
Credentials at build time, never at use time.
Build time needs network but no account, key or quota anywhere. Use time is a frozen bundle, offline, forever. A benchmark that requires three accounts is not a benchmark.
uv sync
shadecast list # the 32 city corpus and its stratification
shadecast build ahmedabad # assemble one bundle, about 35 seconds
shadecast plan data/cities/ahmedabad --kind tree --budget 10000000The physics engine is optional and lives in its own uv environment, which is what keeps its GPL licence off this project:
brew install gdal
uv venv --python 3.12 .venv-engine
uv pip install --python .venv-engine solweig-gpu numba "gdal==$(gdal-config --version)"See CLAUDE.md for why, and for the licensing boundary.
For any city it assembles a 1 metre simulation bundle from open global sources: building footprints and heights, terrain, tree canopy, land cover, population and meteorology. It then plans an adaptation portfolio (trees, cool roofs, reflective paving, shade structures) against a budget and scores the result on population weighted heat exposure, equity and cost.
Study areas are chosen from population density rather than by hand. Seeding on a city centre coordinate found 1,562 residents in Nairobi; scanning for the densest window found 154,245.
- Phase 0 passed. Ahmedabad end to end: data, physics, objectives, a greedy baseline, and a measured 1.52 C spillover that greedy cannot see.
- Phase 1 passed. Nine cities, zero failures, and the first cross city result: Lagos returns 38% more cooling benefit per dollar than Ahmedabad.
- Phase 2 in progress. The learned surrogate, which is what makes search affordable at all.
Full proposal in PROPOSAL.md.
All open, all unsigned, no API keys.
| Layer | Source |
|---|---|
| Buildings and heights | GlobalBuildingAtlas LoD1 (Source Cooperative) |
| Terrain | Copernicus DEM GLO-30 (AWS Open Data) |
| Canopy height | Meta and WRI 1 m CHM (AWS Open Data) |
| Land cover | ESA WorldCover 10 m (AWS Open Data) |
| Population | GHS-POP R2023A 100 m (JRC) |
| Meteorology | ERA5 via Open-Meteo |
| Physics | SOLWEIG via solweig-gpu, run as a subprocess |
Apache 2.0. The GPL physics engine stays behind a process wall; see LICENSE.