Add governed VMM flood hazard scenarios
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-15 22:14:12 +02:00
parent 6238b252a9
commit 501f824257
38 changed files with 2059 additions and 18 deletions
+45
View File
@@ -277,6 +277,51 @@ Safety contract:
- product periods such as `1979_1990` remain explicitly multi-year and are not
presented as exact annual observations.
### GET `/api/v1/projects/{project_id}/datasets/flood-hazard/products`
Returns the fixed twelve-product VMM flood-depth registry in the canonical
envelope. Products combine `pluviaal`/`fluviaal`, current climate/climate
projection 2050 and T10/T100/T1000. Each product keeps the official WCS
coverage id, probability class, source unit centimetres, normalized unit
metres, publication metadata, attribution and limitation.
### POST `/api/v1/projects/{project_id}/datasets/flood-hazard/acquire`
Acquires one bounded official VMM OGRK WCS 1.1 coverage behind the synchronous
Job abstraction. Arbitrary coverage identifiers and service URLs are rejected.
```json
{
"bbox": {"min_x": 5.0, "min_y": 51.1, "max_x": 5.2, "max_y": 51.3, "crs": "EPSG:4326"},
"area_id": "optional-project-area-uuid",
"product_key": "pluviaal_current_t100",
"resolution_m": 5.0,
"force_refresh": false
}
```
The service tiles municipality-size requests, validates EPSG:31370 and one
Float32 depth band, converts positive source centimetres to metres, clips to
the exact persisted Area and stores an ordinary raster Dataset and
DatasetVersion. Zero/null source cells become transparent nodata. The scenario
is not a temporal observation and receives no fabricated `observed_at` value.
### POST `/api/v1/projects/{project_id}/datasets/{dataset_id}/raster/flood-hazard/select`
Returns mapped positive-depth area in hectares, share of the selection, mean,
P90 and maximum modeled local depth and `modelled_max_depth_area_integral_m3`.
Every result identifies mechanism, climate context, probability class and
return period. The integral sums local modeled maximum depth times cell area;
it is explicitly not concurrent flood storage, permanent waterbody content,
current water level or bathymetry. These unsupported metrics remain listed in
the response.
### 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
Dataset. It never accepts an arbitrary path or coverage id and is used by the
existing MapLibre image-overlay path.
### GET `/api/v1/projects/{project_id}/datasets`
List datasets.