feat: operationalize Flemish land and nature themes
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-17 22:38:25 +02:00
parent 0718d0ebba
commit c787fb2184
27 changed files with 2010 additions and 12 deletions
+48
View File
@@ -2195,3 +2195,51 @@ return an empty, honest result. No provider request occurs during analysis.
Future provider output continues to use DatasetService and, for vectors,
VectorFeatureService. Arbitrary service URLs, browser-side fetches, insecure
TLS bypasses and startup downloads remain forbidden.
## Governed official nature and soil acquisition
### GET `/api/v1/projects/{project_id}/datasets/official-vector/products`
Returns the fixed official vector registry in the canonical `{ "data": ... }`
envelope. The allowlist contains `bwk_natura2000_2025` and `dov_soil_types`;
arbitrary collection names or URLs are never accepted.
### POST `/api/v1/projects/{project_id}/datasets/official-vector/acquire`
Request:
```json
{
"bbox": {
"min_x": 5.05,
"min_y": 51.15,
"max_x": 5.25,
"max_y": 51.30,
"crs": "EPSG:4326"
},
"area_id": "optional-area-uuid",
"product_key": "bwk_natura2000_2025",
"force_refresh": false
}
```
The synchronous `vector.official.acquire` Job validates the metric request
size, intersects `bbox` with the persisted Area, retrieves every bounded page,
clips polygon geometry in EPSG:31370 and persists EPSG:4326 features through
`DatasetService`. A repeated exact request can reuse the 24-hour cache.
Provider errors, unstable or incomplete WFS pagination and safety-limit violations
fail without persisting a truncated Dataset.
`bwk_natura2000_2025` preserves BWK `EVAL`, `EENH*`, `HAB*` and `PHAB*`
semantics. `dov_soil_types` preserves mapped soil, texture, drainage, profile
and substrate classes and is dated as the 1949-1971 survey period. Neither
contract accepts a caller-supplied endpoint.
## Governed Landgebruik Vlaanderen forest and agriculture
The existing
`GET /api/v1/projects/{project_id}/datasets/thematic-raster/products` registry
also returns `forest_land_use_2025` for source class 12 and
`agricultural_land_use_2025` for source classes 13 and 14. Both use the
existing thematic acquisition and selection contracts. Persisted rasters are
binary masks; the source class allowlist and original source-value range are
retained and validated.
+29
View File
@@ -10269,3 +10269,32 @@ Validation:
PostGIS 3.6 and Alembic head `202607160001`. Live browser acceptance showed
all four Flanders GRB cards as `Op aanvraag` and no stale vector content
underneath an unmeasured on-demand theme.
## Sprint 240 - Operational forest, agriculture, nature and soil (2026-07-17)
Implemented:
- Added governed Landgebruik Vlaanderen 2025 class masks for forest and
agricultural use while keeping definitive ALZ parcels as a separate source.
- Added one allowlisted official-vector service for BWK/Natura 2000 2025 and
DOV soil types with exact Area intersection, complete pagination, metric CRS
clipping, checksums, cache identity and canonical Dataset persistence.
- Added source-faithful selection metadata for forest/agricultural hectares,
biological value, estimated PHAB habitat areas and historical soil classes.
- Connected all four themes to the existing Flanders product catalog and
all-theme selection flow without introducing browser-side provider traffic.
- Added Compose and editable Unraid runtime settings for provider endpoints
and transfer/feature guardrails.
Validation:
- Live read-only provider probes confirmed the BWK `BWK:Bwkhab` WFS collection,
stable `UIDN` paging and expected `EVAL`/`HAB`/`PHAB` fields.
- Live DOV WFS probing confirmed `bodemkaart:bodemtypes`, stable
`numberMatched`/`numberReturned` and expected soil attributes.
- Direct service probing over a small Mol rectangle completed without
truncation: 75 BWK source/retained polygons and 29 DOV candidates resulting
in 28 clipped soil polygons.
- The complete readiness gate passed 950 backend tests, backend compilation,
the 120-route contract audit, Alembic head `202607160001`, frontend
TypeScript typecheck and the production Vite build.
- Tower deployment and browser acceptance results are recorded after the
rebuilt all-in-one runtime is verified.
+44
View File
@@ -755,3 +755,47 @@ profiles per Area, writes an atomic resumable manifest and requests regional
activation only after all 285 partitions are accounted for. A municipality
with zero source points is retained as an explicit no-profile partition, not
silently omitted.
# Operational bounded Flanders theme sources
## Landgebruik Vlaanderen 2025: forest and agricultural use
- Catalog:
`https://www.vlaanderen.be/datavindplaats/catalogus/landgebruik-vlaanderen-toestand-2025`
- WCS coverage: `lu:lu_landgebruik_vlaa_2025_v3`
- Source CRS: EPSG:31370
- Native grid: 10 metres
- Forest class: 12
- Agricultural-use classes: 13 (arable) and 14 (grassland in agricultural use)
GeoIntel validates the categorical source grid and persists a binary analysis
mask for the requested product. Forest hectares are grid-derived land-use
hectares, not legal forest boundaries, canopy cover, tree counts or wood
volume. Agricultural-use hectares describe land use and are not ALZ parcel
declarations, crop registrations, ownership boundaries or legal zoning.
Definitive ALZ yearly snapshots remain a separate historical series.
## BWK and Natura 2000 2025
- Catalog:
`https://www.vlaanderen.be/datavindplaats/catalogus/biologische-waarderingskaart-en-natura-2000-habitatkaart-toestand-2025`
- WFS 2.0: `https://geo.api.vlaanderen.be/BWK/wfs`
- Collection: `BWK:Bwkhab`
- Source storage and metric CRS: EPSG:31370
- Persisted geometry: EPSG:4326
- Attribution: `Bron: INBO`
Bounded map acquisition retains official biological evaluation and habitat
attributes. Exact intersection hectares are used for BWK value classes.
Natura 2000 and regionally important biotope hectares derived from `PHAB*`
shares are marked as estimates because shares belong to the complete source
polygon and are proportionally scaled after clipping.
## DOV digital soil map in the map flow
The `dov_soil_types` product uses
`https://www.dov.vlaanderen.be/geoserver/wfs`, collection
`bodemkaart:bodemtypes`, stable WFS 2.0 paging ordered by `gid` and a
consistent `numberMatched`. Geometry is clipped in EPSG:31370 and persisted in
EPSG:4326. It remains an authoritative historical 1:20,000 baseline based on
field work from 1949-1971, not a current drainage statement or site
investigation.
+28
View File
@@ -480,3 +480,31 @@ normalized properties are:
Null means the provider did not expose a structured value. It is never
converted to zero. Dataset metadata records exact counts, measurement range,
scope, attribution and `volume_supported=false`.
# Operational Flanders theme specification
## Land-use forest and agriculture masks
The governed 2025 Landgebruik Vlaanderen v3 coverage is categorical. GeoIntel
derives two product-specific binary rasters only after validating integer
source classes: forest class 12, and agricultural land-use classes 13 and 14.
The measurement is intersected grid area in hectares at 10 m resolution.
Forest volume, tree count, legal forest status, agricultural crop declaration,
ownership and zoning are unsupported. The agricultural mask does not replace
the temporal ALZ parcel series.
## BWK and Natura 2000 polygons
The `bwk_natura2000_2025` product follows stable allowlisted WFS 2.0 pagination,
clips geometries in Lambert 72 and persists through DatasetService. Official
`EVAL`, `EENH1..8`, `HAB1..5`, `PHAB1..5`, `HERK`, `HERKHAB`,
`HERKPHAB` and `HABLEGENDE` remain available. BWK class areas are exact
intersections; PHAB-derived habitat areas remain estimates.
## DOV soil polygons
The `dov_soil_types` product persists polygon geometry as EPSG:4326 and
clips/measures in EPSG:31370. Soil type, unified type, series, generalized
legend, texture, drainage, profile, substrate and region remain source
attributes. The observation is the 1949-1971 field-survey period and the
digital edition is June 2017. It is an authoritative historical baseline at
1:20,000, not evidence of current drainage or parcel-level site conditions.