feat: add map-driven orthophoto analysis
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 02:01:03 +02:00
parent 845c4696e7
commit daccd3869a
29 changed files with 1300 additions and 26 deletions
+14
View File
@@ -199,6 +199,20 @@ detector fixtures or download weights. A zero detection count is acceptable on
the synthetic demo raster; production usefulness still requires validation on
real georeferenced orthophotos and reference vectors.
### Map-driven building analysis
The primary map can hand an explicit EPSG:4326 rectangle to the bounded
orthophoto acquisition endpoint. Its canonical raster Dataset then uses the
unchanged configured-YOLO pipeline: 512 px tiles with 64 px overlap, preflight,
local inference, Job + AnalysisRun + Detection persistence and persisted
GeoJSON. When a ready GRB buildings reference Dataset exists, the same action
launches existing detection QA and persists QualityCheck and Metric rows.
This flow does not download a model, bypass the model registry, write directly
to Detection/vector tables or present AI boxes as official building truth.
The 1 m request sampling is an operational model profile; provenance retains
the official orthophoto source and latest-mosaic limitation.
### Real-data detection and QA validation
The real operational validation path uses operator-provided files rather than
+30
View File
@@ -191,6 +191,36 @@ Response: `DatasetRead` with extracted metadata if supported.
Vector uploads remain stored as original files and are also persisted into `vector_features` as queryable PostGIS state.
### POST `/api/v1/projects/{project_id}/datasets/orthophoto/acquire`
Explicitly acquire a bounded most-recent winter orthophoto selection from the
official Digitaal Vlaanderen `OMWRGBMRVL` WMS `Ortho` layer.
```json
{
"bbox": {"min_x": 5.10, "min_y": 51.17, "max_x": 5.11, "max_y": 51.18, "crs": "EPSG:4326"},
"area_id": "optional-project-area-uuid",
"force_refresh": false
}
```
The canonical envelope contains a synchronous Job. Its `output_dataset_id`
identifies the raster Dataset; `result_json` contains provider, layer, pixel
dimensions, EPSG:4326/EPSG:31370 bounds, sampling resolution, attribution,
cache reuse and limitation text.
Safety contract:
- every side must measure between 128 m and 1,024 m in EPSG:31370;
- an optional `area_id` must belong to the project and cover at least 99% of
the rectangle;
- defaults are 1 m/pixel, a 32 MiB response limit and 24-hour exact-request
reuse;
- WMS bytes are georeferenced to EPSG:31370 and persisted only through
`DatasetService`; no fetch runs on startup;
- this is the latest mosaic available at request time, not a historical
observation date for every pixel.
### GET `/api/v1/projects/{project_id}/datasets`
List datasets.
+27
View File
@@ -8076,3 +8076,30 @@ Live operational proof:
Next:
- Add bounded operator-triggered orthophoto acquisition from a drawn map rectangle, then hand that raster to this proven guided pipeline. Keep external acquisition out of browser/startup paths and retain explicit source licensing/provenance.
## Sprint 196 - Map-driven official orthophoto analysis (2026-07-15)
Implemented:
- Added explicit project-scoped acquisition for the official Digitaal
Vlaanderen `OMWRGBMRVL` WMS `Ortho` layer.
- Enforced EPSG:4326 input, EPSG:31370 metric bounds, 128-1,024 m side limits,
optional persisted-Area coverage, 1 m sampling, timeout/response limits and
24-hour exact-request reuse.
- Georeferenced the RGB TIFF and persisted it, its DatasetVersion, source,
request URL/hash, bounds, attribution and latest-mosaic limitation only
through DatasetService.
- Added one simple map action chaining acquisition, existing raster tiling,
configured-YOLO inference, Detection persistence and existing GRB detection
QA before showing the persisted result on MapLibre.
- Exposed orthophoto settings through Docker Compose, the all-in-one Unraid
runtime script and DockerMan template.
Validation before deployment:
- Focused service/API tests passed, including in-memory TIFF georeferencing,
persistence and the canonical Job envelope.
- Frontend TypeScript typecheck and production build passed.
Next:
- Deploy to Tower, execute one bounded Mol rectangle through the real WMS,
local model and GRB QA, and verify persistence plus browser state before
accepting the flow as operational.
+24
View File
@@ -1,5 +1,29 @@
# Data Sources
## Orthofotomozaiek Vlaanderen - meest recent
- Naam: Orthofotomozaiek middenschalig, winteropnamen, kleur, meest recent
- Beheerder: Digitaal Vlaanderen
- Type: RGB-raster via WMS
- Operationele laag: `OMWRGBMRVL` / `Ortho`
- CRS bij opslag: `EPSG:31370`
- Gebruik: expliciet begrensde luchtbeeldanalyse en lokale gebouwdetectie
- Autoriteit: officiele beeldbron; AI-detecties zelf zijn niet-autoritatief
De hoofdkaart kan na een getekende rechthoek een expliciete, begrensde WMS
GetMap-aanvraag uitvoeren. De backend aanvaardt alleen rechthoeken van 128 tot
1.024 meter per zijde, samplet standaard op 1 m/pixel voor het actieve lokale
modelprofiel en bewaart het gegeorefereerde GeoTIFF via DatasetService met
aanvraag, checksum, bron, attributie en beperking. Een identieke selectie mag
24 uur worden hergebruikt. Er is geen startupfetch en de browser bevraagt de
externe WMS nooit rechtstreeks.
De bron is de meest recente samengestelde wintermozaiek op het moment van de
aanvraag. GeoIntel verzint geen historische pixelopnamedatum. Bronnen:
- https://www.vlaanderen.be/datavindplaats/catalogus/orthofotomozaiek-middenschalig-winteropnamen-kleur-meest-recent-vlaanderen
- https://www.vlaanderen.be/digitaal-vlaanderen/onze-diensten-en-platformen/luchtopnamen/gebruik-orthofotomozaieken
Dit document verzamelt concrete databronnen voor GeoIntel Kempen.
## GRB — Basiskaart Vlaanderen
+1
View File
@@ -15,6 +15,7 @@
- [x] Reduce end-user noise by moving technical projects, source metadata, QA evidence, provider internals and model diagnostics behind explicit advanced disclosures.
- [x] Default Detection Lab to the configured local YOLO asset and present measured model quality and control requirements honestly.
- [x] Extend official population and land-use time series from Mol to the approved 28-municipality regional scope.
- [x] Connect a drawn rectangle to bounded official orthophoto acquisition, local configured-YOLO detection and persisted GRB QA.
This file now starts with the current implementation status. Older preparation/backlog sections are preserved below as historical planning context and should not be treated as the live sprint board without checking `docs/CODEX_EXECUTION_LOG.md`.