Complete regional raster exploration
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-16 14:21:32 +02:00
parent 153cff06c0
commit 45dc730e76
24 changed files with 1162 additions and 123 deletions
+21
View File
@@ -257,6 +257,17 @@ in degrees. Area geometry is an exact mask, not only a bounding box.
The response always lists `water_depth_m` and `water_volume_m3` under
`unsupported_metrics`. Drainage is not calculated by this endpoint.
### POST `/api/v1/projects/{project_id}/datasets/raster/terrain/select`
Runs the same exact terrain calculation over every persisted municipal DHMV
partition intersecting one bounded EPSG:4326 rectangle. The request adds the
governed `product_key` (`dtm_1m` or `dsm_1m`) to the ordinary selection bbox
and optional Area id. The backend mosaics only the intersecting windows in
EPSG:31370, enforces the existing 12-million-cell limit and calculates global
cell statistics. The canonical response includes `dataset_ids` and
`partition_count`; percentiles are calculated from the combined cells and are
not averages of municipal summaries.
### GET `/api/v1/projects/{project_id}/datasets/{dataset_id}/raster/terrain/image`
Returns a browser-safe PNG colour relief for the persisted governed DHMV
@@ -316,6 +327,16 @@ it is explicitly not concurrent flood storage, permanent waterbody content,
current water level or bathymetry. These unsupported metrics remain listed in
the response.
### POST `/api/v1/projects/{project_id}/datasets/raster/flood-hazard/select`
Runs exact bounded analysis over the persisted municipal VMM partitions for
one governed `product_key`. Only partitions intersecting the selection are
opened, the normalized metre grids are combined at their common 5 m analysis
resolution and the global area/depth metrics are calculated from the combined
cells. The canonical response includes every contributing Dataset id in
`dataset_ids` plus `partition_count`. The existing flood-volume and bathymetry
prohibitions are unchanged.
### GET `/api/v1/projects/{project_id}/datasets/{dataset_id}/raster/flood-hazard/image`
Returns a constrained transparent PNG for a persisted governed VMM flood-depth
+49
View File
@@ -1,3 +1,52 @@
## Sprint 218 Regional terrain and flood completion (2026-07-16)
Changed:
- Added the resumable 28-municipality DHMV DTM/DSM operator and executed all
56 governed acquisitions through the canonical API.
- Executed all 336 governed VMM mechanism/climate/return-period combinations
across the same 28 persisted municipality Areas.
- Diagnosed Retie's official WCS integer-grid edge rounding in both providers.
Accepted only bounded 5%/0.25 m edge drift, harmonized accepted tiles to the
exact requested grid and retained source resolutions, tile indexes and
method in provenance. A 4.5 m regression fixture remains rejected.
- Added exact partitioned terrain and flood selection routes for bounded
rectangles that cross municipality boundaries. They use only persisted
GeoTIFFs, calculate global statistics from combined cells and retain the
contributing Dataset ids in the response.
- Made the complete Kempen Area expose DHMV/VMM as logical regional MapLibre
layers while retaining municipality-linked storage and twelve distinct VMM
scenario identities.
Live evidence:
- VMM: 336 ready Datasets, 28 Areas, 12 products, 336 DatasetVersions,
165,277,992 bytes, zero duplicate Area/product pairs and zero missing or
size-mismatched files.
- DHMV: 56 ready Datasets, 28 Areas, two products, 56 DatasetVersions,
282,645,991 bytes, zero duplicate Area/product pairs and zero missing or
size-mismatched files.
- Every VMM Dataset has null `observed_at` and explicit false flags for
bathymetry, permanent depth/volume and concurrent volume. A repeated Retie
run reused all twelve immutable Dataset ids.
- Tower commit `153cff0` passed container health, PostGIS 3.6, Alembic head
`202607160001` and frontend/API/icon proxy checks before the regional UI
follow-up.
Validation evidence:
- Focused DHMV/VMM and regional explorer backend suites passed, including
exact adjacent-partition percentile and area calculations.
- The pre-UI-fix release gate passed 746 tests, backend compilation, API
contract checks, one Alembic head, frontend typecheck and production build.
- The final local release gate passed all 752 backend tests, backend
compilation, 107 documented API route checks, Alembic head `202607160001`,
frontend typecheck and the production build. Live deployment and browser
evidence are recorded after the Tower rollout.
Next:
- Use the now-complete regional current-state layers as the baseline for a
governed refresh/change scheduler. Keep source-specific publication dates
and scenario semantics; do not turn VMM scenarios into a historical water
level series.
## Sprint 217 Regional DOV soil coverage (2026-07-16)
Changed:
+17 -11
View File
@@ -387,7 +387,7 @@ quality metrics.
- Cache: canonical raster Dataset plus WCS request/response/output checksums
- Operators: `scripts/provision_mol_dhmv.py`,
`scripts/provision_regional_dhmv.py`
- Prioriteit: P4 uitgevoerd voor Mol en operationeel regionaal uitbreidbaar
- Prioriteit: P4 uitgevoerd voor alle 28 Kempen-gemeenten
The operator requests a bounded 5 m analysis copy by default so a complete
municipality remains operationally manageable while retaining the official
@@ -401,7 +401,10 @@ De regionale operator gebruikt exact de 28 persistente gemeente-Areas van de
goedgekeurde Kempen-scope en plant twee outputs per gemeente. Die 56
gemeentepartities vermijden een onnodig monolithisch hoogtebestand, blijven
binnen WCS/pixelgrenzen en sluiten aan op de gebiedsgebonden datasetselectie in
de kaart. Herhaalruns gebruiken de bestaande checksummed requestcache.
de kaart. De live matrix bevat 56 geverifieerde Datasets en DatasetVersions.
De regionale kaart combineert alleen de partities die een getekende selectie
raken; globale statistieken worden uit de samengevoegde cellen berekend.
Herhaalruns gebruiken de bestaande checksummed requestcache.
## VMM overstromingsgevaarkaarten
@@ -415,8 +418,9 @@ de kaart. Herhaalruns gebruiken de bestaande checksummed requestcache.
- Publicatie: 2019/2021 afhankelijk van product; scenario-identiteit is
leidend en wordt niet als observatiedatum opgeslagen
- Cache: canonical raster Dataset plus request/response/output checksums
- Operator: `scripts/provision_mol_flood_hazards.py`
- Prioriteit: P5 scenariofundament uitgevoerd voor Mol
- Operators: `scripts/provision_mol_flood_hazards.py`,
`scripts/provision_regional_flood_hazards.py`
- Prioriteit: P5 scenariofundament uitgevoerd voor alle 28 Kempen-gemeenten
VMM beschrijft deze lagen als maximale lokale waterdiepte tussen wateroppervlak
en maaiveld voor een gekozen kans- en klimaatscenario. GeoIntel converteert
@@ -441,15 +445,17 @@ scenario uitsluitend de bestaande canonical API aan:
- `POST /api/v1/projects/{project_id}/datasets/{dataset_id}/raster/flood-hazard/select`
Deze gemeentepartities zijn bewust. Een volledig regionaal raster in een
aanvraag zou de publieke WCS- en pixelgrenzen onnodig belasten. In de UI wordt
een VMM-dataset alleen als overstromingslaag getoond voor het actieve
werkgebied waaraan die dataset gekoppeld is. Zo blijft Mol bij Mol, Geel bij
Geel, enzovoort.
aanvraag zou de publieke WCS- en pixelgrenzen onnodig belasten. In de UI blijft
een gemeente gekoppeld aan haar eigen bestand. Op het volledige Kempen-gebied
worden de 28 partities als één logische scenario-laag getoond. Een getekende
rechthoek opent alleen de rakende partities en berekent globale statistieken
uit de werkelijk samengevoegde cellen.
De regionale operator ondersteunt `--dry-run`, `--members` en `--products`.
Een volledige scope met alle twaalf scenario's plant 336 gecontroleerde
acquisities. Herhaalruns gebruiken bestaande checksummed Datasets via de
backend-cache zolang de requestidentiteit niet verandert.
De uitgevoerde volledige scope bevat 336 gecontroleerde Datasets en 336
DatasetVersions zonder ontbrekende gemeente/scenario-combinaties. Herhaalruns
gebruiken bestaande checksummed Datasets via de backend-cache zolang de
requestidentiteit niet verandert.
Ook regionaal blijft de semantiek onveranderd: VMM-waterdiepte is een
gemodelleerde maximale lokale diepte per kans- en klimaatscenario. GeoIntel kan
+8
View File
@@ -134,6 +134,14 @@ URLs, response/coverage/normalized checksums, EPSG:31370 bounds, scenario
metadata and explicit unsupported-volume flags. Repeat runs reuse matching
ready Datasets through the acquisition service cache.
The regional Map workspace does not create another authoritative raster or
copy pixels into PostgreSQL. Its partition-selection endpoints read only the
municipal GeoTIFF windows intersecting a bounded selection, mosaic those
windows in memory at the governed analysis resolution and return metrics plus
the complete contributing `dataset_ids`. The 12-million-cell limit applies to
the combined window. Persisted files, checksums and DatasetVersions remain the
only authoritative artifacts.
BWK/Natura 2000 evidence lives under
`storage/operator-evidence/bwk-natura2000-2025/mol/`. The `raw/` directory
contains immutable WFS pages; the adjacent manifest records their URLs,
+2 -1
View File
@@ -36,7 +36,8 @@
- [x] Persist one bounded whole-region snapshot per thematic raster so drawn selections can cross municipality boundaries without changing source semantics.
- [x] Generalize the DOV soil-map operator to all 28 approved Kempen municipality partitions with one regional snapshot manifest.
- [x] Add a resumable regional DHMV DTM/DSM operator for all 28 approved Kempen municipality Areas.
- [ ] Execute and audit the complete 336-product VMM and 56-product DHMV regional runtime matrices.
- [x] Execute and audit the complete 336-product VMM and 56-product DHMV regional runtime matrices.
- [x] Present municipal DHMV/VMM partitions as logical regional layers and analyse cross-boundary rectangles without a municipality prerequisite.
## Governed source expansion backlog