diff --git a/data/sql/84_osm_noise_sources_ekb.sql b/data/sql/84_osm_noise_sources_ekb.sql new file mode 100644 index 00000000..d5b61e7c --- /dev/null +++ b/data/sql/84_osm_noise_sources_ekb.sql @@ -0,0 +1,37 @@ +-- 84_osm_noise_sources_ekb.sql +-- Context: Таблица шумовых источников Екатеринбурга из OSM. +-- Используется site-finder analyze для noise scoring по +-- упрощённой CNOSSOS-EU модели: L_base - 20*log10(dist/10). +-- Source types: highway, railway, industrial, aerodrome +-- Geometry: mixed (LineString / Polygon / Point) -> geometry(Geometry, 4326) +-- Dependencies: PostGIS (уже установлен) +-- Deploy order: standalone, нет зависимостей от других таблиц +-- Idempotent: да (IF NOT EXISTS / IF NOT EXISTS на индексах) + +BEGIN; + +CREATE TABLE IF NOT EXISTS osm_noise_sources_ekb ( + id BIGSERIAL PRIMARY KEY, + osm_type TEXT NOT NULL, -- 'node' | 'way' | 'relation' + osm_id BIGINT NOT NULL, + source_type TEXT NOT NULL, -- 'highway' | 'railway' | 'industrial' | 'aerodrome' + road_class TEXT, -- 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'residential' | NULL для не-highway + name TEXT, + geom GEOMETRY(Geometry, 4326) NOT NULL, + tags JSONB DEFAULT '{}'::jsonb, + fetched_at TIMESTAMPTZ NOT NULL DEFAULT now(), + UNIQUE (osm_type, osm_id) +); + +CREATE INDEX IF NOT EXISTS osm_noise_sources_ekb_geom_idx + ON osm_noise_sources_ekb USING GIST (geom); + +CREATE INDEX IF NOT EXISTS osm_noise_sources_ekb_source_idx + ON osm_noise_sources_ekb (source_type); + +COMMENT ON TABLE osm_noise_sources_ekb IS + 'Шумовые источники Екатеринбурга из OSM (highway/railway/industrial/aerodrome). ' + 'Используется site-finder analyze для noise scoring по CNOSSOS-EU-упрощённой модели ' + '(L_base - 20*log10(dist/10)).'; + +COMMIT;