A participatory digital twin for urban flood resilience, for Rotterdam and Chennai. RHT couples physics-based flood simulation, asset-level impact, and stakeholder-driven planning — and makes all of it queryable through a knowledge graph.
New here? The platform has two main surfaces: the Planning Interface (
/planning) for scenarios and interventions, and the Flood Impact Explorer (/reporting) for querying which buildings and roads flood in each scenario.
What the twin does¶
Simulate — SFINCS produces flood depth/velocity for rainfall, return periods, surge and storage-basin scenarios.
Assess — Delft-FIAT computes inundation depth and damage for ~198k buildings per scenario.
Plan — stakeholders draw and classify interventions (water squares, green roofs, permeable pavement, …) and re-simulate.
Query — every building and road is a node in the knowledge graph, linked to its per-scenario flood impact, and grounded in the official Dutch BAG registry.
Key capabilities¶
| Capability | Where |
|---|---|
| Flooded buildings per scenario (threshold at query time) | /api/scenarios/<s>/flooded-buildings, Impact Explorer |
| Flooded roads per scenario (tunnels/underpasses surfaced) | /api/scenarios/<s>/flooded-roads, Impact Explorer |
| Official BAG building identity (id, year, use) | spatial join, enrich_with_bag |
| Ad-hoc SPARQL over the graph | read-only /sparql/ endpoint |
| Scenario comparison (A/B), export GeoJSON/CSV | Impact Explorer |
Documentation¶
Data & scenario layout — how the raster/scenario data on disk is organised (the layout is the contract).
Knowledge graph — the ontology, how the graph is built and queried, the PDOK/BAG enrichment, and the flooded-roads analysis.
Version control & workflow — contributing to the codebase.
Architecture at a glance¶
Backend — Django + DRF REST API, PostgreSQL, JWT auth.
Geospatial — TiTiler tiles, Cloud-Optimized GeoTIFFs, GeoPackage I/O.
Knowledge layer — Oxigraph triplestore, SPARQL 1.1, rdflib, shapely.
Frontend — SvelteKit (Svelte 5) + MapLibre GL.
Delivery — Docker Compose + NGINX; one command brings the twin up.