-- Backfill domrf_kn_objects.cad_quarter через ST_Contains spatial-join. -- -- Логика: каждый ЖК с lat/lon → найти cad-квартал, в полигон которого попадает -- точка. Если ЖК на границе двух кварталов — берём первый (ST_Contains -- однозначен, ST_Intersects дал бы пересечения). -- -- Запускать ПОСЛЕ 58_fetch_cad_quarters_nspd.py. UPDATE domrf_kn_objects o SET cad_quarter = cq.cad_number FROM cad_quarters_geom cq WHERE o.region_cd = 66 AND o.latitude IS NOT NULL AND o.longitude IS NOT NULL AND ST_Contains( cq.geom, ST_SetSRID(ST_MakePoint(o.longitude, o.latitude), 4326) ) AND (o.cad_quarter IS NULL OR o.cad_quarter <> cq.cad_number); -- Контрольные цифры: сколько ЖК привязано / без привязки. SELECT COUNT(*) FILTER (WHERE cad_quarter IS NOT NULL) AS with_cad, COUNT(*) FILTER (WHERE cad_quarter IS NULL) AS without_cad, COUNT(DISTINCT cad_quarter) AS unique_quarters_used FROM domrf_kn_objects WHERE region_cd = 66 AND district_name IS NOT NULL;