gendesign/data/sql/84_osm_noise_sources_ekb.sql

37 lines
1.8 KiB
PL/PgSQL

-- 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;