-- 130_ekb_geoportal_buildings.sql -- Полный реестр зданий ЕКБ из городского геопортала (геопортал.екатеринбург.рф, -- слой WFS portal:portal_geo_topo_build). Намного полнее чем NSPD cad_buildings -- (который пропускает ~70% зданий ЕКБ) — используется как ПЕРВЫЙ локальный tier -- геокодера для разрешения «улица + дом» → координаты. -- -- Наполняется лоадером app.tasks.ekb_geoportal_ingest (python -m). UPSERT по -- (street_norm, house_norm); координаты = центроид футпринта здания. -- -- Нормализация (ДОЛЖНА совпадать с matcher'ом в geocoder._geoportal_house_match): -- street_norm = lower(trim(street)) -- house_norm = lower(house) с удалёнными внутренними пробелами («7 б» → «7б») -- -- Idempotent: CREATE TABLE IF NOT EXISTS + CREATE INDEX IF NOT EXISTS, -- безопасно при повторном применении. BEGIN; CREATE TABLE IF NOT EXISTS ekb_geoportal_buildings ( id bigserial PRIMARY KEY, street text NOT NULL, house text NOT NULL, street_norm text NOT NULL, house_norm text NOT NULL, lat double precision NOT NULL, lon double precision NOT NULL, floors integer, purpose text, material text, source_keys bigint[], updated_at timestamptz NOT NULL DEFAULT now(), UNIQUE (street_norm, house_norm) ); CREATE INDEX IF NOT EXISTS ix_ekb_geoportal_buildings_street_house ON ekb_geoportal_buildings (street_norm, house_norm); COMMIT;