fix(map): make area analysis scale-aware
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-21 21:59:56 +02:00
parent 80631607f7
commit 20829f1a24
20 changed files with 619 additions and 56 deletions
+18
View File
@@ -881,6 +881,24 @@ Rules:
- `limit` is bounded to `1..1000`. Municipality-scale clients must page spatially by viewport instead of requesting an unbounded municipality FeatureCollection.
- The Map workspace uses this existing endpoint for vector datasets above 5,000 features. It starts delivery at zoom level 14, debounces `moveend` requests and explicitly reports `truncated=true` as a request to zoom further in. This is a client delivery policy, not a second API or persistence path.
### POST `/api/v1/projects/{project_id}/datasets/vector/partitions/select`
Combines `1..16` bounded vector acquisitions of one governed source product
into one read-only selection result. The request uses the same `bbox`, optional
`area_id` and `limit` contract as vector selection plus `dataset_ids`.
The backend rejects mixed projects, non-ready vector datasets and partitions
whose `source_name` or `product_key` differs. PostGIS calculates area and length
metrics across all persisted tile geometries. `total_feature_count` is
deduplicated by provider `source_feature_id` where available so a source object
crossing a tile edge is not presented as two objects. The response includes
`partition_count`, `source_name` and the exact `dataset_ids` used.
The Map workbench uses this route only for regional selections up to 50 by 50
kilometres. Provider calls remain individually bounded below 20 kilometres;
larger overview selections do not fan out into unbounded high-resolution
downloads.
### POST `/api/v1/projects/{project_id}/datasets/{dataset_id}/vector/select/derive`
Persists a bbox selection as a new derived vector dataset and indexes the