Optimize false-negative tile coverage review
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-13 20:29:10 +02:00
parent 50952e18f9
commit 191d7aae1d
@@ -116,6 +116,8 @@ def load_tiles(
manifest = load_json(manifest_path)
rasterio = dependencies["rasterio"]
box = dependencies["box"]
Transformer = dependencies["Transformer"]
transform_geometry = dependencies["transform"]
raw_paths = [
str(tile.get("path") or "").strip()
for tile in manifest.get("tiles") or []
@@ -130,11 +132,15 @@ def load_tiles(
with rasterio.open(tile_path) as source:
if not source.crs:
raise SystemExit(f"Source tile has no CRS: {tile_path}")
source_geometry = box(*source.bounds)
to_wgs84 = Transformer.from_crs(source.crs, "EPSG:4326", always_xy=True)
tiles.append(
{
"path": str(tile_path),
"crs": source.crs,
"geometry": box(*source.bounds),
"geometry_wgs84": transform_geometry(
to_wgs84.transform, source_geometry
),
}
)
return tiles
@@ -143,21 +149,16 @@ def load_tiles(
def choose_source_tile(
geometry: Any,
tiles: list[dict[str, Any]],
dependencies: dict[str, Any],
) -> str | None:
Transformer = dependencies["Transformer"]
transform_geometry = dependencies["transform"]
candidates: list[tuple[float, float, str]] = []
for tile in tiles:
transformer = Transformer.from_crs("EPSG:4326", tile["crs"], always_xy=True)
projected = transform_geometry(transformer.transform, geometry)
intersection = projected.intersection(tile["geometry"])
intersection = geometry.intersection(tile["geometry_wgs84"])
if intersection.is_empty:
continue
candidates.append(
(
float(intersection.area),
-float(projected.centroid.distance(tile["geometry"].centroid)),
-float(geometry.centroid.distance(tile["geometry_wgs84"].centroid)),
tile["path"],
)
)
@@ -264,7 +265,7 @@ def read_population(
or feature.get("id")
)
area_m2 = abs(float(geod.geometry_area_perimeter(geometry)[0]))
source_tile_path = choose_source_tile(geometry, tiles, dependencies)
source_tile_path = choose_source_tile(geometry, tiles)
if source_tile_path is None:
outside_tile_coverage.append(
{