feat: add cross-domain Mol data profile
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 03:06:36 +02:00
parent 4aa0d6da24
commit 035ec3b233
39 changed files with 3049 additions and 22 deletions
+47
View File
@@ -322,6 +322,53 @@ 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/thematic-raster/products`
Returns the fixed MercatorNet registry for `space_occupation_2025`,
`open_space_2022`, `population_density_2019`, `node_value_2022` and
`service_level_2022`. Every item includes the governed WCS coverage id, native
resolution, source unit, observation year, legend, attribution and limitation.
### POST `/api/v1/projects/{project_id}/datasets/thematic-raster/acquire`
Acquires one allowlisted official coverage behind the synchronous Job
abstraction. The request accepts only an EPSG:4326 bbox, optional project Area,
one registry product key and an explicit refresh flag:
```json
{
"bbox": {"min_x": 5.03, "min_y": 51.15, "max_x": 5.25, "max_y": 51.33, "crs": "EPSG:4326"},
"area_id": "optional-project-area-uuid",
"product_key": "population_density_2019",
"force_refresh": false
}
```
The backend uses native 10 m or 100 m resolution, splits requests into bounded
WCS 1.0 tiles, validates EPSG:31370 and documented source values, masks the
exact Area and persists an ordinary raster Dataset and DatasetVersion. It does
not accept arbitrary URLs, coverage ids, resolutions or expressions.
### POST `/api/v1/projects/{project_id}/datasets/{dataset_id}/raster/thematic/select`
Returns source-correct metrics for a bbox and optional exact Area mask:
- occupied/open hectares, share and valid raster area for binary products;
- estimated inhabitants plus mean/P90 inhabitants per hectare for the 2019
population raster;
- mean, P10, median and P90 source score for node value and service level.
The response names estimate status, aggregation method, source unit,
observation year, attribution, unsupported metrics and product limitation.
Current register population, live public-transport availability and causal
interpretations are not produced.
### GET `/api/v1/projects/{project_id}/datasets/{dataset_id}/raster/thematic/image`
Returns a constrained transparent PNG generated from the persisted governed
raster. It accepts neither an arbitrary file path nor a provider URL and feeds
the existing MapLibre image-overlay path.
### GET `/api/v1/projects/{project_id}/datasets`
List datasets.
+26
View File
@@ -1,3 +1,29 @@
## Sprint 213-214 Cross-domain thematic rasters and DOV soil map (2026-07-16)
Changed:
- Added a governed five-product MercatorNet thematic-raster registry covering
space, people, accessibility and services with fixed coverage ids, native
resolutions, units, years, legends and limitations.
- Added safe WCS tiling, exact Area masking, canonical raster persistence,
MapLibre rendering, selection metrics and persisted-metric Ollama context.
- Added an explicit DOV soil-map operator for Mol with deterministic WFS 2.0
pagination, exact EPSG:31370 clipping, raw checksums and canonical vector
upload. No source writes directly to PostGIS.
- Added end-user themes for space occupation, open space, population,
accessibility, services and soil. Current-only official states no longer
make Evolution appear available without at least two observations.
Validated during implementation:
- Focused thematic and soil suites passed with 14 tests.
- Frontend TypeScript typecheck passed after map and API integration.
- Live source contracts were checked against MercatorNet WCS and the DOV
production WFS; live runtime provisioning follows after deployment.
Next:
- Run the complete readiness gate, deploy Tower, provision all six Mol layers,
verify live PostGIS metrics and inspect the map at desktop, widescreen and
mobile widths before starting regional rollout.
## Sprint 195 Guided raster-to-detection workflow (2026-07-14)
Changed:
+11 -2
View File
@@ -28,8 +28,10 @@ CRS/unit validation, persisted provenance and selection-metric tests pass.
- Historical context: official 1778, 1873 and 1969 mapped land-use classes and
modern land-use editions where persisted.
This is a strong base, but population/services, soil classes and modeled
accessibility are still genuine coverage gaps.
The cross-domain Wave 1 implementation now adds population/services, modeled
accessibility, space occupation, open space and the DOV soil classes to Mol.
Regional completeness beyond Mol remains a controlled operator rollout rather
than an automatic startup fetch.
## Domain A - Space, Buildings And Economy
@@ -142,6 +144,13 @@ DatasetService/VectorFeatureService path. This immediately gives every drawn
rectangle a balanced profile across space, soil, people, services and
accessibility.
Implementation status on 2026-07-16: complete for Mol. The five raster
products use one fixed MercatorNet registry and the soil map uses the official
`bodemkaart:bodemtypes` DOV WFS. All outputs are persisted through existing
Dataset services, carry source year/period and limitations, and are selectable
on the map. Regional raster provisioning is supported per persisted
municipality; regional soil partitioning remains the next scale-out step.
### Wave 2 - Economic and mobility objects
Add governed vector operators for business parks, Hoppinpoints and cycle
+37
View File
@@ -26,6 +26,43 @@ aanvraag. GeoIntel verzint geen historische pixelopnamedatum. Bronnen:
Dit document verzamelt concrete databronnen voor GeoIntel Kempen.
## Cross-domain official area profile
GeoIntel uses one governed MercatorNet WCS registry for five non-water policy
rasters. The operator is explicit and bounded; no source fetch occurs during
startup or directly from the browser.
| Product | Coverage | Resolution | Selection output |
| --- | --- | ---: | --- |
| Ruimtebeslag 2025 | `lu:lu_ruibes_vlaa_2025_v3` | 10 m | occupied hectares and share |
| Open ruimte 2022 | `lu:lu_openruimte_vlaa_2022_v3` | 10 m | open-space hectares and share |
| Inwonersdichtheid 2019 | `ni:ni_inw_ha_vlaa_2019` | 100 m | estimated inhabitants and inhabitants/ha |
| Knooppuntwaarde 2022 | `lu:lu_knptw_ha_2022_v3` | 100 m | source-score distribution |
| Voorzieningenniveau 2022 | `lu:lu_totvznv_ha_2022_v3` | 100 m | normalized source-score distribution |
All coverages are stored in EPSG:31370 with their native cells, exact Area
mask, request/checksum provenance and reference year. Space occupation is not
the same as buildings or paving. Open space is not automatically nature or
publicly accessible land. Population is a 2019 raster estimate, not a current
register count. Accessibility and service scores are not live travel times or
object counts.
## DOV digital soil map
- Service: `https://www.dov.vlaanderen.be/geoserver/wfs`
- Layer: `bodemkaart:bodemtypes`
- Source CRS and metric clipping: EPSG:31370
- Persisted geometry: EPSG:4326 through DatasetService/VectorFeatureService
- Scale: 1:20,000
- Survey evidence: field data collected between 1949 and 1971
The Mol operator follows all WFS pages, keeps checksummed raw responses and
persists soil type, series, generalized legend, texture, drainage, profile and
substrate fields. Selection output reports intersected mapped hectares and
fixed sand/anthropogenic context classes. The drainage field remains historical
baseline evidence; GeoIntel does not claim it describes current parcel
drainage or replace a site investigation.
## GRB — Basiskaart Vlaanderen
- Naam: Basiskaart Vlaanderen / GRB
+23
View File
@@ -205,6 +205,29 @@ The smoke never passes `--apply`. It fails if the cleanup summary is not a
dry-run, if any export/file deletion is reported, or if the dry-run candidate
fields are missing.
## Governed cross-domain raster and soil evidence
MercatorNet thematic products use the ordinary raster Dataset and immutable
DatasetVersion paths under `STORAGE_ROOT`. `source_metadata` records product,
coverage, native resolution/unit, render range, reference year and request
bounds. `provenance_metadata` records every tiled WCS URL, transfer checksum,
normalized checksum, exact Area id and validation result. No new storage table
or provider-side path is introduced.
The DOV Mol soil operator retains evidence under:
```text
storage/operator-evidence/dov-soil-map/mol/
raw/dov_soil_map_page_*.json
dov_soil_map_mol.geojson
dov_soil_map_mol.manifest.json
```
Only the normalized, exactly clipped GeoJSON enters DatasetService and
`vector_features`. The manifest binds the persisted artifact, Mol boundary,
source page URLs/checksums, feature completeness, class-area summaries and
historical limitations. Raw source responses remain operator evidence.
## Model storage
Model artifacts live under:
+4
View File
@@ -30,6 +30,10 @@
- [x] Add annual agricultural-use parcels through an explicit provider/operator contract.
- [x] Extend the official 1778/1873/1969 historical buildings, water and roads series from Mol to the approved regional scope with partitioned source audits.
- [x] Connect a drawn rectangle to bounded official orthophoto acquisition, local configured-YOLO detection and persisted GRB QA.
- [x] Add governed official space-occupation, open-space, population-density, accessibility and service-level rasters with semantic map metrics.
- [x] Add the DOV digital soil map for Mol with exact clipping, source attributes and historical survey limitations.
- [ ] Execute the governed thematic-raster operator for every persisted Kempen municipality after the Mol live gate passes.
- [ ] Generalize the DOV soil-map operator to all 28 approved Kempen municipality partitions with one regional snapshot manifest.
## Governed source expansion backlog