perf(map): simplify preclipped area queries
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 23:30:52 +02:00
parent 17d0d85778
commit 80df5e70c9
2 changed files with 80 additions and 3 deletions
+4 -3
View File
@@ -633,16 +633,17 @@ def select_vector_features(
payload.bbox.model_dump(),
selection_area.geometry,
)
full_dataset_area = covers_full_area and VectorFeatureService.can_use_full_area_fast_path(
dataset_is_preclipped_to_area = VectorFeatureService.can_use_full_area_fast_path(
dataset,
selection_area.id,
)
full_dataset_area = covers_full_area and dataset_is_preclipped_to_area
preclipped_partition_filter = VectorFeatureService.preclipped_partition_filter(
dataset,
getattr(selection_area, "name", None),
)
selection_kwargs.update(
selection_geometry=selection_geometry,
selection_geometry=None if dataset_is_preclipped_to_area else selection_geometry,
selection_area_id=selection_area.id,
full_dataset_area=full_dataset_area,
preclipped_partition_filter=preclipped_partition_filter,
@@ -655,7 +656,7 @@ def select_vector_features(
"total_feature_count": result.get("total_feature_count"),
}
if selection_area is not None:
summary_kwargs["selection_geometry"] = selection_geometry
summary_kwargs["selection_geometry"] = None if dataset_is_preclipped_to_area else selection_geometry
summary_kwargs["full_dataset_area"] = full_dataset_area
summary_kwargs["preclipped_partition_filter"] = preclipped_partition_filter
result["summary"] = VectorFeatureService.summarize_features_by_bbox(db, **summary_kwargs)
@@ -232,6 +232,82 @@ def test_vector_select_route_uses_persisted_area_geometry_when_requested(monkeyp
assert captured["select"]["full_dataset_area"] is False
def test_vector_select_route_uses_bbox_for_dataset_preclipped_to_selected_area(monkeypatch) -> None:
from app.api.routes import datasets as dataset_routes
project_id = uuid.uuid4()
dataset_id = uuid.uuid4()
area_id = uuid.uuid4()
dataset = Dataset(
id=dataset_id,
project_id=project_id,
area_id=area_id,
dataset_type="vector",
source="fixture",
name="Preclipped population",
source_metadata={
"geometry_clipped_to_area": True,
"selection_aggregation": {"method": "feature_count"},
},
)
area = SimpleNamespace(
id=area_id,
project_id=project_id,
geometry=from_shape(box(5.0, 51.0, 5.3, 51.3), srid=4326),
)
captured: dict[str, dict[str, object]] = {}
class _AreaSession:
@staticmethod
def get(model, selected_id): # noqa: ANN001
assert model is dataset_routes.Area
assert selected_id == area_id
return area
def select_features(_db, **kwargs): # noqa: ANN001
captured["select"] = kwargs
return {
"selection_bbox": {"min_x": 4.9, "min_y": 51.1, "max_x": 5.2, "max_y": 51.2, "crs": "EPSG:4326"},
"selection_area_id": str(area_id),
"feature_count": 1,
"total_feature_count": 1,
"limit": 25,
"truncated": False,
"geojson": {"type": "FeatureCollection", "features": []},
}
def summarize_features(_db, **kwargs): # noqa: ANN001
captured["summary"] = kwargs
return {
"metric_label": "Inwoners",
"metric_value": 1,
"metric_unit": "inwoners",
"aggregation_method": "feature_count",
"feature_count": 1,
"is_estimate": False,
}
monkeypatch.setattr(dataset_routes.DatasetService, "get_dataset", lambda _db, _id: dataset)
monkeypatch.setattr(dataset_routes.VectorFeatureService, "select_features_by_bbox", select_features)
monkeypatch.setattr(dataset_routes.VectorFeatureService, "summarize_features_by_bbox", summarize_features)
dataset_routes.select_vector_features(
project_id=project_id,
dataset_id=dataset_id,
payload=dataset_routes.VectorSelectionRequest(
bbox=dataset_routes.VectorSelectionBBox(min_x=4.9, min_y=51.1, max_x=5.2, max_y=51.2),
area_id=area_id,
limit=25,
),
db=_AreaSession(),
)
assert captured["select"]["selection_geometry"] is None
assert captured["summary"]["selection_geometry"] is None
assert captured["select"]["selection_area_id"] == area_id
assert captured["select"]["full_dataset_area"] is False
def test_vector_select_route_rejects_area_from_another_project(monkeypatch) -> None:
from app.api.routes import datasets as dataset_routes