53 lines
3.3 KiB
PL/PgSQL
53 lines
3.3 KiB
PL/PgSQL
-- 170_osm_utility_infrastructure_ekb.sql
|
|
-- Context: Таблица инженерных сетей («инженерные сети») Екатеринбурга из OSM (#1746).
|
|
-- No-B2B open-data путь: Overpass API. Хранит магистральные линии
|
|
-- (ЛЭП, трубопроводы — way → LineString) И точки/узлы (опоры ЛЭП,
|
|
-- подстанции, водозаборы, ЦТП, вышки связи — node → Point) для быстрых
|
|
-- ST_DWithin-запросов «инж.сети в радиусе участка».
|
|
-- Дополняет osm_noise_sources_ekb (там utility-срез завязан на noise-loader);
|
|
-- этот слой — самостоятельный, типизированный по infrastructure_kind.
|
|
-- Source: Overpass API (power/water/gas/heat/communication queries).
|
|
-- Geometry: mixed (LineString для way / Point для node) -> geometry(Geometry, 4326)
|
|
-- Dependencies: PostGIS (уже установлен в prod)
|
|
-- Deploy order: standalone, нет зависимостей от других таблиц
|
|
-- Idempotent: да (IF NOT EXISTS / IF NOT EXISTS на индексах)
|
|
|
|
BEGIN;
|
|
|
|
CREATE TABLE IF NOT EXISTS osm_utility_infrastructure_ekb (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
osm_id BIGINT NOT NULL,
|
|
osm_type TEXT NOT NULL, -- 'node' | 'way' | 'relation'
|
|
-- Нормализованный вид инженерной сети:
|
|
-- 'power' | 'water' | 'gas' | 'heat' | 'communication' | 'sewage'
|
|
infrastructure_kind TEXT NOT NULL,
|
|
name TEXT,
|
|
geom GEOMETRY(Geometry, 4326) NOT NULL, -- линии И точки
|
|
source_tag TEXT, -- OSM key=value, по которому элемент пойман
|
|
tags JSONB DEFAULT '{}'::jsonb,
|
|
fetched_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
UNIQUE (osm_type, osm_id)
|
|
);
|
|
|
|
-- GIST индекс для ST_DWithin / ST_Intersects запросов (инж.сети в радиусе участка)
|
|
CREATE INDEX IF NOT EXISTS osm_utility_infrastructure_ekb_geom_idx
|
|
ON osm_utility_infrastructure_ekb USING GIST (geom);
|
|
|
|
-- Индекс по виду сети для фильтрации (power/water/gas/...)
|
|
CREATE INDEX IF NOT EXISTS osm_utility_infrastructure_ekb_kind_idx
|
|
ON osm_utility_infrastructure_ekb (infrastructure_kind);
|
|
|
|
COMMENT ON TABLE osm_utility_infrastructure_ekb IS
|
|
'Инженерные сети Екатеринбурга из OSM (power/water/gas/heat/communication/sewage). '
|
|
'No-B2B open-data источник: Overpass API. Линии (ЛЭП/трубопроводы) и узлы '
|
|
'(подстанции/водозаборы/ЦТП/вышки связи) для site-finder utility-infrastructure. '
|
|
'Маппинг OSM-тегов -> infrastructure_kind: '
|
|
'backend/app/services/site_finder/utility_infrastructure_loader.py';
|
|
|
|
COMMENT ON COLUMN osm_utility_infrastructure_ekb.infrastructure_kind IS
|
|
'Нормализованный вид сети: power | water | gas | heat | communication | sewage.';
|
|
|
|
COMMENT ON COLUMN osm_utility_infrastructure_ekb.source_tag IS
|
|
'OSM key=value, по которому элемент пойман (например power=line, pipeline=gas).';
|
|
|
|
COMMIT;
|