38 lines
1.8 KiB
PL/PgSQL
38 lines
1.8 KiB
PL/PgSQL
-- 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;
|