fix: make vector ingestion canonical and atomic
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-14 15:28:14 +02:00
parent 7fa4f1fac9
commit 8c694fa9ce
8 changed files with 145 additions and 25 deletions
+5
View File
@@ -32,6 +32,7 @@ def parse_geojson_payload(raw_text: str | dict[str, Any]) -> dict[str, Any]:
geometry_types: set[str] = set()
geometries = []
invalid_features = 0
z_dimension_features = 0
polygon_area_m2: float | None = None
crs_assumed = None
for feature in features:
@@ -49,6 +50,8 @@ def parse_geojson_payload(raw_text: str | dict[str, Any]) -> dict[str, Any]:
if not geom.is_valid:
invalid_features += 1
raise ValueError("Invalid geometry remains after repair")
if geom.has_z:
z_dimension_features += 1
geometry_types.add(str(geom.geom_type))
geometries.append(geom)
@@ -85,6 +88,8 @@ def parse_geojson_payload(raw_text: str | dict[str, Any]) -> dict[str, Any]:
"bounds_json": bounds_json,
"approximate_area_m2": polygon_area_m2,
"invalid_features": invalid_features,
"z_dimension_feature_count": z_dimension_features,
"canonical_storage_dimension": "2D",
"crs": crs,
"crs_assumed": crs_assumed,
"extracted_at": datetime.now(timezone.utc).isoformat(),