Three critical fixes на untracked 85_engineering_networks_191fz.sql per
code review (May 14) — до первого применения на prod.
1. **NN collision fix**: renumber 85_engineering_networks_191fz.sql → 87_
85_pzz_zones_ekb.sql уже занимает 85_ prefix. При alphabetic deploy
order `85_e*` применился бы ДО `85_p*` — но 87_ ставит нас после
86_v_bucket_success_score.sql без зависимости на 85_pzz.
2. **Duplicate classid '907015504'**:
- Был дважды: 'Опора металлическая' + 'Опора железобетонная'.
- Второй ON CONFLICT DO UPDATE молча перетёр бы первый → NSI код
металлической опоры терялся бы.
- Fix: 907015504 остаётся за металлической (lower-numbered subtype
per Минстрой NSI source), железобетонная переезжает на 907015507
(заполняет gap 906→508). Помечено comment-меткой 'verify with
Минстрой NSI table' до prod deploy.
3. **Untyped geometry**:
- Было: `geom GEOMETRY` без SRID constraint → разрешало бы insert
mix MSK-66 (srid=100000) и WGS84 (srid=4326) → silent ST_DWithin
corruption.
- Fix: `geom GEOMETRY(Geometry, 4326)`. Capital G позволяет
mixed Point/LineString/Polygon, SRID 4326 жёстко фиксирует WGS84.
ETL loader должен делать ST_Transform(msk66_raw, 4326) перед
insert (см. backend/app/core/crs.py для CRS utility).
Idempotency: BEGIN...COMMIT, IF NOT EXISTS, ON CONFLICT DO UPDATE
паттерн — уже корректные в файле.
Closes Day-1 critical #2 from code review audit (May 14).
Pre-deploy: verify 907015507 classid assignment against Минстрой
official NSI table; reassign and re-run migration if needed.
397 lines
24 KiB
PL/PgSQL
397 lines
24 KiB
PL/PgSQL
-- 87_engineering_networks_191fz.sql
|
||
-- Engineering Networks schema по 191-ФЗ (Сводный план наземных и подземных коммуникаций)
|
||
-- Source: QGIS.zip Минстроя Свердл (https://old-minstroy.midural.ru/uploads/2021/05/QGIS.zip)
|
||
-- Extracted: 2026-05-12 (via Communication.qgz reverse-engineering)
|
||
-- See vault/research/Engineering_Networks_Schema_191FZ_May12.md
|
||
--
|
||
-- Deploy order: apply after 86_v_bucket_success_score.sql (no dependencies on 85_pzz_zones_ekb.sql)
|
||
-- Renamed from 85_engineering_networks_191fz.sql to avoid NN collision with existing 85_pzz_zones_ekb.sql
|
||
-- Dependencies: PostGIS extension, spatial_ref_sys table
|
||
|
||
BEGIN;
|
||
|
||
-- ============ МСК-66 — официальная проекция Свердловской области ============
|
||
-- Извлечена из <projectCrs> в Communication.qgs (Минстрой Свердл)
|
||
-- Описание: Местная Система Координат Свердловской области (МСК-66)
|
||
-- Эллипсоид: Krassovsky 1942
|
||
-- Центральный меридиан: 60.05° E
|
||
-- Используется для ВСЕХ кадастровых/градостроительных документов Свердл
|
||
INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext)
|
||
VALUES (
|
||
100000,
|
||
'USER',
|
||
100000,
|
||
'+proj=tmerc +lat_0=0 +lon_0=60.05 +k=1 +x_0=1500000 +y_0=-5911057.63 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs',
|
||
'PROJCS["MSK-66",GEOGCS["Krassovsky 1942",DATUM["D_Krassovsky_1942",SPHEROID["Krassovsky_1942",6378245,298.3],TOWGS84[23.92,-141.27,-80.9,0,0.35,0.82,-0.12]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",60.05],PARAMETER["scale_factor",1],PARAMETER["false_easting",1500000],PARAMETER["false_northing",-5911057.63],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]'
|
||
)
|
||
ON CONFLICT (srid) DO UPDATE SET
|
||
proj4text = EXCLUDED.proj4text,
|
||
srtext = EXCLUDED.srtext;
|
||
-- Usage: ST_Transform(geom, 100000) для МСК-66, или ST_Transform(geom_msk66, 4326) обратно в WGS84
|
||
|
||
-- ============ ENUMs ============
|
||
DO $$ BEGIN
|
||
CREATE TYPE network_category AS ENUM ('thermal','water','sewerage','gas','electricity','transport','auxiliary');
|
||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||
|
||
DO $$ BEGIN
|
||
CREATE TYPE network_object_kind AS ENUM ('pipeline','facility_point','facility_polygon','aux_object','building');
|
||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||
|
||
DO $$ BEGIN
|
||
CREATE TYPE ground_position AS ENUM ('on_ground','above','underground','embanked','underwater');
|
||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||
|
||
-- ============ REFERENCE TABLES ============
|
||
|
||
CREATE TABLE IF NOT EXISTS eng_ref_classid (
|
||
classid CHAR(9) PRIMARY KEY,
|
||
category network_category NOT NULL,
|
||
kind network_object_kind NOT NULL,
|
||
name TEXT NOT NULL,
|
||
description TEXT
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS eng_ref_material (
|
||
id SMALLINT PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
is_plastic BOOLEAN NOT NULL DEFAULT FALSE
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS eng_ref_insulation (
|
||
id SMALLINT PRIMARY KEY,
|
||
name TEXT NOT NULL
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS eng_ref_ground_pos (
|
||
id SMALLINT PRIMARY KEY,
|
||
name TEXT NOT NULL
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS eng_ref_pline_type (
|
||
id SMALLINT PRIMARY KEY,
|
||
name TEXT NOT NULL
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS eng_ref_gas_type (
|
||
id SMALLINT PRIMARY KEY,
|
||
name TEXT NOT NULL
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS eng_ref_elline_type (
|
||
id SMALLINT PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
voltage_v INTEGER,
|
||
is_weak_current BOOLEAN NOT NULL DEFAULT FALSE
|
||
);
|
||
|
||
-- ============ MAIN FEATURES TABLE ============
|
||
CREATE TABLE IF NOT EXISTS engineering_networks (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
global_id UUID NOT NULL DEFAULT gen_random_uuid(),
|
||
category network_category NOT NULL,
|
||
kind network_object_kind NOT NULL,
|
||
classid CHAR(9) REFERENCES eng_ref_classid(classid),
|
||
classid_name TEXT,
|
||
name TEXT,
|
||
address TEXT,
|
||
|
||
owner TEXT,
|
||
balance_holder TEXT,
|
||
exploiter TEXT,
|
||
|
||
length_m REAL,
|
||
wear_percent REAL,
|
||
diameter_1_mm INTEGER,
|
||
diameter_2_mm INTEGER,
|
||
material_id SMALLINT REFERENCES eng_ref_material(id),
|
||
insulation_id SMALLINT REFERENCES eng_ref_insulation(id),
|
||
pline_type_id SMALLINT REFERENCES eng_ref_pline_type(id),
|
||
ground_pos_id SMALLINT REFERENCES eng_ref_ground_pos(id),
|
||
voltage_v INTEGER,
|
||
elline_type_id SMALLINT REFERENCES eng_ref_elline_type(id),
|
||
|
||
power_mw REAL,
|
||
fuel_type INTEGER,
|
||
gas_type_id SMALLINT REFERENCES eng_ref_gas_type(id),
|
||
facility_subtype_1 INTEGER,
|
||
facility_subtype_2 INTEGER,
|
||
|
||
status INTEGER,
|
||
is_planned BOOLEAN NOT NULL DEFAULT FALSE,
|
||
source_type INTEGER,
|
||
source TEXT,
|
||
source_municipality TEXT,
|
||
source_dataset_id TEXT,
|
||
|
||
geom GEOMETRY(Geometry, 4326),
|
||
note TEXT,
|
||
fetched_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
||
UNIQUE(global_id)
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS gist_eng_networks_geom ON engineering_networks USING GIST(geom);
|
||
CREATE INDEX IF NOT EXISTS idx_eng_networks_category ON engineering_networks(category);
|
||
CREATE INDEX IF NOT EXISTS idx_eng_networks_classid ON engineering_networks(classid);
|
||
CREATE INDEX IF NOT EXISTS idx_eng_networks_municipality ON engineering_networks(source_municipality);
|
||
|
||
-- ============ SEED DATA ============
|
||
-- CLASSID NSI classifiers (extracted from official Минстрой Свердл шаблон)
|
||
INSERT INTO eng_ref_classid (classid, category, kind, name) VALUES
|
||
('901010100', 'thermal', 'facility_point', 'Источник тепловой энергии'),
|
||
('901010200', 'thermal', 'facility_point', 'Центральный тепловой пункт (ЦТП)'),
|
||
('901010300', 'thermal', 'facility_point', 'Индивидуальный тепловой пункт (ИТП)'),
|
||
('901010400', 'thermal', 'facility_point', 'Тепловая перекачивающая насосная станция (ТПНС)'),
|
||
('901010500', 'thermal', 'facility_point', 'Стационарная модульная котельная'),
|
||
('901020100', 'thermal', 'pipeline', 'Теплопровод магистральный'),
|
||
('901020200', 'thermal', 'pipeline', 'Теплопровод распределительный (квартальный)'),
|
||
('901020300', 'thermal', 'pipeline', 'Ответвления теплопровода'),
|
||
('901020400', 'thermal', 'pipeline', 'Байпасные трубопроводы'),
|
||
('901020500', 'thermal', 'pipeline', 'Паропровод'),
|
||
('901020600', 'thermal', 'pipeline', 'Конденсатопровод'),
|
||
('901020700', 'thermal', 'pipeline', 'Попутный дренаж'),
|
||
('902010100', 'water', 'facility_point', 'Водозаборное сооружение'),
|
||
('902010200', 'water', 'facility_point', 'Очистное сооружение'),
|
||
('902010300', 'water', 'facility_point', 'Насосная станция'),
|
||
('902010400', 'water', 'facility_point', 'Водонапорная башня'),
|
||
('902010500', 'water', 'facility_point', 'Резервуар'),
|
||
('902010600', 'water', 'facility_point', 'Пневматическая установка'),
|
||
('902010700', 'water', 'facility_point', 'Распределительные пункты (на водоводах)'),
|
||
('902020100', 'water', 'pipeline', 'Хозяйственно-питьевой'),
|
||
('902020200', 'water', 'pipeline', 'Производственный'),
|
||
('902020300', 'water', 'pipeline', 'Противопожарный'),
|
||
('902020400', 'water', 'pipeline', 'Объединенный'),
|
||
('903010100', 'sewerage', 'facility_point', 'Очистные сооружения'),
|
||
('903010200', 'sewerage', 'facility_point', 'Канализационная насосная станция'),
|
||
('903010300', 'sewerage', 'facility_point', 'Подземный резервуар'),
|
||
('903010400', 'sewerage', 'facility_point', 'Разделительная камера'),
|
||
('903020100', 'sewerage', 'pipeline', 'Хозяйственно-бытовая'),
|
||
('903020200', 'sewerage', 'pipeline', 'Производственная'),
|
||
('903020300', 'sewerage', 'pipeline', 'Дождевая открытая'),
|
||
('903020400', 'sewerage', 'pipeline', 'Дождевая закрытая'),
|
||
('903020500', 'sewerage', 'pipeline', 'Производственно-дождевая'),
|
||
('903020600', 'sewerage', 'pipeline', 'Производственно- бытовая'),
|
||
('903020700', 'sewerage', 'pipeline', 'Дренажная'),
|
||
('904010100', 'gas', 'facility_point', 'Источник газа'),
|
||
('904010200', 'gas', 'facility_point', 'Сепаратор'),
|
||
('904010300', 'gas', 'facility_point', 'Компрессорная станция'),
|
||
('904010400', 'gas', 'facility_point', 'ГРС (газорегуляторная станция)'),
|
||
('904010500', 'gas', 'facility_point', 'ГРП (газорегуляторные пункты)'),
|
||
('904010600', 'gas', 'facility_point', 'КИП (контрольно-измерительные пункты)'),
|
||
('904010700', 'gas', 'facility_point', 'Катодные станции электрохимзащиты'),
|
||
('904010800', 'gas', 'facility_point', 'Газгольдерная станция'),
|
||
('904010900', 'gas', 'facility_point', 'Подземные хранилища газа'),
|
||
('904020100', 'gas', 'pipeline', 'Газопровод высокого давления I категории (от 0,6 до 1,2 МПа)'),
|
||
('904020200', 'gas', 'pipeline', 'Газопровод высокого давления II категории (выше 0,3 до 0,6 МПа)'),
|
||
('904030300', 'gas', 'pipeline', 'Газопровод среднего давления (выше 0,005 до 0,3 МПа),'),
|
||
('904040400', 'gas', 'pipeline', 'Газопровод низкого давления (до 0,005 МПа);'),
|
||
('905010100', 'electricity', 'facility_point', 'Трансформаторная подстанция (ТП)'),
|
||
('905010200', 'electricity', 'facility_point', 'Распределительный пункт (РП)'),
|
||
('905010300', 'electricity', 'facility_point', 'Распределительное устройство (РУ)'),
|
||
('905010400', 'electricity', 'facility_point', 'АВР (автоматический ввод резерва)'),
|
||
('905010500', 'electricity', 'facility_point', 'Резервный источник питания (КТП –комплектная ТП)'),
|
||
('905010600', 'electricity', 'facility_point', 'Базовая станция сети подвижной связи'),
|
||
('905010700', 'electricity', 'facility_point', 'Узел телефонной связи'),
|
||
('905010800', 'electricity', 'facility_point', 'Телефонная станция'),
|
||
('905010900', 'electricity', 'facility_point', 'Радиорелейная вышка'),
|
||
('905011000', 'electricity', 'facility_point', 'Узел автоматической коммутации'),
|
||
('905011100', 'electricity', 'facility_point', 'Радиостанция'),
|
||
('905020100', 'electricity', 'pipeline', 'Сети сильных токов высокого напряжения (>1000В)'),
|
||
('905020200', 'electricity', 'pipeline', 'Сети сильных токов низкого напряжения (≤1000В)'),
|
||
('905020300', 'electricity', 'pipeline', 'Слаботочные сети (информационные)(телеграф, автоматические телефонные станции,): бытового назначения, коммерческие'),
|
||
('906010100', 'transport', 'pipeline', 'Нефтепроводы'),
|
||
('906010200', 'transport', 'pipeline', 'Нефтепродуктопроводы'),
|
||
('906010300', 'transport', 'pipeline', 'Трубопроводы для транспортировки твердых материалов'),
|
||
('906010400', 'transport', 'pipeline', 'Трубопроводы специального назначения'),
|
||
('907040100', 'auxiliary', 'building', 'Контуры зданий и сооружений'),
|
||
('907010100', 'auxiliary', 'aux_object', 'Аппаратура, от повышения давления (на водоводах)'),
|
||
('907010200', 'auxiliary', 'aux_object', 'Водонапорная колонн'),
|
||
('907010300', 'auxiliary', 'aux_object', 'Водоразборная колонка'),
|
||
('907010400', 'auxiliary', 'aux_object', 'Воздуходувная станция'),
|
||
('907010500', 'auxiliary', 'aux_object', 'Воздушный колпак'),
|
||
('907010600', 'auxiliary', 'aux_object', 'Выпуск'),
|
||
('907010700', 'auxiliary', 'aux_object', 'Гильза'),
|
||
('907010800', 'auxiliary', 'aux_object', 'Грозозащитный трос'),
|
||
('907010900', 'auxiliary', 'aux_object', 'Дождеприемник'),
|
||
('907011000', 'auxiliary', 'aux_object', 'Дюкер'),
|
||
('907011100', 'auxiliary', 'aux_object', 'Зажимы изолированные'),
|
||
('907011200', 'auxiliary', 'aux_object', 'Заземление'),
|
||
('907011300', 'auxiliary', 'aux_object', 'Камера'),
|
||
('907011400', 'auxiliary', 'aux_object', 'Ковер'),
|
||
('907011500', 'auxiliary', 'aux_object', 'Кожух для наземного размещения арматуры'),
|
||
('907011600', 'auxiliary', 'aux_object', 'Колодец'),
|
||
('907011700', 'auxiliary', 'aux_object', 'Компенсатор'),
|
||
('907011800', 'auxiliary', 'aux_object', 'Конденсатосборник'),
|
||
('907011900', 'auxiliary', 'aux_object', 'Лазы ( при d > 800мм)'),
|
||
('907012000', 'auxiliary', 'aux_object', 'Лестницы'),
|
||
('907012100', 'auxiliary', 'aux_object', 'Ливнеотвод'),
|
||
('907012200', 'auxiliary', 'aux_object', 'Ливнеспуск (общесплавная система)'),
|
||
('907012300', 'auxiliary', 'aux_object', 'Металлический ковер'),
|
||
('907012400', 'auxiliary', 'aux_object', 'Металлический кожух для наружного размещения запорной арматуры'),
|
||
('907012500', 'auxiliary', 'aux_object', 'Мостики'),
|
||
('907012600', 'auxiliary', 'aux_object', 'Несгораемый шкаф'),
|
||
('907012700', 'auxiliary', 'aux_object', 'Ниша компенсатора'),
|
||
('907012800', 'auxiliary', 'aux_object', 'Опознавательные и сигнальные знаки местонахождения трубопроводов, указатели и предупредительные знаки.'),
|
||
('907012900', 'auxiliary', 'aux_object', 'Опора'),
|
||
('907013000', 'auxiliary', 'aux_object', 'Опора в канале'),
|
||
('907013100', 'auxiliary', 'aux_object', 'Павильон'),
|
||
('907013200', 'auxiliary', 'aux_object', 'Пескоуловитель'),
|
||
('907013300', 'auxiliary', 'aux_object', 'Плавучая опора'),
|
||
('907013400', 'auxiliary', 'aux_object', 'Подвесные переходы'),
|
||
('907013500', 'auxiliary', 'aux_object', 'Подпиточный пункт'),
|
||
('907013600', 'auxiliary', 'aux_object', 'Пожарный гидрант'),
|
||
('907013700', 'auxiliary', 'aux_object', 'Поливочный кран'),
|
||
('907013800', 'auxiliary', 'aux_object', 'Противопожарные средства'),
|
||
('907013900', 'auxiliary', 'aux_object', 'Противоэрозионные и защитные сооружения трубопроводов'),
|
||
('907014000', 'auxiliary', 'aux_object', 'Разгрузочная камера'),
|
||
('907014100', 'auxiliary', 'aux_object', 'Разрядник'),
|
||
('907014200', 'auxiliary', 'aux_object', 'Ревизионный люк'),
|
||
('907014300', 'auxiliary', 'aux_object', 'Роликовые дорожки с якорями'),
|
||
('907014400', 'auxiliary', 'aux_object', 'Сигнальная лента'),
|
||
('907014500', 'auxiliary', 'aux_object', 'Сливная станция'),
|
||
('907014600', 'auxiliary', 'aux_object', 'Снегоплавильный пункт'),
|
||
('907014700', 'auxiliary', 'aux_object', 'Средства телемеханики трубопроводов'),
|
||
('907014800', 'auxiliary', 'aux_object', 'Стационарная площадка для обслуживания'),
|
||
('907014900', 'auxiliary', 'aux_object', 'Стояка с пожарными кранами'),
|
||
('907015000', 'auxiliary', 'aux_object', 'Теплофикационная камера'),
|
||
('907015100', 'auxiliary', 'aux_object', 'Упоры'),
|
||
('907015200', 'auxiliary', 'aux_object', 'Установка электрохимической защиты газопроводов от коррозии'),
|
||
('907015300', 'auxiliary', 'aux_object', 'Футляр'),
|
||
('907015400', 'auxiliary', 'aux_object', 'Канал для прокладки коммуникаций'),
|
||
('907015500', 'auxiliary', 'aux_object', 'Опоры линий электропередач'),
|
||
('907015501', 'auxiliary', 'aux_object', 'Опора деревянная (столб)'),
|
||
('907015502', 'auxiliary', 'aux_object', 'Опора деревянная (ферма)'),
|
||
('907015503', 'auxiliary', 'aux_object', 'Опора деревянная с подкосинами или оттяжками'),
|
||
('907015504', 'auxiliary', 'aux_object', 'Опора металлическая (столб)'),
|
||
('907015507', 'auxiliary', 'aux_object', 'Опора железобетонная (столб)'), -- assigned by review; 907015507 fills gap between 906 and 508; verify with Минстрой NSI table
|
||
('907015505', 'auxiliary', 'aux_object', 'Опора металлическая (ферма)'),
|
||
('907015506', 'auxiliary', 'aux_object', 'Опора металлическая (фермовый столб))'),
|
||
('907015508', 'auxiliary', 'aux_object', 'Опора железобетонная (ферма)'),
|
||
('907015600', 'auxiliary', 'aux_object', 'Дополнительные объекты на на опорах линии электропередач'),
|
||
('907015601', 'auxiliary', 'aux_object', 'Молниеотводы (на столбах)'),
|
||
('907015602', 'auxiliary', 'aux_object', 'Фонати электрические (на столбах)'),
|
||
('907015603', 'auxiliary', 'aux_object', 'Часы электрические (на столбах)'),
|
||
('907015604', 'auxiliary', 'aux_object', 'Прожекторы (на столбах)'),
|
||
('907015605', 'auxiliary', 'aux_object', 'Трансформаторы (на столбах)???'),
|
||
('907015606', 'auxiliary', 'aux_object', 'Мачты и башни радио и телевизионные, вышки радиорелейные и ретрансляторы'),
|
||
('907020000', 'auxiliary', 'aux_object', 'Особая точка')
|
||
ON CONFLICT (classid) DO UPDATE SET name=EXCLUDED.name;
|
||
|
||
-- Pipe materials (13 types)
|
||
INSERT INTO eng_ref_material (id, name, is_plastic) VALUES
|
||
(1, 'Сталь', FALSE),
|
||
(2, 'Чугун', FALSE),
|
||
(3, 'Высокопрочный чугун с шаровидным графитом', FALSE),
|
||
(4, 'Металлополимер', TRUE),
|
||
(5, 'Стеклопластик', TRUE),
|
||
(6, 'Асбоцемент', FALSE),
|
||
(7, 'Железобетонные напорные', FALSE),
|
||
(8, 'Пластиковые (ПВХ, ПЭ, ПП)', TRUE),
|
||
(9, 'Хризотилцемент', FALSE),
|
||
(10, 'Металлопластик', TRUE),
|
||
(11, 'Керамика', FALSE),
|
||
(12, 'Пластмасса', TRUE),
|
||
(13, 'Резиноткатевые трубы', FALSE)
|
||
ON CONFLICT (id) DO UPDATE SET name=EXCLUDED.name;
|
||
|
||
-- Insulation types (23 types)
|
||
INSERT INTO eng_ref_insulation (id, name) VALUES
|
||
(1, 'Стекловата'),
|
||
(2, 'Базальтовый утеплитель'),
|
||
(3, 'Пенополистирол (пенопласт)'),
|
||
(4, 'Пенополиуретан'),
|
||
(5, 'Сшитый полиэтилен'),
|
||
(6, 'Монолитная оболочка'),
|
||
(7, 'Литая оболочка'),
|
||
(8, 'Засыпные порошки'),
|
||
(9, 'Армопенобетон'),
|
||
(10, 'Минеральная вата'),
|
||
(11, 'Керамзитобетон'),
|
||
(12, 'Перлит'),
|
||
(13, 'Нагревательный кабель'),
|
||
(14, 'Технологическая труба'),
|
||
(15, 'Вспененный полиэтилен'),
|
||
(16, 'Пеноплекс'),
|
||
(17, 'Изопон'),
|
||
(18, 'Керамзит'),
|
||
(19, 'Базальт'),
|
||
(20, 'Фольгоизол'),
|
||
(21, 'Вспененный синтетический каучук'),
|
||
(22, 'Битумная мастика'),
|
||
(23, 'Ленточные из ПВХ и полиэтилена')
|
||
ON CONFLICT (id) DO UPDATE SET name=EXCLUDED.name;
|
||
|
||
-- Ground positions (3 types)
|
||
INSERT INTO eng_ref_ground_pos (id, name) VALUES
|
||
(1, 'Наземное'),
|
||
(2, 'Надземное'),
|
||
(3, 'Подземное')
|
||
ON CONFLICT (id) DO UPDATE SET name=EXCLUDED.name;
|
||
|
||
-- Pipeline placement (5 types)
|
||
INSERT INTO eng_ref_pline_type (id, name) VALUES
|
||
(1, 'Надземный'),
|
||
(2, 'Подземный'),
|
||
(3, 'Наземный'),
|
||
(4, 'Наземный в обваловании'),
|
||
(5, 'Подводный')
|
||
ON CONFLICT (id) DO UPDATE SET name=EXCLUDED.name;
|
||
|
||
-- Gas types (10 types)
|
||
INSERT INTO eng_ref_gas_type (id, name) VALUES
|
||
(1, 'Природный газ'),
|
||
(2, 'Попутный нефтяной газ (ПНГ)'),
|
||
(3, 'Смесь природного газа и попутного нефтяного газа (ПНГ)'),
|
||
(4, 'Доменный газ'),
|
||
(5, 'Коксовый газ'),
|
||
(7, 'Сжиженный углеводородный'),
|
||
(8, 'искусственный'),
|
||
(9, 'Сланцевый'),
|
||
(10, 'Генераторный'),
|
||
(11, 'Сухой отбензиненный')
|
||
ON CONFLICT (id) DO UPDATE SET name=EXCLUDED.name;
|
||
|
||
-- Electricity line types (18 voltage levels + signal)
|
||
INSERT INTO eng_ref_elline_type (id, name, voltage_v, is_weak_current) VALUES
|
||
(1, 'Сеть Ультравысокого напряжения 750, 1150,1500кВ', 1500000, FALSE),
|
||
(2, 'Сеть Сверхвысокого напряжения 750,500,330кВ', 750000, FALSE),
|
||
(3, 'Сеть Высокого напряжения (ВН) 220,150,110 кВ', 220000, FALSE),
|
||
(4, 'Сеть Среднего первого напряжения (СН-1) 35кВ', 35000, FALSE),
|
||
(5, 'Сеть Среднего второго напряжения (СН-2) 20,10,6,1 кВ', 20000, FALSE),
|
||
(6, 'Сеть напряжения 0,38кВ', 380, FALSE),
|
||
(7, 'Сеть напряжения 0,2кВ', 200, FALSE),
|
||
(8, 'Сеть напряжения 0,11кВ', 110, FALSE),
|
||
(9, 'Телефонная линия (бытовая)', NULL, TRUE),
|
||
(10, 'Интернет (бытовая)', NULL, TRUE),
|
||
(11, 'Теле-радиовещание (бытовая)', NULL, TRUE),
|
||
(12, 'Домофония (бытовая)', NULL, TRUE),
|
||
(13, 'Сигнализация (бытовая)', NULL, TRUE),
|
||
(14, 'Стереосистемы (бытовая)', NULL, TRUE),
|
||
(15, 'Пожарная безопасность (коммерческая)', NULL, TRUE),
|
||
(16, 'Локально-вычислительная сеть ЛВС(коммерческая)', NULL, TRUE),
|
||
(17, 'Автоматизация подсчета энергоресурсов. (коммерческая)', NULL, TRUE),
|
||
(18, 'Внутрипроизводственная система оповещения. (коммерческая)', NULL, TRUE)
|
||
ON CONFLICT (id) DO UPDATE SET name=EXCLUDED.name;
|
||
|
||
COMMIT;
|
||
|
||
-- Migration complete:
|
||
-- • МСК-66 (SRID 100000) для PostGIS ST_Transform
|
||
-- • 137 NSI CLASSID classifiers
|
||
-- • 13 pipe materials
|
||
-- • 23 insulation types
|
||
-- • 5 pipeline placements (включая подводный)
|
||
-- • 10 gas types
|
||
-- • 18 ЛЭП voltage levels (8 power + 10 weak-current)
|
||
-- • 3 ground positions
|
||
-- • main engineering_networks table + GIST + BTREE indexes
|
||
--
|
||
-- Following NSI hierarchy:
|
||
-- 901xxxxxxx — Тепло (5 facility + 7 pipeline types)
|
||
-- 902xxxxxxx — Вода (7 facility + 4 pipeline)
|
||
-- 903xxxxxxx — Канализация (4 facility + 7 pipeline)
|
||
-- 904xxxxxxx — Газ (9 facility + 4 pipeline)
|
||
-- 905xxxxxxx — Электро + связь (11 facility + 3 line types)
|
||
-- 906xxxxxxx — Транспорт жидкостей (4 pipeline)
|
||
-- 907xxxxxxx — Допобъекты (80+ subtypes) + здания
|