fix(cadastre): skip grid-walk for broken quarter geometries (#168) #179

Merged
lekss361 merged 2 commits from fix/cadastre-skip-broken-geoms into main 2026-05-15 13:25:06 +00:00
Showing only changes of commit 6d9b30625b - Show all commits

View file

@ -46,12 +46,28 @@ def quarter_bbox_3857(db: Session, quarter: str) -> tuple[float, float, float, f
if not row or row["xmin"] is None:
logger.warning("quarter_bbox_3857: квартал %s не найден в cad_quarters_geom", quarter)
return None
return (
bbox = (
float(row["xmin"]),
float(row["ymin"]),
float(row["xmax"]),
float(row["ymax"]),
)
# Sanity check: cad_quarters_geom имеет ~72% rows с broken micro-precision
# geometry (width <0.01m). Это вызывает useless 1px tiles в WMS и 500 errors
# от NSPD. Реальный квартал ЕКБ имеет width 200-4000м. Skip grid-walk для
# broken — snapshot phase даст 20 per cat, что норм для MVP.
width = bbox[2] - bbox[0]
height = bbox[3] - bbox[1]
if width < 100 or height < 100 or width > 10000 or height > 10000:
logger.warning(
"quarter_bbox_3857: квартал %s broken geom — width=%.2fm height=%.2fm "
"(expected 100-10000m). Grid-walk skipped, only snapshot phase.",
quarter,
width,
height,
)
return None
return bbox
def generate_grid_click_points(