From 8803d41c2924807339727939331e26168771a7c3 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sun, 7 Jun 2026 17:38:23 +0300 Subject: [PATCH] =?UTF-8?q?feat(sf):=20=D0=BF=D0=BE=D0=B4=D0=B7=D0=BE?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=9F=D0=90=D0=A2=20=D0=9A=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=86=D0=BE=D0=B2=D0=BE=20=D0=B8=D0=B7=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=B0=20367-=D0=9F=20=E2=86=92=20pat=5Fsubzo?= =?UTF-8?q?nes=20(#1065)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/services/site_finder/pat_lookup.py | 65 + backend/app/workers/celery_app.py | 1 + .../app/workers/tasks/pat_subzones_load.py | 365 + .../services/site_finder/test_pat_subzones.py | 268 + data/pat/koltsovo_367p_subzones.json | 9130 +++++++++++++++++ data/sql/142_pat_subzones.sql | 60 + 6 files changed, 9889 insertions(+) create mode 100644 backend/app/services/site_finder/pat_lookup.py create mode 100644 backend/app/workers/tasks/pat_subzones_load.py create mode 100644 backend/tests/services/site_finder/test_pat_subzones.py create mode 100644 data/pat/koltsovo_367p_subzones.json create mode 100644 data/sql/142_pat_subzones.sql diff --git a/backend/app/services/site_finder/pat_lookup.py b/backend/app/services/site_finder/pat_lookup.py new file mode 100644 index 00000000..32b1f6d1 --- /dev/null +++ b/backend/app/services/site_finder/pat_lookup.py @@ -0,0 +1,65 @@ +"""ПАТ-lookup для site-finder analyze (#1065 / #1067). + +Читает pat_subzones и возвращает подзоны ПАТ, пересекающие переданный участок. +Graceful: если таблица ещё не задеплоена или БД недоступна — возвращает пустой список. +Wiring в analyze_parcel — follow-up (не в этом PR). +""" + +from __future__ import annotations + +import logging +from typing import Any + +from sqlalchemy import text +from sqlalchemy.exc import OperationalError, ProgrammingError +from sqlalchemy.orm import Session + +logger = logging.getLogger(__name__) + +# ST_Intersects к pat_subzones, GIST idx_pat_subzones_geom. +# Исключаем subzone_no=0 (aggregate_outline) — клиент получает конкретные подзоны 1..6. +_PAT_INTERSECTS_SQL = text( + """ + SELECT subzone_no, name, restriction, aerodrome + FROM pat_subzones + WHERE subzone_no > 0 + AND ST_Intersects(geom, ST_GeomFromText(CAST(:parcel_wkt AS text), 4326)) + ORDER BY subzone_no + """ +) + + +def parcel_pat_subzones(db: Session, parcel_wkt: str | None) -> list[dict[str, Any]]: + """Подзоны ПАТ, пересекающие участок. + + Args: + db: SQLAlchemy-сессия. + parcel_wkt: геометрия участка WKT (EPSG:4326). None → пустой результат. + + Returns: + Список dict [{subzone_no, name, restriction, aerodrome}] отсортированный + по subzone_no. Пустой список при отсутствии пересечений, ошибке БД + или недеплоенной таблице. + """ + if not parcel_wkt: + return [] + + try: + rows = db.execute(_PAT_INTERSECTS_SQL, {"parcel_wkt": parcel_wkt}).mappings().all() + except (OperationalError, ProgrammingError) as exc: + # Таблица ещё не задеплоена / структура изменилась — graceful degrade. + logger.warning("parcel_pat_subzones: pat_subzones недоступна, skip: %s", exc) + return [] + + return [ + { + "subzone_no": r["subzone_no"], + "name": r["name"], + "restriction": r["restriction"], + "aerodrome": r["aerodrome"], + } + for r in rows + ] + + +__all__ = ["parcel_pat_subzones"] diff --git a/backend/app/workers/celery_app.py b/backend/app/workers/celery_app.py index 658b0c7f..b03bb4b7 100644 --- a/backend/app/workers/celery_app.py +++ b/backend/app/workers/celery_app.py @@ -75,6 +75,7 @@ celery_app = Celery( "app.workers.tasks.ekb_ppt_tep_sync", "app.workers.tasks.krt_geometry_sync", "app.workers.tasks.okn_objects_sync", + "app.workers.tasks.pat_subzones_load", ], ) celery_app.conf.timezone = "Europe/Moscow" diff --git a/backend/app/workers/tasks/pat_subzones_load.py b/backend/app/workers/tasks/pat_subzones_load.py new file mode 100644 index 00000000..a402736e --- /dev/null +++ b/backend/app/workers/tasks/pat_subzones_load.py @@ -0,0 +1,365 @@ +"""Celery task: загрузка подзон ПАТ Кольцово из JSON-файла координат (#1065 / #1067). + +Фаза-2 пайплайна: Фаза-1 (извлечение координат из Приказа 367-П) уже выполнена — +файл data/pat/koltsovo_367p_subzones.json содержит точки в МСК-66 зона 1. + +Алгоритм: +1. Читает JSON из data/pat/koltsovo_367p_subzones.json (путь относительно repo root). +2. Для каждой подзоны собирает секторы: внешние → отдельные Polygon-ы, + внутренние (label содержит «внутренн») → дырки в предшествующем внешнем Polygon-е. +3. Репроецирует МСК-66 → WGS84 через _MSK66_TO_WGS84 (always_xy=True): + point=[X, Y] где X=northing, Y=easting → transform(easting=Y, northing=X). +4. shapely.make_valid, union → MultiPolygon, UPSERT в pat_subzones. +5. Логирует ST_IsValid, bbox-центроид (проверка «в районе Кольцово»), + сравнение площади union подзон vs aggregate_outline. + +Beat не нужен — статика, задача запускается вручную: один раз после деплоя. +""" + +from __future__ import annotations + +import json +import logging +import pathlib +from typing import Any + +from pyproj import CRS, Transformer +from shapely import make_valid +from shapely.geometry import MultiPolygon, Polygon +from shapely.ops import unary_union +from sqlalchemy import text + +from app.workers.celery_app import celery_app + +logger = logging.getLogger(__name__) + +# ── МСК-66 → WGS84 (те же параметры что в ekburg_permits.py) ──────────────── +_MSK66_PROJ4 = ( + "+proj=tmerc +lat_0=0 +lon_0=60 +k=1" + " +x_0=1496944 +y_0=-5911077" + " +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12" + " +units=m +no_defs" +) +_MSK66_TO_WGS84: Transformer = Transformer.from_crs( + CRS.from_proj4(_MSK66_PROJ4), + CRS.from_epsg(4326), + always_xy=True, +) + +# bbox Кольцово (ЮВ от ЕКБ): lon 60.5..61.2, lat 56.5..57.0 +_KOLTSOVO_LON_MIN = 60.5 +_KOLTSOVO_LON_MAX = 61.2 +_KOLTSOVO_LAT_MIN = 56.5 +_KOLTSOVO_LAT_MAX = 57.0 + +# Путь к JSON относительно repo root (backend/../data/pat/…) +_REPO_ROOT = pathlib.Path(__file__).resolve().parents[4] +_JSON_PATH = _REPO_ROOT / "data" / "pat" / "koltsovo_367p_subzones.json" + +_SOURCE = "Приказ Росавиации № 367-П от 02.06.2023 (ред. Приказа Росавиации от 27.10.2025 № 804-П)" + +# Ключевые слова для определения внутренних (hole) секторов +_HOLE_KEYWORDS = ("внутренн", "internal", "исключ") + + +def _is_hole_sector(label: str | None) -> bool: + """Возвращает True если сектор является внутренней границей (дыркой).""" + if not label: + return False + lbl = label.lower() + return any(kw in lbl for kw in _HOLE_KEYWORDS) + + +def _reproject_ring(points: list[list[float]]) -> list[tuple[float, float]]: + """МСК-66 [X=northing, Y=easting] → (lon, lat) WGS84 для каждой точки. + + always_xy=True → transform принимает (x=easting, y=northing). + """ + coords: list[tuple[float, float]] = [] + for pt in points: + northing = pt[0] + easting = pt[1] + lon, lat = _MSK66_TO_WGS84.transform(easting, northing) + coords.append((lon, lat)) + return coords + + +def _close_ring(coords: list[tuple[float, float]]) -> list[tuple[float, float]]: + """Замкнуть кольцо если первая и последняя точки не совпадают.""" + if coords and coords[0] != coords[-1]: + coords = [*coords, coords[0]] + return coords + + +def _build_subzone_geometry(sectors: list[dict[str, Any]]) -> MultiPolygon: + """Строит MultiPolygon подзоны из списка секторов. + + Алгоритм обхода: + - Встретили внешний сектор → начинаем новый Polygon (exterior). + - Встретили внутренний сектор → добавляем hole к последнему внешнему Polygon-у. + - Если нет ни одного внешнего — все секторы трактуются как exterior. + + Returns MultiPolygon (валидный через make_valid + unary_union). + """ + polys: list[Polygon] = [] + current_exterior: list[tuple[float, float]] | None = None + current_holes: list[list[tuple[float, float]]] = [] + + def flush_current() -> None: + """Сохранить накопленный exterior+holes как Polygon.""" + nonlocal current_exterior, current_holes + if current_exterior is None: + return + ext = _close_ring(current_exterior) + holes = [_close_ring(h) for h in current_holes] + poly = Polygon(ext, holes) + poly = make_valid(poly) + if not poly.is_empty: + polys.append(poly) + current_exterior = None + current_holes = [] + + for sector in sectors: + raw_pts: list[list[float]] = sector.get("points", []) + if not raw_pts: + logger.warning("pat_subzones_load: сектор '%s' без точек, пропуск", sector.get("label")) + continue + + coords = _reproject_ring(raw_pts) + label = sector.get("label") + + if _is_hole_sector(label): + # Внутренняя граница — дырка в текущем внешнем контуре + if current_exterior is None: + logger.warning( + "pat_subzones_load: внутренний сектор '%s' без предшествующего внешнего" + " — трактуем как exterior", + label, + ) + current_exterior = coords + else: + current_holes.append(coords) + else: + # Новый внешний контур → flush предыдущий + flush_current() + current_exterior = coords + + flush_current() + + if not polys: + logger.error("pat_subzones_load: нет валидных полигонов в секторах") + return MultiPolygon() + + merged = unary_union(polys) + merged = make_valid(merged) + + if merged.geom_type == "Polygon": + merged = MultiPolygon([merged]) + elif merged.geom_type == "MultiPolygon": + pass + else: + # GeometryCollection или иное — пробуем извлечь полигоны + sub_polys = [g for g in merged.geoms if g.geom_type in ("Polygon", "MultiPolygon")] + if sub_polys: + merged = make_valid(unary_union(sub_polys)) + if merged.geom_type == "Polygon": + merged = MultiPolygon([merged]) + + return merged # type: ignore[return-value] + + +def _centroid_in_koltsovo(geom: MultiPolygon) -> bool: + """Проверяет что центроид геометрии находится в bbox Кольцово.""" + if geom.is_empty: + return False + c = geom.centroid + return ( + _KOLTSOVO_LON_MIN <= c.x <= _KOLTSOVO_LON_MAX + and _KOLTSOVO_LAT_MIN <= c.y <= _KOLTSOVO_LAT_MAX + ) + + +@celery_app.task(name="tasks.pat_subzones_load.load_koltsovo_pat") +def load_koltsovo_pat() -> dict[str, Any]: + """Загрузить подзоны ПАТ Кольцово из JSON в таблицу pat_subzones. + + Читает data/pat/koltsovo_367p_subzones.json, строит MultiPolygon для каждой + подзоны, UPSERT через SAVEPOINT. Возвращает dict со статистикой. + """ + from app.core.db import SessionLocal + + logger.info("pat_subzones_load: start, json=%s", _JSON_PATH) + + if not _JSON_PATH.exists(): + raise FileNotFoundError(f"JSON не найден: {_JSON_PATH}") + + with open(_JSON_PATH, encoding="utf-8") as fh: + data: dict[str, Any] = json.load(fh) + + aerodrome: str = data.get("aerodrome", "Екатеринбург (Кольцово)") + subzones_raw: dict[str, Any] = data.get("subzones", {}) + aggregate_pts: list[list[float]] = data.get("aggregate_outline", {}).get("points", []) + + # ── Строим aggregate_outline geometry (subzone_no=0) ───────────────────── + aggregate_geom: MultiPolygon | None = None + if aggregate_pts: + coords = _reproject_ring(aggregate_pts) + coords = _close_ring(coords) + agg_poly = make_valid(Polygon(coords)) + aggregate_geom = MultiPolygon([agg_poly]) if agg_poly.geom_type == "Polygon" else None + if aggregate_geom: + logger.info( + "pat_subzones_load: aggregate_outline area=%.4f deg² centroid_ok=%s", + aggregate_geom.area, + _centroid_in_koltsovo(aggregate_geom), + ) + + results: list[dict[str, Any]] = [] + total_area = 0.0 + + db = SessionLocal() + try: + for sz_no_str, sz_data in subzones_raw.items(): + sz_no = int(sz_no_str) + name: str = sz_data.get("name", f"Подзона {sz_no}") + restriction: str = sz_data.get("restriction", "") + sectors: list[dict[str, Any]] = sz_data.get("sectors", []) + + geom = _build_subzone_geometry(sectors) + is_valid = not geom.is_empty and geom.is_valid + centroid_ok = _centroid_in_koltsovo(geom) + + logger.info( + "pat_subzones_load: subzone=%d name='%s' sectors=%d " + "is_valid=%s centroid_ok=%s area=%.6f", + sz_no, + name, + len(sectors), + is_valid, + centroid_ok, + geom.area, + ) + + if not centroid_ok: + logger.warning( + "pat_subzones_load: subzone=%d centroid ВНЕ Кольцово — " + "возможна ошибка осей/проекции. centroid=(%.5f, %.5f)", + sz_no, + geom.centroid.x if not geom.is_empty else 0, + geom.centroid.y if not geom.is_empty else 0, + ) + + total_area += geom.area + geom_wkt = geom.wkt + + try: + db.execute(text("SAVEPOINT sp_subzone")) + db.execute( + text( + """ + INSERT INTO pat_subzones + (aerodrome, subzone_no, name, restriction, geom, source) + VALUES ( + CAST(:aerodrome AS text), + CAST(:subzone_no AS integer), + CAST(:name AS text), + CAST(:restriction AS text), + ST_Multi(ST_GeomFromText(CAST(:geom_wkt AS text), 4326)), + CAST(:source AS text) + ) + ON CONFLICT (aerodrome, subzone_no) DO UPDATE SET + name = EXCLUDED.name, + restriction = EXCLUDED.restriction, + geom = EXCLUDED.geom, + source = EXCLUDED.source, + fetched_at = now() + """ + ), + { + "aerodrome": aerodrome, + "subzone_no": sz_no, + "name": name, + "restriction": restriction, + "geom_wkt": geom_wkt, + "source": _SOURCE, + }, + ) + db.execute(text("RELEASE SAVEPOINT sp_subzone")) + results.append( + {"subzone_no": sz_no, "is_valid": is_valid, "centroid_ok": centroid_ok} + ) + except Exception as exc: + db.execute(text("ROLLBACK TO SAVEPOINT sp_subzone")) + logger.error("pat_subzones_load: subzone=%d UPSERT failed: %s", sz_no, exc) + raise + + # ── UPSERT aggregate_outline (subzone_no=0) ────────────────────────── + if aggregate_geom is not None: + try: + db.execute(text("SAVEPOINT sp_aggregate")) + db.execute( + text( + """ + INSERT INTO pat_subzones + (aerodrome, subzone_no, name, restriction, geom, source) + VALUES ( + CAST(:aerodrome AS text), + 0, + 'Общий контур ПАТ', + '', + ST_Multi(ST_GeomFromText(CAST(:geom_wkt AS text), 4326)), + CAST(:source AS text) + ) + ON CONFLICT (aerodrome, subzone_no) DO UPDATE SET + geom = EXCLUDED.geom, + source = EXCLUDED.source, + fetched_at = now() + """ + ), + { + "aerodrome": aerodrome, + "geom_wkt": aggregate_geom.wkt, + "source": _SOURCE, + }, + ) + db.execute(text("RELEASE SAVEPOINT sp_aggregate")) + logger.info("pat_subzones_load: aggregate_outline upserted (subzone_no=0)") + except Exception as exc: + db.execute(text("ROLLBACK TO SAVEPOINT sp_aggregate")) + logger.error("pat_subzones_load: aggregate_outline UPSERT failed: %s", exc) + raise + + db.commit() + except Exception: + db.rollback() + raise + finally: + db.close() + + # ── Валидация: суммарная площадь подзон vs aggregate_outline ───────────── + if aggregate_geom is not None and aggregate_geom.area > 0: + ratio = total_area / aggregate_geom.area + if ratio < 0.5 or ratio > 5.0: + logger.warning( + "pat_subzones_load: суммарная площадь подзон (%.4f) расходится " + "с aggregate_outline (%.4f) в %.1fx — возможная ошибка осей/проекции", + total_area, + aggregate_geom.area, + ratio, + ) + else: + logger.info( + "pat_subzones_load: total_area=%.4f aggregate_area=%.4f ratio=%.2fx OK", + total_area, + aggregate_geom.area, + ratio, + ) + + summary = { + "aerodrome": aerodrome, + "subzones_loaded": len(results), + "results": results, + "total_area_deg2": round(total_area, 6), + } + logger.info("pat_subzones_load: done %s", summary) + return summary diff --git a/backend/tests/services/site_finder/test_pat_subzones.py b/backend/tests/services/site_finder/test_pat_subzones.py new file mode 100644 index 00000000..87cb9e5f --- /dev/null +++ b/backend/tests/services/site_finder/test_pat_subzones.py @@ -0,0 +1,268 @@ +"""Тесты PAT-подзон (#1065 / #1067): +- репроекция координат МСК-66 → WGS84 (проверка оси, bbox Кольцово) +- построение MultiPolygon из секторов (внешние + дырки) +- lookup graceful при отсутствии таблицы / WKT +""" + +from __future__ import annotations + +from typing import Any + +import pytest +from pyproj import CRS, Transformer +from shapely.geometry import MultiPolygon +from sqlalchemy.exc import OperationalError + +from app.services.site_finder.pat_lookup import parcel_pat_subzones +from app.workers.tasks.pat_subzones_load import ( + _build_subzone_geometry, + _close_ring, + _is_hole_sector, +) + +# ── Репроекция ────────────────────────────────────────────────────────────── +_MSK66_PROJ4 = ( + "+proj=tmerc +lat_0=0 +lon_0=60 +k=1" + " +x_0=1496944 +y_0=-5911077" + " +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,-0.12" + " +units=m +no_defs" +) +_TR = Transformer.from_crs( + CRS.from_proj4(_MSK66_PROJ4), + CRS.from_epsg(4326), + always_xy=True, +) + +# Известные точки из subzone 1 sector 1 (koltsovo_367p_subzones.json) +# point=[X=northing, Y=easting]; верный порядок: transform(easting=Y, northing=X) +_KOLTSOVO_POINTS = [ + ([381550.81, 1547094.51], (60.818, 56.751)), # первая точка сектора 1 + ([381553.39, 1547585.62], (60.826, 56.752)), # третья + ([381562.21, 1547603.09], (60.827, 56.752)), # четвёртая +] + +_KOLTSOVO_LON_MIN = 60.5 +_KOLTSOVO_LON_MAX = 61.2 +_KOLTSOVO_LAT_MIN = 56.5 +_KOLTSOVO_LAT_MAX = 57.0 + + +@pytest.mark.parametrize("point,expected", _KOLTSOVO_POINTS) +def test_reproject_msk66_to_wgs84_in_koltsovo( + point: list[float], expected: tuple[float, float] +) -> None: + """Репроекция МСК-66 [northing, easting] → WGS84 даёт координаты в bbox Кольцово.""" + northing, easting = point[0], point[1] + lon, lat = _TR.transform(easting, northing) # always_xy: x=easting, y=northing + + # Грубый bbox Кольцово + msg_lon = f"lon={lon:.4f} вне bbox Кольцово [{_KOLTSOVO_LON_MIN}, {_KOLTSOVO_LON_MAX}]" + assert _KOLTSOVO_LON_MIN <= lon <= _KOLTSOVO_LON_MAX, msg_lon + msg_lat = f"lat={lat:.4f} вне bbox Кольцово [{_KOLTSOVO_LAT_MIN}, {_KOLTSOVO_LAT_MAX}]" + assert _KOLTSOVO_LAT_MIN <= lat <= _KOLTSOVO_LAT_MAX, msg_lat + + # Проверяем приблизительное совпадение с ожидаемым (±0.005°) + exp_lon, exp_lat = expected + assert abs(lon - exp_lon) < 0.005, f"lon расхождение: got {lon:.4f} exp {exp_lon}" + assert abs(lat - exp_lat) < 0.005, f"lat расхождение: got {lat:.4f} exp {exp_lat}" + + +def test_axis_swap_gives_wrong_result() -> None: + """Неверный порядок осей (x=northing, y=easting) выдаёт координаты вне Кольцово.""" + northing, easting = 381550.81, 1547094.51 + # Неверный порядок: x=northing, y=easting + lon_wrong, lat_wrong = _TR.transform(northing, easting) + # Должно быть ВНЕ bbox Кольцово + in_koltsovo = ( + _KOLTSOVO_LON_MIN <= lon_wrong <= _KOLTSOVO_LON_MAX + and _KOLTSOVO_LAT_MIN <= lat_wrong <= _KOLTSOVO_LAT_MAX + ) + msg = ( + f"Неверный порядок осей дал координаты в Кольцово: lon={lon_wrong:.4f} lat={lat_wrong:.4f}" + ) + assert not in_koltsovo, msg + + +# ── Построение геометрии ──────────────────────────────────────────────────── + + +def _make_sector(label: str | None, pts: list[tuple[float, float]]) -> dict[str, Any]: + """Вспомогательная фикстура: сектор с точками уже в WGS84-диапазоне. + + Используем точки в МСК-66 которые проецируются в WGS84 Кольцово. + """ + # Конвертируем WGS84-like точки в «псевдо МСК-66» для реального прогона через _build. + # Проще передать реальные МСК-66 точки из JSON. + return { + "label": label, + "points": [list(p) for p in pts], + } + + +# Набор точек в МСК-66 (northing, easting) образующих маленький треугольник около Кольцово +_TRI_OUTER = [ + [381500.0, 1547000.0], + [381600.0, 1547000.0], + [381600.0, 1547100.0], + [381500.0, 1547000.0], # замкнуто +] + +_TRI_HOLE = [ + [381520.0, 1547020.0], + [381560.0, 1547020.0], + [381560.0, 1547060.0], + [381520.0, 1547020.0], +] + + +def test_build_single_exterior_sector() -> None: + """Один внешний сектор → валидный MultiPolygon.""" + sectors = [{"label": "Сектор 1", "points": _TRI_OUTER}] + geom = _build_subzone_geometry(sectors) + assert isinstance(geom, MultiPolygon) + assert not geom.is_empty + assert geom.is_valid + + +def test_build_exterior_with_hole() -> None: + """Внешний сектор + внутренняя граница → Polygon с дыркой.""" + sectors = [ + {"label": "Сектор 1. Внешняя граница", "points": _TRI_OUTER}, + {"label": "Сектор 1. Внутренняя граница 1", "points": _TRI_HOLE}, + ] + geom = _build_subzone_geometry(sectors) + assert isinstance(geom, MultiPolygon) + assert not geom.is_empty + assert geom.is_valid + # Площадь с дыркой должна быть меньше только внешней + outer_only = _build_subzone_geometry([sectors[0]]) + assert geom.area < outer_only.area + + +def test_build_two_exterior_sectors() -> None: + """Два внешних сектора → MultiPolygon из двух Polygon-ов.""" + tri2 = [ + [382000.0, 1548000.0], + [382100.0, 1548000.0], + [382100.0, 1548100.0], + [382000.0, 1548000.0], + ] + sectors = [ + {"label": "Сектор 1", "points": _TRI_OUTER}, + {"label": "Сектор 2", "points": tri2}, + ] + geom = _build_subzone_geometry(sectors) + assert isinstance(geom, MultiPolygon) + assert not geom.is_empty + assert geom.is_valid + + +def test_build_empty_sector_skipped() -> None: + """Сектор без точек не ломает построение.""" + sectors = [ + {"label": "Пустой", "points": []}, + {"label": "Сектор 1", "points": _TRI_OUTER}, + ] + geom = _build_subzone_geometry(sectors) + assert isinstance(geom, MultiPolygon) + assert not geom.is_empty + + +def test_is_hole_sector_detection() -> None: + """Детекция внутренних секторов по label.""" + assert _is_hole_sector("Сектор 1. Внутренняя граница 1") is True + assert _is_hole_sector("Внутренняя граница") is True + assert _is_hole_sector("internal boundary") is True + assert _is_hole_sector("Исключённая территория") is True + assert _is_hole_sector("Сектор 1. Внешняя граница") is False + assert _is_hole_sector("Сектор 1") is False + assert _is_hole_sector(None) is False + + +def test_close_ring_adds_closing_point() -> None: + """Незамкнутое кольцо дополняется копией первой точки.""" + coords = [(1.0, 2.0), (3.0, 4.0), (5.0, 6.0)] + closed = _close_ring(coords) + assert closed[-1] == closed[0] + assert len(closed) == 4 + + +def test_close_ring_already_closed() -> None: + """Уже замкнутое кольцо не изменяется.""" + coords = [(1.0, 2.0), (3.0, 4.0), (1.0, 2.0)] + closed = _close_ring(coords) + assert len(closed) == 3 + + +# ── Lookup graceful ───────────────────────────────────────────────────────── + + +class _Result: + def __init__(self, rows: list[dict[str, Any]]) -> None: + self._rows = rows + + def mappings(self) -> _Result: + return self + + def all(self) -> list[dict[str, Any]]: + return self._rows + + +class _FakeDB: + def __init__( + self, + rows: list[dict[str, Any]] | None = None, + raise_exc: Exception | None = None, + ) -> None: + self._rows = rows or [] + self._raise = raise_exc + + def execute(self, sql: Any, params: dict[str, Any] | None = None) -> _Result: + if self._raise is not None: + raise self._raise + return _Result(self._rows) + + +_WKT = "POLYGON((60.8 56.7, 60.9 56.7, 60.9 56.8, 60.8 56.8, 60.8 56.7))" + + +def test_pat_lookup_returns_subzones() -> None: + rows = [ + { + "subzone_no": 2, + "name": "Вторая подзона", + "restriction": "Ограничения второй подзоны", + "aerodrome": "Екатеринбург (Кольцово)", + } + ] + result = parcel_pat_subzones(_FakeDB(rows), _WKT) + assert len(result) == 1 + assert result[0]["subzone_no"] == 2 + assert result[0]["name"] == "Вторая подзона" + assert result[0]["aerodrome"] == "Екатеринбург (Кольцово)" + + +def test_pat_lookup_empty_when_no_wkt() -> None: + result = parcel_pat_subzones(_FakeDB([{"subzone_no": 1}]), None) + assert result == [] + + +def test_pat_lookup_empty_when_no_intersections() -> None: + result = parcel_pat_subzones(_FakeDB([]), _WKT) + assert result == [] + + +def test_pat_lookup_graceful_table_missing() -> None: + """pat_subzones не задеплоена → пусто, без падения.""" + db = _FakeDB(raise_exc=OperationalError("stmt", {}, Exception("relation does not exist"))) + result = parcel_pat_subzones(db, _WKT) + assert result == [] + + +def test_pat_lookup_graceful_programming_error() -> None: + """ProgrammingError (колонка не существует) → graceful.""" + from sqlalchemy.exc import ProgrammingError + + db = _FakeDB(raise_exc=ProgrammingError("stmt", {}, Exception("column not found"))) + result = parcel_pat_subzones(db, _WKT) + assert result == [] diff --git a/data/pat/koltsovo_367p_subzones.json b/data/pat/koltsovo_367p_subzones.json new file mode 100644 index 00000000..44980cee --- /dev/null +++ b/data/pat/koltsovo_367p_subzones.json @@ -0,0 +1,9130 @@ +{ + "source": "https://www.consultant.ru/document/cons_doc_LAW_453127/", + "order": "Приказ Росавиации № 367-П от 02.06.2023 (ред. Приказа Росавиации от 27.10.2025 № 804-П)", + "aerodrome": "Екатеринбург (Кольцово)", + "crs": "МСК-66 зона 1", + "coord_order": "[X, Y] где X = северное (northing, ~3.7e5..3.9e5), Y = восточное (easting, ~1.5e6..1.58e6)", + "extracted_at": "2026-06-07", + "extraction_method": "programmatic HTML parse (httpx + BeautifulSoup) of Consultant sub-pages", + "subzones": { + "1": { + "name": "Первая подзона", + "restriction": "В границах первой подзоны приаэродромной территории запрещается размещать объекты, не предназначенные для организации и обслуживания воздушного движения и воздушных перевозок, обеспечения взлета, посадки, руления и стоянки воздушных судов.", + "count": 104, + "sectors": [ + { + "label": "Сектор 1", + "count": 97, + "points": [ + [ + 381550.81, + 1547094.51 + ], + [ + 381549.68, + 1547203.44 + ], + [ + 381553.39, + 1547585.62 + ], + [ + 381562.21, + 1547603.09 + ], + [ + 381560.85, + 1547609.7 + ], + [ + 381560.53, + 1547620.94 + ], + [ + 381540.03, + 1547806.76 + ], + [ + 381553.73, + 1548009.63 + ], + [ + 381496.56, + 1548130.62 + ], + [ + 381472.9, + 1548126.78 + ], + [ + 381449.24, + 1548122.46 + ], + [ + 381420.91, + 1548118.08 + ], + [ + 381397.38, + 1548116.08 + ], + [ + 381381.45, + 1548105.37 + ], + [ + 381377.59, + 1548105.1 + ], + [ + 381371.4, + 1548083.31 + ], + [ + 381476.92, + 1548083.32 + ], + [ + 381476.92, + 1547847.32 + ], + [ + 381489.31, + 1547830.82 + ], + [ + 381489.32, + 1547731.59 + ], + [ + 381359.62, + 1547731.28 + ], + [ + 381359.62, + 1547768.72 + ], + [ + 381369.32, + 1547783.81 + ], + [ + 381365.55, + 1547925.86 + ], + [ + 381301.4, + 1547925.2 + ], + [ + 381299.99, + 1547933.67 + ], + [ + 381278.71, + 1547932.99 + ], + [ + 381279.34, + 1547918.49 + ], + [ + 381283.55, + 1547916.23 + ], + [ + 381284.62, + 1547876.22 + ], + [ + 381239.92, + 1547818.04 + ], + [ + 381231.85, + 1547814.08 + ], + [ + 381009.56, + 1547808.73 + ], + [ + 381005.22, + 1547807.25 + ], + [ + 381003.8, + 1547811.81 + ], + [ + 381016.39, + 1547938.35 + ], + [ + 380895.74, + 1548003.84 + ], + [ + 380894.08, + 1548082.44 + ], + [ + 380829.38, + 1548078.12 + ], + [ + 380804.38, + 1548378.69 + ], + [ + 380705.4, + 1548379.37 + ], + [ + 380659.73, + 1548360.05 + ], + [ + 380681.79, + 1548145.49 + ], + [ + 380597.83, + 1548132.3 + ], + [ + 380598.28, + 1548121.04 + ], + [ + 380594.38, + 1548016.39 + ], + [ + 380478.08, + 1547975.97 + ], + [ + 380383.09, + 1548052.86 + ], + [ + 380325.84, + 1548297.14 + ], + [ + 380320.27, + 1548325.13 + ], + [ + 380305.85, + 1548586.59 + ], + [ + 380152.22, + 1548579.26 + ], + [ + 380163.08, + 1548378.21 + ], + [ + 380160.85, + 1548328.09 + ], + [ + 380158.08, + 1548306.44 + ], + [ + 380152.64, + 1548274.53 + ], + [ + 380120.58, + 1547816.13 + ], + [ + 380319.85, + 1544572.09 + ], + [ + 380303.32, + 1544456.58 + ], + [ + 380354.31, + 1544429.55 + ], + [ + 380363.24, + 1544292.33 + ], + [ + 380394.83, + 1544144.9 + ], + [ + 380470.86, + 1543790.11 + ], + [ + 380484.29, + 1543657.05 + ], + [ + 380738.32, + 1543889.89 + ], + [ + 380863.3, + 1544003.74 + ], + [ + 380918.54, + 1544053.0 + ], + [ + 380891.56, + 1544477.32 + ], + [ + 380894.0, + 1544817.44 + ], + [ + 381043.28, + 1544818.74 + ], + [ + 381187.94, + 1544824.13 + ], + [ + 381187.7, + 1544923.37 + ], + [ + 381190.59, + 1544938.65 + ], + [ + 381198.76, + 1544951.89 + ], + [ + 381211.13, + 1544961.31 + ], + [ + 381226.06, + 1544965.68 + ], + [ + 381292.58, + 1544964.15 + ], + [ + 381295.23, + 1545140.09 + ], + [ + 381301.81, + 1545297.96 + ], + [ + 381301.27, + 1545396.82 + ], + [ + 381301.12, + 1545411.21 + ], + [ + 381299.1, + 1545611.54 + ], + [ + 381269.81, + 1545611.83 + ], + [ + 381278.54, + 1546494.3 + ], + [ + 381233.69, + 1546494.58 + ], + [ + 381236.92, + 1546907.98 + ], + [ + 381293.63, + 1546909.02 + ], + [ + 381340.4, + 1546908.92 + ], + [ + 381341.32, + 1546981.55 + ], + [ + 381401.24, + 1546991.77 + ], + [ + 381397.38, + 1547014.45 + ], + [ + 381418.7, + 1547025.19 + ], + [ + 381410.46, + 1547089.41 + ], + [ + 381501.99, + 1547096.05 + ], + [ + 381502.63, + 1547091.94 + ], + [ + 381510.9, + 1547092.04 + ], + [ + 381550.81, + 1547094.51 + ] + ] + }, + { + "label": "Сектор 2", + "count": 7, + "points": [ + [ + 380193.14, + 1552901.55 + ], + [ + 379777.25, + 1552875.66 + ], + [ + 379642.53, + 1552867.28 + ], + [ + 379651.96, + 1552706.8 + ], + [ + 379664.37, + 1552495.5 + ], + [ + 380216.52, + 1552528.64 + ], + [ + 380193.14, + 1552901.55 + ] + ] + } + ], + "points": [ + [ + 381550.81, + 1547094.51 + ], + [ + 381549.68, + 1547203.44 + ], + [ + 381553.39, + 1547585.62 + ], + [ + 381562.21, + 1547603.09 + ], + [ + 381560.85, + 1547609.7 + ], + [ + 381560.53, + 1547620.94 + ], + [ + 381540.03, + 1547806.76 + ], + [ + 381553.73, + 1548009.63 + ], + [ + 381496.56, + 1548130.62 + ], + [ + 381472.9, + 1548126.78 + ], + [ + 381449.24, + 1548122.46 + ], + [ + 381420.91, + 1548118.08 + ], + [ + 381397.38, + 1548116.08 + ], + [ + 381381.45, + 1548105.37 + ], + [ + 381377.59, + 1548105.1 + ], + [ + 381371.4, + 1548083.31 + ], + [ + 381476.92, + 1548083.32 + ], + [ + 381476.92, + 1547847.32 + ], + [ + 381489.31, + 1547830.82 + ], + [ + 381489.32, + 1547731.59 + ], + [ + 381359.62, + 1547731.28 + ], + [ + 381359.62, + 1547768.72 + ], + [ + 381369.32, + 1547783.81 + ], + [ + 381365.55, + 1547925.86 + ], + [ + 381301.4, + 1547925.2 + ], + [ + 381299.99, + 1547933.67 + ], + [ + 381278.71, + 1547932.99 + ], + [ + 381279.34, + 1547918.49 + ], + [ + 381283.55, + 1547916.23 + ], + [ + 381284.62, + 1547876.22 + ], + [ + 381239.92, + 1547818.04 + ], + [ + 381231.85, + 1547814.08 + ], + [ + 381009.56, + 1547808.73 + ], + [ + 381005.22, + 1547807.25 + ], + [ + 381003.8, + 1547811.81 + ], + [ + 381016.39, + 1547938.35 + ], + [ + 380895.74, + 1548003.84 + ], + [ + 380894.08, + 1548082.44 + ], + [ + 380829.38, + 1548078.12 + ], + [ + 380804.38, + 1548378.69 + ], + [ + 380705.4, + 1548379.37 + ], + [ + 380659.73, + 1548360.05 + ], + [ + 380681.79, + 1548145.49 + ], + [ + 380597.83, + 1548132.3 + ], + [ + 380598.28, + 1548121.04 + ], + [ + 380594.38, + 1548016.39 + ], + [ + 380478.08, + 1547975.97 + ], + [ + 380383.09, + 1548052.86 + ], + [ + 380325.84, + 1548297.14 + ], + [ + 380320.27, + 1548325.13 + ], + [ + 380305.85, + 1548586.59 + ], + [ + 380152.22, + 1548579.26 + ], + [ + 380163.08, + 1548378.21 + ], + [ + 380160.85, + 1548328.09 + ], + [ + 380158.08, + 1548306.44 + ], + [ + 380152.64, + 1548274.53 + ], + [ + 380120.58, + 1547816.13 + ], + [ + 380319.85, + 1544572.09 + ], + [ + 380303.32, + 1544456.58 + ], + [ + 380354.31, + 1544429.55 + ], + [ + 380363.24, + 1544292.33 + ], + [ + 380394.83, + 1544144.9 + ], + [ + 380470.86, + 1543790.11 + ], + [ + 380484.29, + 1543657.05 + ], + [ + 380738.32, + 1543889.89 + ], + [ + 380863.3, + 1544003.74 + ], + [ + 380918.54, + 1544053.0 + ], + [ + 380891.56, + 1544477.32 + ], + [ + 380894.0, + 1544817.44 + ], + [ + 381043.28, + 1544818.74 + ], + [ + 381187.94, + 1544824.13 + ], + [ + 381187.7, + 1544923.37 + ], + [ + 381190.59, + 1544938.65 + ], + [ + 381198.76, + 1544951.89 + ], + [ + 381211.13, + 1544961.31 + ], + [ + 381226.06, + 1544965.68 + ], + [ + 381292.58, + 1544964.15 + ], + [ + 381295.23, + 1545140.09 + ], + [ + 381301.81, + 1545297.96 + ], + [ + 381301.27, + 1545396.82 + ], + [ + 381301.12, + 1545411.21 + ], + [ + 381299.1, + 1545611.54 + ], + [ + 381269.81, + 1545611.83 + ], + [ + 381278.54, + 1546494.3 + ], + [ + 381233.69, + 1546494.58 + ], + [ + 381236.92, + 1546907.98 + ], + [ + 381293.63, + 1546909.02 + ], + [ + 381340.4, + 1546908.92 + ], + [ + 381341.32, + 1546981.55 + ], + [ + 381401.24, + 1546991.77 + ], + [ + 381397.38, + 1547014.45 + ], + [ + 381418.7, + 1547025.19 + ], + [ + 381410.46, + 1547089.41 + ], + [ + 381501.99, + 1547096.05 + ], + [ + 381502.63, + 1547091.94 + ], + [ + 381510.9, + 1547092.04 + ], + [ + 381550.81, + 1547094.51 + ], + [ + 380193.14, + 1552901.55 + ], + [ + 379777.25, + 1552875.66 + ], + [ + 379642.53, + 1552867.28 + ], + [ + 379651.96, + 1552706.8 + ], + [ + 379664.37, + 1552495.5 + ], + [ + 380216.52, + 1552528.64 + ], + [ + 380193.14, + 1552901.55 + ] + ] + }, + "2": { + "name": "Вторая подзона", + "restriction": "В границах второй подзоны приаэродромной территории запрещается размещать объекты, не предназначенные для обслуживания пассажиров и обработки багажа, грузов и почты, обслуживания воздушных судов, хранения авиационного топлива и заправки воздушных судов, обеспечения энергоснабжения, а также объекты, не относящиеся к инфраструктуре аэропорта.", + "count": 285, + "sectors": [ + { + "label": "Сектор 1. Внешняя граница", + "count": 101, + "points": [ + [ + 381763.56, + 1545117.58 + ], + [ + 381603.64, + 1545118.82 + ], + [ + 381605.97, + 1545417.84 + ], + [ + 381605.17, + 1545442.85 + ], + [ + 381605.88, + 1545534.18 + ], + [ + 381690.08, + 1545536.49 + ], + [ + 381695.11, + 1545530.15 + ], + [ + 381689.34, + 1545626.91 + ], + [ + 381690.63, + 1545687.94 + ], + [ + 381694.01, + 1545775.36 + ], + [ + 381696.19, + 1545820.82 + ], + [ + 381698.23, + 1545857.15 + ], + [ + 381699.69, + 1545889.91 + ], + [ + 381705.08, + 1545930.19 + ], + [ + 381706.3, + 1545971.51 + ], + [ + 381707.13, + 1546012.2 + ], + [ + 381717.63, + 1546011.77 + ], + [ + 381715.68, + 1545898.24 + ], + [ + 381713.04, + 1545812.73 + ], + [ + 381705.48, + 1545590.01 + ], + [ + 381702.53, + 1545530.46 + ], + [ + 381707.56, + 1545536.71 + ], + [ + 381745.6, + 1545537.92 + ], + [ + 381833.44, + 1545539.69 + ], + [ + 381865.87, + 1545541.11 + ], + [ + 381890.89, + 1545524.62 + ], + [ + 381917.07, + 1545554.27 + ], + [ + 381906.19, + 1545970.11 + ], + [ + 381742.46, + 1546056.58 + ], + [ + 381609.97, + 1546057.62 + ], + [ + 381609.87, + 1546044.5 + ], + [ + 381549.07, + 1546044.97 + ], + [ + 381548.7, + 1545997.95 + ], + [ + 381468.01, + 1545998.58 + ], + [ + 381468.56, + 1546069.53 + ], + [ + 381523.17, + 1546070.3 + ], + [ + 381523.15, + 1546068.25 + ], + [ + 381540.05, + 1546068.11 + ], + [ + 381543.78, + 1546545.74 + ], + [ + 381550.28, + 1546545.5 + ], + [ + 381550.79, + 1546611.12 + ], + [ + 381544.36, + 1546611.75 + ], + [ + 381544.54, + 1546642.93 + ], + [ + 381547.46, + 1547016.72 + ], + [ + 381411.12, + 1546993.47 + ], + [ + 381411.12, + 1546993.46 + ], + [ + 381341.32, + 1546981.55 + ], + [ + 381340.4, + 1546908.92 + ], + [ + 381309.38, + 1546909.31 + ], + [ + 381236.92, + 1546907.98 + ], + [ + 381233.69, + 1546494.58 + ], + [ + 381278.54, + 1546494.22 + ], + [ + 381269.81, + 1545611.83 + ], + [ + 381299.1, + 1545611.54 + ], + [ + 381301.27, + 1545396.82 + ], + [ + 381301.81, + 1545297.96 + ], + [ + 381295.23, + 1545140.09 + ], + [ + 381292.58, + 1544964.15 + ], + [ + 381226.06, + 1544965.68 + ], + [ + 381211.13, + 1544961.31 + ], + [ + 381198.76, + 1544951.89 + ], + [ + 381190.59, + 1544938.65 + ], + [ + 381187.7, + 1544923.37 + ], + [ + 381187.94, + 1544824.13 + ], + [ + 381043.28, + 1544818.74 + ], + [ + 380894.0, + 1544817.44 + ], + [ + 380891.56, + 1544477.32 + ], + [ + 380915.42, + 1544102.11 + ], + [ + 380917.09, + 1544108.28 + ], + [ + 380921.22, + 1544109.93 + ], + [ + 380927.6, + 1544129.24 + ], + [ + 380944.09, + 1544178.63 + ], + [ + 380948.37, + 1544198.28 + ], + [ + 380954.41, + 1544207.84 + ], + [ + 380956.53, + 1544208.12 + ], + [ + 380955.79, + 1544217.02 + ], + [ + 380954.42, + 1544216.9 + ], + [ + 380972.86, + 1544270.12 + ], + [ + 380974.95, + 1544277.5 + ], + [ + 381002.17, + 1544334.73 + ], + [ + 381022.4, + 1544374.17 + ], + [ + 381078.72, + 1544479.74 + ], + [ + 381090.22, + 1544491.2 + ], + [ + 381089.38, + 1544495.04 + ], + [ + 381099.36, + 1544507.05 + ], + [ + 381117.93, + 1544530.95 + ], + [ + 381149.73, + 1544566.39 + ], + [ + 381189.58, + 1544605.61 + ], + [ + 381216.75, + 1544630.3 + ], + [ + 381244.37, + 1544654.09 + ], + [ + 381345.16, + 1544737.85 + ], + [ + 381581.69, + 1544939.3 + ], + [ + 381582.28, + 1545015.23 + ], + [ + 381620.78, + 1545014.93 + ], + [ + 381621.13, + 1545059.37 + ], + [ + 381630.11, + 1545056.17 + ], + [ + 381646.0, + 1545052.64 + ], + [ + 381673.74, + 1545050.44 + ], + [ + 381718.6, + 1545055.91 + ], + [ + 381733.35, + 1545068.48 + ], + [ + 381763.56, + 1545117.58 + ] + ] + }, + { + "label": "Сектор 1. Внутренняя граница 1", + "count": 9, + "points": [ + [ + 381513.47, + 1545179.29 + ], + [ + 381337.41, + 1545180.66 + ], + [ + 381334.03, + 1544747.73 + ], + [ + 381338.01, + 1544747.7 + ], + [ + 381569.11, + 1544941.11 + ], + [ + 381570.15, + 1545075.41 + ], + [ + 381496.75, + 1545075.98 + ], + [ + 381512.86, + 1545100.29 + ], + [ + 381513.47, + 1545179.29 + ] + ] + }, + { + "label": "Сектор 1. Внутренняя граница 2", + "count": 5, + "points": [ + [ + 381497.89, + 1545919.69 + ], + [ + 381367.4, + 1545920.71 + ], + [ + 381366.93, + 1545860.96 + ], + [ + 381497.4, + 1545856.84 + ], + [ + 381497.89, + 1545919.69 + ] + ] + }, + { + "label": "Сектор 1. Внутренняя граница 3", + "count": 5, + "points": [ + [ + 381310.99, + 1546140.46 + ], + [ + 381301.2, + 1546140.54 + ], + [ + 381301.05, + 1546121.74 + ], + [ + 381310.85, + 1546121.66 + ], + [ + 381310.99, + 1546140.46 + ] + ] + }, + { + "label": "Сектор 1. Внутренняя граница 4", + "count": 6, + "points": [ + [ + 381470.39, + 1546431.41 + ], + [ + 381470.61, + 1546460.41 + ], + [ + 381428.12, + 1546460.74 + ], + [ + 381423.84, + 1546457.77 + ], + [ + 381423.64, + 1546431.78 + ], + [ + 381470.39, + 1546431.41 + ] + ] + }, + { + "label": "Сектор 1. Внутренняя граница 5", + "count": 7, + "points": [ + [ + 381498.81, + 1546469.3 + ], + [ + 381500.0, + 1546509.38 + ], + [ + 381460.02, + 1546510.56 + ], + [ + 381459.81, + 1546503.56 + ], + [ + 381437.62, + 1546504.22 + ], + [ + 381436.65, + 1546471.13 + ], + [ + 381498.81, + 1546469.3 + ] + ] + }, + { + "label": "Сектор 2", + "count": 17, + "points": [ + [ + 381730.4, + 1546143.84 + ], + [ + 381714.94, + 1546159.51 + ], + [ + 381698.78, + 1546172.36 + ], + [ + 381679.74, + 1546189.61 + ], + [ + 381654.04, + 1546210.44 + ], + [ + 381632.52, + 1546223.97 + ], + [ + 381609.74, + 1546233.95 + ], + [ + 381591.22, + 1546241.12 + ], + [ + 381580.5, + 1546237.05 + ], + [ + 381582.28, + 1546103.43 + ], + [ + 381593.43, + 1546095.56 + ], + [ + 381597.49, + 1546095.55 + ], + [ + 381705.28, + 1546095.05 + ], + [ + 381716.62, + 1546099.3 + ], + [ + 381728.14, + 1546110.76 + ], + [ + 381733.71, + 1546126.25 + ], + [ + 381730.4, + 1546143.84 + ] + ] + }, + { + "label": "Сектор 3", + "count": 10, + "points": [ + [ + 381760.88, + 1547312.2 + ], + [ + 381676.76, + 1547440.16 + ], + [ + 381657.35, + 1547425.76 + ], + [ + 381628.78, + 1547378.09 + ], + [ + 381616.98, + 1547339.26 + ], + [ + 381615.85, + 1547194.29 + ], + [ + 381714.79, + 1547209.6 + ], + [ + 381726.18, + 1547216.83 + ], + [ + 381721.58, + 1547246.22 + ], + [ + 381760.88, + 1547312.2 + ] + ] + }, + { + "label": "Сектор 4. Внешняя граница", + "count": 45, + "points": [ + [ + 381370.83, + 1548332.72 + ], + [ + 381343.95, + 1548338.52 + ], + [ + 381337.38, + 1548336.79 + ], + [ + 381331.0, + 1548338.34 + ], + [ + 381311.2, + 1548343.83 + ], + [ + 381294.26, + 1548349.84 + ], + [ + 381277.67, + 1548355.48 + ], + [ + 381220.04, + 1548373.38 + ], + [ + 381208.62, + 1548381.19 + ], + [ + 381174.91, + 1548392.78 + ], + [ + 381156.99, + 1548389.44 + ], + [ + 381153.41, + 1548388.58 + ], + [ + 380976.18, + 1548354.13 + ], + [ + 380894.08, + 1548082.44 + ], + [ + 380895.74, + 1548003.84 + ], + [ + 381016.39, + 1547938.35 + ], + [ + 381003.8, + 1547811.81 + ], + [ + 381005.22, + 1547807.25 + ], + [ + 381009.56, + 1547808.73 + ], + [ + 381231.85, + 1547814.08 + ], + [ + 381239.92, + 1547818.04 + ], + [ + 381284.62, + 1547876.22 + ], + [ + 381283.55, + 1547916.23 + ], + [ + 381279.34, + 1547918.49 + ], + [ + 381278.71, + 1547932.99 + ], + [ + 381299.99, + 1547933.67 + ], + [ + 381301.4, + 1547925.2 + ], + [ + 381355.1, + 1547925.75 + ], + [ + 381354.44, + 1547958.75 + ], + [ + 381355.21, + 1547977.17 + ], + [ + 381356.58, + 1547985.74 + ], + [ + 381355.06, + 1548007.48 + ], + [ + 381351.19, + 1548030.73 + ], + [ + 381349.19, + 1548057.47 + ], + [ + 381347.47, + 1548083.45 + ], + [ + 381346.49, + 1548135.04 + ], + [ + 381346.34, + 1548160.83 + ], + [ + 381344.89, + 1548172.1 + ], + [ + 381345.0, + 1548186.3 + ], + [ + 381346.32, + 1548188.28 + ], + [ + 381345.81, + 1548254.61 + ], + [ + 381352.12, + 1548277.27 + ], + [ + 381354.77, + 1548292.5 + ], + [ + 381359.12, + 1548308.65 + ], + [ + 381370.83, + 1548332.72 + ] + ] + }, + { + "label": "Сектор 4. Внутренняя граница 1", + "count": 5, + "points": [ + [ + 381243.46, + 1548078.74 + ], + [ + 381219.79, + 1548078.18 + ], + [ + 381220.2, + 1548060.6 + ], + [ + 381243.82, + 1548061.99 + ], + [ + 381243.46, + 1548078.74 + ] + ] + }, + { + "label": "Сектор 4. Внутренняя граница 2", + "count": 10, + "points": [ + [ + 381210.96, + 1548273.42 + ], + [ + 381198.29, + 1548272.53 + ], + [ + 381197.97, + 1548282.1 + ], + [ + 381189.08, + 1548281.8 + ], + [ + 381189.25, + 1548271.88 + ], + [ + 381160.67, + 1548270.42 + ], + [ + 381164.6, + 1548230.12 + ], + [ + 381214.53, + 1548233.86 + ], + [ + 381212.3, + 1548260.88 + ], + [ + 381210.96, + 1548273.42 + ] + ] + }, + { + "label": "Сектор 5", + "count": 65, + "points": [ + [ + 380152.64, + 1548274.53 + ], + [ + 380004.64, + 1547853.79 + ], + [ + 379996.37, + 1547834.3 + ], + [ + 379992.53, + 1547741.09 + ], + [ + 379945.65, + 1547532.37 + ], + [ + 379951.86, + 1547524.95 + ], + [ + 379967.32, + 1547461.85 + ], + [ + 380048.41, + 1547417.95 + ], + [ + 380091.8, + 1547389.06 + ], + [ + 380093.27, + 1547385.23 + ], + [ + 380109.23, + 1547120.38 + ], + [ + 380108.38, + 1547116.37 + ], + [ + 380116.43, + 1546955.54 + ], + [ + 380021.16, + 1546948.97 + ], + [ + 379957.12, + 1546974.21 + ], + [ + 379910.56, + 1546942.25 + ], + [ + 379906.06, + 1546875.65 + ], + [ + 380089.4, + 1546841.09 + ], + [ + 380107.62, + 1546768.66 + ], + [ + 379847.93, + 1546558.68 + ], + [ + 379848.48, + 1546564.25 + ], + [ + 379847.81, + 1546573.04 + ], + [ + 379845.63, + 1546581.58 + ], + [ + 379841.99, + 1546589.62 + ], + [ + 379837.02, + 1546596.9 + ], + [ + 379830.86, + 1546603.2 + ], + [ + 379823.69, + 1546608.35 + ], + [ + 379815.74, + 1546612.16 + ], + [ + 379807.25, + 1546614.54 + ], + [ + 379798.47, + 1546615.42 + ], + [ + 379789.68, + 1546614.75 + ], + [ + 379781.14, + 1546612.56 + ], + [ + 379773.1, + 1546608.92 + ], + [ + 379765.82, + 1546603.95 + ], + [ + 379759.51, + 1546597.79 + ], + [ + 379754.37, + 1546590.62 + ], + [ + 379750.56, + 1546582.67 + ], + [ + 379748.18, + 1546574.18 + ], + [ + 379747.3, + 1546565.41 + ], + [ + 379747.97, + 1546556.61 + ], + [ + 379750.16, + 1546548.07 + ], + [ + 379753.79, + 1546540.04 + ], + [ + 379758.77, + 1546532.76 + ], + [ + 379764.93, + 1546526.45 + ], + [ + 379772.1, + 1546521.3 + ], + [ + 379780.05, + 1546517.49 + ], + [ + 379785.31, + 1546516.02 + ], + [ + 379593.98, + 1546360.99 + ], + [ + 379307.68, + 1546159.84 + ], + [ + 379430.65, + 1545468.35 + ], + [ + 379723.74, + 1545689.83 + ], + [ + 379583.21, + 1545915.93 + ], + [ + 379697.36, + 1546235.08 + ], + [ + 380187.54, + 1545625.76 + ], + [ + 380242.7, + 1544758.76 + ], + [ + 380203.54, + 1544729.3 + ], + [ + 380134.75, + 1544624.76 + ], + [ + 380129.55, + 1544613.33 + ], + [ + 380126.76, + 1544568.98 + ], + [ + 380170.05, + 1544496.39 + ], + [ + 380266.6, + 1544556.61 + ], + [ + 380303.32, + 1544456.58 + ], + [ + 380319.85, + 1544572.09 + ], + [ + 380120.58, + 1547816.13 + ], + [ + 380152.64, + 1548274.53 + ] + ] + } + ], + "points": [ + [ + 381763.56, + 1545117.58 + ], + [ + 381603.64, + 1545118.82 + ], + [ + 381605.97, + 1545417.84 + ], + [ + 381605.17, + 1545442.85 + ], + [ + 381605.88, + 1545534.18 + ], + [ + 381690.08, + 1545536.49 + ], + [ + 381695.11, + 1545530.15 + ], + [ + 381689.34, + 1545626.91 + ], + [ + 381690.63, + 1545687.94 + ], + [ + 381694.01, + 1545775.36 + ], + [ + 381696.19, + 1545820.82 + ], + [ + 381698.23, + 1545857.15 + ], + [ + 381699.69, + 1545889.91 + ], + [ + 381705.08, + 1545930.19 + ], + [ + 381706.3, + 1545971.51 + ], + [ + 381707.13, + 1546012.2 + ], + [ + 381717.63, + 1546011.77 + ], + [ + 381715.68, + 1545898.24 + ], + [ + 381713.04, + 1545812.73 + ], + [ + 381705.48, + 1545590.01 + ], + [ + 381702.53, + 1545530.46 + ], + [ + 381707.56, + 1545536.71 + ], + [ + 381745.6, + 1545537.92 + ], + [ + 381833.44, + 1545539.69 + ], + [ + 381865.87, + 1545541.11 + ], + [ + 381890.89, + 1545524.62 + ], + [ + 381917.07, + 1545554.27 + ], + [ + 381906.19, + 1545970.11 + ], + [ + 381742.46, + 1546056.58 + ], + [ + 381609.97, + 1546057.62 + ], + [ + 381609.87, + 1546044.5 + ], + [ + 381549.07, + 1546044.97 + ], + [ + 381548.7, + 1545997.95 + ], + [ + 381468.01, + 1545998.58 + ], + [ + 381468.56, + 1546069.53 + ], + [ + 381523.17, + 1546070.3 + ], + [ + 381523.15, + 1546068.25 + ], + [ + 381540.05, + 1546068.11 + ], + [ + 381543.78, + 1546545.74 + ], + [ + 381550.28, + 1546545.5 + ], + [ + 381550.79, + 1546611.12 + ], + [ + 381544.36, + 1546611.75 + ], + [ + 381544.54, + 1546642.93 + ], + [ + 381547.46, + 1547016.72 + ], + [ + 381411.12, + 1546993.47 + ], + [ + 381411.12, + 1546993.46 + ], + [ + 381341.32, + 1546981.55 + ], + [ + 381340.4, + 1546908.92 + ], + [ + 381309.38, + 1546909.31 + ], + [ + 381236.92, + 1546907.98 + ], + [ + 381233.69, + 1546494.58 + ], + [ + 381278.54, + 1546494.22 + ], + [ + 381269.81, + 1545611.83 + ], + [ + 381299.1, + 1545611.54 + ], + [ + 381301.27, + 1545396.82 + ], + [ + 381301.81, + 1545297.96 + ], + [ + 381295.23, + 1545140.09 + ], + [ + 381292.58, + 1544964.15 + ], + [ + 381226.06, + 1544965.68 + ], + [ + 381211.13, + 1544961.31 + ], + [ + 381198.76, + 1544951.89 + ], + [ + 381190.59, + 1544938.65 + ], + [ + 381187.7, + 1544923.37 + ], + [ + 381187.94, + 1544824.13 + ], + [ + 381043.28, + 1544818.74 + ], + [ + 380894.0, + 1544817.44 + ], + [ + 380891.56, + 1544477.32 + ], + [ + 380915.42, + 1544102.11 + ], + [ + 380917.09, + 1544108.28 + ], + [ + 380921.22, + 1544109.93 + ], + [ + 380927.6, + 1544129.24 + ], + [ + 380944.09, + 1544178.63 + ], + [ + 380948.37, + 1544198.28 + ], + [ + 380954.41, + 1544207.84 + ], + [ + 380956.53, + 1544208.12 + ], + [ + 380955.79, + 1544217.02 + ], + [ + 380954.42, + 1544216.9 + ], + [ + 380972.86, + 1544270.12 + ], + [ + 380974.95, + 1544277.5 + ], + [ + 381002.17, + 1544334.73 + ], + [ + 381022.4, + 1544374.17 + ], + [ + 381078.72, + 1544479.74 + ], + [ + 381090.22, + 1544491.2 + ], + [ + 381089.38, + 1544495.04 + ], + [ + 381099.36, + 1544507.05 + ], + [ + 381117.93, + 1544530.95 + ], + [ + 381149.73, + 1544566.39 + ], + [ + 381189.58, + 1544605.61 + ], + [ + 381216.75, + 1544630.3 + ], + [ + 381244.37, + 1544654.09 + ], + [ + 381345.16, + 1544737.85 + ], + [ + 381581.69, + 1544939.3 + ], + [ + 381582.28, + 1545015.23 + ], + [ + 381620.78, + 1545014.93 + ], + [ + 381621.13, + 1545059.37 + ], + [ + 381630.11, + 1545056.17 + ], + [ + 381646.0, + 1545052.64 + ], + [ + 381673.74, + 1545050.44 + ], + [ + 381718.6, + 1545055.91 + ], + [ + 381733.35, + 1545068.48 + ], + [ + 381763.56, + 1545117.58 + ], + [ + 381513.47, + 1545179.29 + ], + [ + 381337.41, + 1545180.66 + ], + [ + 381334.03, + 1544747.73 + ], + [ + 381338.01, + 1544747.7 + ], + [ + 381569.11, + 1544941.11 + ], + [ + 381570.15, + 1545075.41 + ], + [ + 381496.75, + 1545075.98 + ], + [ + 381512.86, + 1545100.29 + ], + [ + 381513.47, + 1545179.29 + ], + [ + 381497.89, + 1545919.69 + ], + [ + 381367.4, + 1545920.71 + ], + [ + 381366.93, + 1545860.96 + ], + [ + 381497.4, + 1545856.84 + ], + [ + 381497.89, + 1545919.69 + ], + [ + 381310.99, + 1546140.46 + ], + [ + 381301.2, + 1546140.54 + ], + [ + 381301.05, + 1546121.74 + ], + [ + 381310.85, + 1546121.66 + ], + [ + 381310.99, + 1546140.46 + ], + [ + 381470.39, + 1546431.41 + ], + [ + 381470.61, + 1546460.41 + ], + [ + 381428.12, + 1546460.74 + ], + [ + 381423.84, + 1546457.77 + ], + [ + 381423.64, + 1546431.78 + ], + [ + 381470.39, + 1546431.41 + ], + [ + 381498.81, + 1546469.3 + ], + [ + 381500.0, + 1546509.38 + ], + [ + 381460.02, + 1546510.56 + ], + [ + 381459.81, + 1546503.56 + ], + [ + 381437.62, + 1546504.22 + ], + [ + 381436.65, + 1546471.13 + ], + [ + 381498.81, + 1546469.3 + ], + [ + 381730.4, + 1546143.84 + ], + [ + 381714.94, + 1546159.51 + ], + [ + 381698.78, + 1546172.36 + ], + [ + 381679.74, + 1546189.61 + ], + [ + 381654.04, + 1546210.44 + ], + [ + 381632.52, + 1546223.97 + ], + [ + 381609.74, + 1546233.95 + ], + [ + 381591.22, + 1546241.12 + ], + [ + 381580.5, + 1546237.05 + ], + [ + 381582.28, + 1546103.43 + ], + [ + 381593.43, + 1546095.56 + ], + [ + 381597.49, + 1546095.55 + ], + [ + 381705.28, + 1546095.05 + ], + [ + 381716.62, + 1546099.3 + ], + [ + 381728.14, + 1546110.76 + ], + [ + 381733.71, + 1546126.25 + ], + [ + 381730.4, + 1546143.84 + ], + [ + 381760.88, + 1547312.2 + ], + [ + 381676.76, + 1547440.16 + ], + [ + 381657.35, + 1547425.76 + ], + [ + 381628.78, + 1547378.09 + ], + [ + 381616.98, + 1547339.26 + ], + [ + 381615.85, + 1547194.29 + ], + [ + 381714.79, + 1547209.6 + ], + [ + 381726.18, + 1547216.83 + ], + [ + 381721.58, + 1547246.22 + ], + [ + 381760.88, + 1547312.2 + ], + [ + 381370.83, + 1548332.72 + ], + [ + 381343.95, + 1548338.52 + ], + [ + 381337.38, + 1548336.79 + ], + [ + 381331.0, + 1548338.34 + ], + [ + 381311.2, + 1548343.83 + ], + [ + 381294.26, + 1548349.84 + ], + [ + 381277.67, + 1548355.48 + ], + [ + 381220.04, + 1548373.38 + ], + [ + 381208.62, + 1548381.19 + ], + [ + 381174.91, + 1548392.78 + ], + [ + 381156.99, + 1548389.44 + ], + [ + 381153.41, + 1548388.58 + ], + [ + 380976.18, + 1548354.13 + ], + [ + 380894.08, + 1548082.44 + ], + [ + 380895.74, + 1548003.84 + ], + [ + 381016.39, + 1547938.35 + ], + [ + 381003.8, + 1547811.81 + ], + [ + 381005.22, + 1547807.25 + ], + [ + 381009.56, + 1547808.73 + ], + [ + 381231.85, + 1547814.08 + ], + [ + 381239.92, + 1547818.04 + ], + [ + 381284.62, + 1547876.22 + ], + [ + 381283.55, + 1547916.23 + ], + [ + 381279.34, + 1547918.49 + ], + [ + 381278.71, + 1547932.99 + ], + [ + 381299.99, + 1547933.67 + ], + [ + 381301.4, + 1547925.2 + ], + [ + 381355.1, + 1547925.75 + ], + [ + 381354.44, + 1547958.75 + ], + [ + 381355.21, + 1547977.17 + ], + [ + 381356.58, + 1547985.74 + ], + [ + 381355.06, + 1548007.48 + ], + [ + 381351.19, + 1548030.73 + ], + [ + 381349.19, + 1548057.47 + ], + [ + 381347.47, + 1548083.45 + ], + [ + 381346.49, + 1548135.04 + ], + [ + 381346.34, + 1548160.83 + ], + [ + 381344.89, + 1548172.1 + ], + [ + 381345.0, + 1548186.3 + ], + [ + 381346.32, + 1548188.28 + ], + [ + 381345.81, + 1548254.61 + ], + [ + 381352.12, + 1548277.27 + ], + [ + 381354.77, + 1548292.5 + ], + [ + 381359.12, + 1548308.65 + ], + [ + 381370.83, + 1548332.72 + ], + [ + 381243.46, + 1548078.74 + ], + [ + 381219.79, + 1548078.18 + ], + [ + 381220.2, + 1548060.6 + ], + [ + 381243.82, + 1548061.99 + ], + [ + 381243.46, + 1548078.74 + ], + [ + 381210.96, + 1548273.42 + ], + [ + 381198.29, + 1548272.53 + ], + [ + 381197.97, + 1548282.1 + ], + [ + 381189.08, + 1548281.8 + ], + [ + 381189.25, + 1548271.88 + ], + [ + 381160.67, + 1548270.42 + ], + [ + 381164.6, + 1548230.12 + ], + [ + 381214.53, + 1548233.86 + ], + [ + 381212.3, + 1548260.88 + ], + [ + 381210.96, + 1548273.42 + ], + [ + 380152.64, + 1548274.53 + ], + [ + 380004.64, + 1547853.79 + ], + [ + 379996.37, + 1547834.3 + ], + [ + 379992.53, + 1547741.09 + ], + [ + 379945.65, + 1547532.37 + ], + [ + 379951.86, + 1547524.95 + ], + [ + 379967.32, + 1547461.85 + ], + [ + 380048.41, + 1547417.95 + ], + [ + 380091.8, + 1547389.06 + ], + [ + 380093.27, + 1547385.23 + ], + [ + 380109.23, + 1547120.38 + ], + [ + 380108.38, + 1547116.37 + ], + [ + 380116.43, + 1546955.54 + ], + [ + 380021.16, + 1546948.97 + ], + [ + 379957.12, + 1546974.21 + ], + [ + 379910.56, + 1546942.25 + ], + [ + 379906.06, + 1546875.65 + ], + [ + 380089.4, + 1546841.09 + ], + [ + 380107.62, + 1546768.66 + ], + [ + 379847.93, + 1546558.68 + ], + [ + 379848.48, + 1546564.25 + ], + [ + 379847.81, + 1546573.04 + ], + [ + 379845.63, + 1546581.58 + ], + [ + 379841.99, + 1546589.62 + ], + [ + 379837.02, + 1546596.9 + ], + [ + 379830.86, + 1546603.2 + ], + [ + 379823.69, + 1546608.35 + ], + [ + 379815.74, + 1546612.16 + ], + [ + 379807.25, + 1546614.54 + ], + [ + 379798.47, + 1546615.42 + ], + [ + 379789.68, + 1546614.75 + ], + [ + 379781.14, + 1546612.56 + ], + [ + 379773.1, + 1546608.92 + ], + [ + 379765.82, + 1546603.95 + ], + [ + 379759.51, + 1546597.79 + ], + [ + 379754.37, + 1546590.62 + ], + [ + 379750.56, + 1546582.67 + ], + [ + 379748.18, + 1546574.18 + ], + [ + 379747.3, + 1546565.41 + ], + [ + 379747.97, + 1546556.61 + ], + [ + 379750.16, + 1546548.07 + ], + [ + 379753.79, + 1546540.04 + ], + [ + 379758.77, + 1546532.76 + ], + [ + 379764.93, + 1546526.45 + ], + [ + 379772.1, + 1546521.3 + ], + [ + 379780.05, + 1546517.49 + ], + [ + 379785.31, + 1546516.02 + ], + [ + 379593.98, + 1546360.99 + ], + [ + 379307.68, + 1546159.84 + ], + [ + 379430.65, + 1545468.35 + ], + [ + 379723.74, + 1545689.83 + ], + [ + 379583.21, + 1545915.93 + ], + [ + 379697.36, + 1546235.08 + ], + [ + 380187.54, + 1545625.76 + ], + [ + 380242.7, + 1544758.76 + ], + [ + 380203.54, + 1544729.3 + ], + [ + 380134.75, + 1544624.76 + ], + [ + 380129.55, + 1544613.33 + ], + [ + 380126.76, + 1544568.98 + ], + [ + 380170.05, + 1544496.39 + ], + [ + 380266.6, + 1544556.61 + ], + [ + 380303.32, + 1544456.58 + ], + [ + 380319.85, + 1544572.09 + ], + [ + 380120.58, + 1547816.13 + ], + [ + 380152.64, + 1548274.53 + ] + ] + }, + "3": { + "name": "Третья подзона", + "restriction": "1. В границах третьей подзоны запрещается размещать объекты, высота которых превышает ограничения, приведенные в пункте 2 настоящей таблицы. 2. Строительство и реконструкция зданий, сооружений в границах третьей подзоны разрешается только после определения максимально допустимой высоты здания, сооружения в зависимости от местоположения путем проведения соответствующих расчетов в соответствии с требованиями ФАП-262 с учетом следующих абсолютных высот ограничения объектов в Балтийской системе высо", + "count": 135, + "sectors": [ + { + "label": null, + "count": 135, + "points": [ + [ + 386940.98, + 1515072.55 + ], + [ + 383461.73, + 1531376.91 + ], + [ + 383601.28, + 1531403.21 + ], + [ + 384357.68, + 1531569.85 + ], + [ + 385104.46, + 1531775.31 + ], + [ + 385839.65, + 1532019.04 + ], + [ + 386561.27, + 1532300.39 + ], + [ + 387267.41, + 1532618.62 + ], + [ + 387956.18, + 1532972.87 + ], + [ + 388625.74, + 1533362.21 + ], + [ + 389274.32, + 1533785.59 + ], + [ + 389900.18, + 1534241.88 + ], + [ + 390501.65, + 1534729.87 + ], + [ + 391077.13, + 1535248.25 + ], + [ + 391625.08, + 1535795.65 + ], + [ + 392144.05, + 1536370.61 + ], + [ + 392632.65, + 1536971.58 + ], + [ + 393089.57, + 1537596.98 + ], + [ + 393513.61, + 1538245.13 + ], + [ + 393903.62, + 1538914.3 + ], + [ + 394258.57, + 1539602.71 + ], + [ + 394577.51, + 1540308.52 + ], + [ + 394859.6, + 1541029.86 + ], + [ + 395104.07, + 1541764.8 + ], + [ + 395310.29, + 1542511.37 + ], + [ + 395477.69, + 1543267.6 + ], + [ + 395605.83, + 1544031.46 + ], + [ + 395694.38, + 1544800.91 + ], + [ + 395743.08, + 1545573.91 + ], + [ + 395751.82, + 1546348.39 + ], + [ + 395720.58, + 1547122.29 + ], + [ + 395649.42, + 1547893.55 + ], + [ + 395538.55, + 1548660.11 + ], + [ + 395388.26, + 1549419.92 + ], + [ + 395198.95, + 1550170.96 + ], + [ + 394971.13, + 1550911.23 + ], + [ + 394705.4, + 1551638.75 + ], + [ + 394402.46, + 1552351.58 + ], + [ + 394063.14, + 1553047.83 + ], + [ + 393688.33, + 1553725.63 + ], + [ + 393279.03, + 1554383.18 + ], + [ + 392836.34, + 1555018.73 + ], + [ + 392361.43, + 1555630.58 + ], + [ + 391855.57, + 1556217.11 + ], + [ + 391320.12, + 1556776.73 + ], + [ + 390756.48, + 1557307.98 + ], + [ + 390166.18, + 1557809.42 + ], + [ + 389550.78, + 1558279.72 + ], + [ + 388911.92, + 1558717.63 + ], + [ + 388251.32, + 1559121.98 + ], + [ + 387570.72, + 1559491.68 + ], + [ + 386871.94, + 1559825.77 + ], + [ + 386156.85, + 1560123.34 + ], + [ + 385427.36, + 1560383.6 + ], + [ + 384685.4, + 1560605.86 + ], + [ + 384553.43, + 1560644.87 + ], + [ + 383804.33, + 1560841.73 + ], + [ + 383046.07, + 1560999.66 + ], + [ + 383270.3, + 1562424.76 + ], + [ + 383241.79, + 1562424.97 + ], + [ + 385629.14, + 1577598.27 + ], + [ + 383044.98, + 1577616.8 + ], + [ + 383076.78, + 1577979.13 + ], + [ + 377791.48, + 1577654.46 + ], + [ + 376329.39, + 1577664.95 + ], + [ + 376343.57, + 1577565.52 + ], + [ + 373794.28, + 1577408.93 + ], + [ + 377015.66, + 1562313.01 + ], + [ + 376975.98, + 1562310.58 + ], + [ + 377273.13, + 1560918.07 + ], + [ + 377198.15, + 1560902.06 + ], + [ + 376445.59, + 1560718.91 + ], + [ + 375703.48, + 1560497.16 + ], + [ + 374973.8, + 1560237.4 + ], + [ + 374258.51, + 1559940.32 + ], + [ + 373559.51, + 1559606.72 + ], + [ + 372878.65, + 1559237.48 + ], + [ + 372217.77, + 1558833.58 + ], + [ + 371578.61, + 1558396.11 + ], + [ + 370962.89, + 1557926.23 + ], + [ + 370372.24, + 1557425.2 + ], + [ + 369808.24, + 1556894.34 + ], + [ + 369272.4, + 1556335.08 + ], + [ + 368766.14, + 1555748.91 + ], + [ + 368290.81, + 1555137.39 + ], + [ + 367847.68, + 1554502.14 + ], + [ + 367437.93, + 1553844.87 + ], + [ + 367062.66, + 1553167.32 + ], + [ + 366722.85, + 1552471.31 + ], + [ + 366419.43, + 1551758.69 + ], + [ + 366153.2, + 1551031.35 + ], + [ + 365924.87, + 1550291.24 + ], + [ + 365735.04, + 1549540.33 + ], + [ + 365584.23, + 1548780.62 + ], + [ + 365472.83, + 1548014.14 + ], + [ + 365401.15, + 1547242.93 + ], + [ + 365369.37, + 1546469.05 + ], + [ + 365377.58, + 1545694.56 + ], + [ + 365425.75, + 1544921.53 + ], + [ + 365513.77, + 1544152.02 + ], + [ + 365641.39, + 1543388.07 + ], + [ + 365808.27, + 1542631.73 + ], + [ + 366013.97, + 1541885.01 + ], + [ + 366257.94, + 1541149.91 + ], + [ + 366539.53, + 1540428.38 + ], + [ + 366857.99, + 1539722.34 + ], + [ + 367212.46, + 1539033.69 + ], + [ + 367602.02, + 1538364.25 + ], + [ + 368025.61, + 1537715.81 + ], + [ + 368482.1, + 1537090.1 + ], + [ + 368970.29, + 1536488.79 + ], + [ + 369488.86, + 1535913.48 + ], + [ + 370036.44, + 1535365.7 + ], + [ + 370611.56, + 1534846.92 + ], + [ + 371212.69, + 1534358.52 + ], + [ + 371838.24, + 1533901.8 + ], + [ + 372486.52, + 1533477.97 + ], + [ + 373155.82, + 1533088.18 + ], + [ + 373844.35, + 1532733.45 + ], + [ + 374550.27, + 1532414.74 + ], + [ + 375271.7, + 1532132.89 + ], + [ + 375431.54, + 1532066.68 + ], + [ + 376679.56, + 1531673.18 + ], + [ + 377180.54, + 1531562.11 + ], + [ + 377834.71, + 1531417.09 + ], + [ + 377957.12, + 1531389.95 + ], + [ + 378017.58, + 1531381.99 + ], + [ + 378495.6, + 1531301.28 + ], + [ + 375877.67, + 1514662.5 + ], + [ + 377671.41, + 1514649.64 + ], + [ + 377658.48, + 1514502.35 + ], + [ + 379807.09, + 1514634.33 + ], + [ + 385177.43, + 1514595.83 + ], + [ + 385125.32, + 1514961.02 + ], + [ + 386940.98, + 1515072.55 + ] + ] + } + ], + "points": [ + [ + 386940.98, + 1515072.55 + ], + [ + 383461.73, + 1531376.91 + ], + [ + 383601.28, + 1531403.21 + ], + [ + 384357.68, + 1531569.85 + ], + [ + 385104.46, + 1531775.31 + ], + [ + 385839.65, + 1532019.04 + ], + [ + 386561.27, + 1532300.39 + ], + [ + 387267.41, + 1532618.62 + ], + [ + 387956.18, + 1532972.87 + ], + [ + 388625.74, + 1533362.21 + ], + [ + 389274.32, + 1533785.59 + ], + [ + 389900.18, + 1534241.88 + ], + [ + 390501.65, + 1534729.87 + ], + [ + 391077.13, + 1535248.25 + ], + [ + 391625.08, + 1535795.65 + ], + [ + 392144.05, + 1536370.61 + ], + [ + 392632.65, + 1536971.58 + ], + [ + 393089.57, + 1537596.98 + ], + [ + 393513.61, + 1538245.13 + ], + [ + 393903.62, + 1538914.3 + ], + [ + 394258.57, + 1539602.71 + ], + [ + 394577.51, + 1540308.52 + ], + [ + 394859.6, + 1541029.86 + ], + [ + 395104.07, + 1541764.8 + ], + [ + 395310.29, + 1542511.37 + ], + [ + 395477.69, + 1543267.6 + ], + [ + 395605.83, + 1544031.46 + ], + [ + 395694.38, + 1544800.91 + ], + [ + 395743.08, + 1545573.91 + ], + [ + 395751.82, + 1546348.39 + ], + [ + 395720.58, + 1547122.29 + ], + [ + 395649.42, + 1547893.55 + ], + [ + 395538.55, + 1548660.11 + ], + [ + 395388.26, + 1549419.92 + ], + [ + 395198.95, + 1550170.96 + ], + [ + 394971.13, + 1550911.23 + ], + [ + 394705.4, + 1551638.75 + ], + [ + 394402.46, + 1552351.58 + ], + [ + 394063.14, + 1553047.83 + ], + [ + 393688.33, + 1553725.63 + ], + [ + 393279.03, + 1554383.18 + ], + [ + 392836.34, + 1555018.73 + ], + [ + 392361.43, + 1555630.58 + ], + [ + 391855.57, + 1556217.11 + ], + [ + 391320.12, + 1556776.73 + ], + [ + 390756.48, + 1557307.98 + ], + [ + 390166.18, + 1557809.42 + ], + [ + 389550.78, + 1558279.72 + ], + [ + 388911.92, + 1558717.63 + ], + [ + 388251.32, + 1559121.98 + ], + [ + 387570.72, + 1559491.68 + ], + [ + 386871.94, + 1559825.77 + ], + [ + 386156.85, + 1560123.34 + ], + [ + 385427.36, + 1560383.6 + ], + [ + 384685.4, + 1560605.86 + ], + [ + 384553.43, + 1560644.87 + ], + [ + 383804.33, + 1560841.73 + ], + [ + 383046.07, + 1560999.66 + ], + [ + 383270.3, + 1562424.76 + ], + [ + 383241.79, + 1562424.97 + ], + [ + 385629.14, + 1577598.27 + ], + [ + 383044.98, + 1577616.8 + ], + [ + 383076.78, + 1577979.13 + ], + [ + 377791.48, + 1577654.46 + ], + [ + 376329.39, + 1577664.95 + ], + [ + 376343.57, + 1577565.52 + ], + [ + 373794.28, + 1577408.93 + ], + [ + 377015.66, + 1562313.01 + ], + [ + 376975.98, + 1562310.58 + ], + [ + 377273.13, + 1560918.07 + ], + [ + 377198.15, + 1560902.06 + ], + [ + 376445.59, + 1560718.91 + ], + [ + 375703.48, + 1560497.16 + ], + [ + 374973.8, + 1560237.4 + ], + [ + 374258.51, + 1559940.32 + ], + [ + 373559.51, + 1559606.72 + ], + [ + 372878.65, + 1559237.48 + ], + [ + 372217.77, + 1558833.58 + ], + [ + 371578.61, + 1558396.11 + ], + [ + 370962.89, + 1557926.23 + ], + [ + 370372.24, + 1557425.2 + ], + [ + 369808.24, + 1556894.34 + ], + [ + 369272.4, + 1556335.08 + ], + [ + 368766.14, + 1555748.91 + ], + [ + 368290.81, + 1555137.39 + ], + [ + 367847.68, + 1554502.14 + ], + [ + 367437.93, + 1553844.87 + ], + [ + 367062.66, + 1553167.32 + ], + [ + 366722.85, + 1552471.31 + ], + [ + 366419.43, + 1551758.69 + ], + [ + 366153.2, + 1551031.35 + ], + [ + 365924.87, + 1550291.24 + ], + [ + 365735.04, + 1549540.33 + ], + [ + 365584.23, + 1548780.62 + ], + [ + 365472.83, + 1548014.14 + ], + [ + 365401.15, + 1547242.93 + ], + [ + 365369.37, + 1546469.05 + ], + [ + 365377.58, + 1545694.56 + ], + [ + 365425.75, + 1544921.53 + ], + [ + 365513.77, + 1544152.02 + ], + [ + 365641.39, + 1543388.07 + ], + [ + 365808.27, + 1542631.73 + ], + [ + 366013.97, + 1541885.01 + ], + [ + 366257.94, + 1541149.91 + ], + [ + 366539.53, + 1540428.38 + ], + [ + 366857.99, + 1539722.34 + ], + [ + 367212.46, + 1539033.69 + ], + [ + 367602.02, + 1538364.25 + ], + [ + 368025.61, + 1537715.81 + ], + [ + 368482.1, + 1537090.1 + ], + [ + 368970.29, + 1536488.79 + ], + [ + 369488.86, + 1535913.48 + ], + [ + 370036.44, + 1535365.7 + ], + [ + 370611.56, + 1534846.92 + ], + [ + 371212.69, + 1534358.52 + ], + [ + 371838.24, + 1533901.8 + ], + [ + 372486.52, + 1533477.97 + ], + [ + 373155.82, + 1533088.18 + ], + [ + 373844.35, + 1532733.45 + ], + [ + 374550.27, + 1532414.74 + ], + [ + 375271.7, + 1532132.89 + ], + [ + 375431.54, + 1532066.68 + ], + [ + 376679.56, + 1531673.18 + ], + [ + 377180.54, + 1531562.11 + ], + [ + 377834.71, + 1531417.09 + ], + [ + 377957.12, + 1531389.95 + ], + [ + 378017.58, + 1531381.99 + ], + [ + 378495.6, + 1531301.28 + ], + [ + 375877.67, + 1514662.5 + ], + [ + 377671.41, + 1514649.64 + ], + [ + 377658.48, + 1514502.35 + ], + [ + 379807.09, + 1514634.33 + ], + [ + 385177.43, + 1514595.83 + ], + [ + 385125.32, + 1514961.02 + ], + [ + 386940.98, + 1515072.55 + ] + ] + }, + "4": { + "name": "Четвертая подзона", + "restriction": "1. Запрещается размещать объекты, создающие помехи в работе наземных объектов средств и систем обслуживания воздушного движения, навигации, посадки и связи, предназначенных для организации воздушного движения и расположенных вне первой подзоны. 2. Запрещается без согласования с оператором аэродрома размещение объектов, превышающих высотные ограничения в границах установленных секторов:", + "count": 285, + "sectors": [ + { + "label": null, + "count": 285, + "points": [ + [ + 393500.44, + 1529536.54 + ], + [ + 392860.57, + 1530464.45 + ], + [ + 394432.79, + 1530561.02 + ], + [ + 390754.92, + 1535182.23 + ], + [ + 390796.9, + 1535221.29 + ], + [ + 390986.67, + 1535401.64 + ], + [ + 391173.27, + 1535585.27 + ], + [ + 391356.63, + 1535772.13 + ], + [ + 391536.7, + 1535962.16 + ], + [ + 391713.43, + 1536155.3 + ], + [ + 391886.76, + 1536351.5 + ], + [ + 392056.63, + 1536550.69 + ], + [ + 392223.01, + 1536752.82 + ], + [ + 392385.83, + 1536957.82 + ], + [ + 392545.06, + 1537165.64 + ], + [ + 392700.63, + 1537376.2 + ], + [ + 392852.5, + 1537589.44 + ], + [ + 393000.62, + 1537805.3 + ], + [ + 393144.96, + 1538023.71 + ], + [ + 393285.46, + 1538244.61 + ], + [ + 393422.09, + 1538467.93 + ], + [ + 393554.8, + 1538693.59 + ], + [ + 393683.55, + 1538921.54 + ], + [ + 393808.3, + 1539151.7 + ], + [ + 393929.02, + 1539384.01 + ], + [ + 394045.66, + 1539618.38 + ], + [ + 394158.19, + 1539854.76 + ], + [ + 394266.59, + 1540093.06 + ], + [ + 394370.8, + 1540333.22 + ], + [ + 394470.81, + 1540575.16 + ], + [ + 394566.59, + 1540818.81 + ], + [ + 394658.09, + 1541064.09 + ], + [ + 394745.3, + 1541310.93 + ], + [ + 394828.19, + 1541559.26 + ], + [ + 394906.74, + 1541809.0 + ], + [ + 394980.91, + 1542060.06 + ], + [ + 395050.69, + 1542312.39 + ], + [ + 395116.05, + 1542565.89 + ], + [ + 395176.98, + 1542820.5 + ], + [ + 395233.46, + 1543076.13 + ], + [ + 395285.47, + 1543332.71 + ], + [ + 395332.99, + 1543590.16 + ], + [ + 395376.01, + 1543848.39 + ], + [ + 395414.52, + 1544107.34 + ], + [ + 395448.51, + 1544366.92 + ], + [ + 395477.95, + 1544627.06 + ], + [ + 395502.86, + 1544887.67 + ], + [ + 395523.21, + 1545148.67 + ], + [ + 395539.0, + 1545409.99 + ], + [ + 395550.23, + 1545671.55 + ], + [ + 395556.9, + 1545933.26 + ], + [ + 395558.99, + 1546195.04 + ], + [ + 395556.52, + 1546456.83 + ], + [ + 395549.48, + 1546718.53 + ], + [ + 395537.87, + 1546980.07 + ], + [ + 395521.7, + 1547241.36 + ], + [ + 395500.97, + 1547502.34 + ], + [ + 395475.69, + 1547762.91 + ], + [ + 395445.86, + 1548023.0 + ], + [ + 395411.5, + 1548282.53 + ], + [ + 395372.62, + 1548541.43 + ], + [ + 395329.22, + 1548799.6 + ], + [ + 395281.33, + 1549056.98 + ], + [ + 395228.95, + 1549313.48 + ], + [ + 395172.1, + 1549569.03 + ], + [ + 395110.8, + 1549823.55 + ], + [ + 395045.07, + 1550076.96 + ], + [ + 394974.93, + 1550329.18 + ], + [ + 394910.2, + 1550548.02 + ], + [ + 395018.39, + 1551369.79 + ], + [ + 395075.47, + 1552677.13 + ], + [ + 395018.39, + 1553984.46 + ], + [ + 394847.58, + 1555281.85 + ], + [ + 394564.35, + 1556559.41 + ], + [ + 394170.86, + 1557807.43 + ], + [ + 393670.08, + 1559016.4 + ], + [ + 393065.85, + 1560177.13 + ], + [ + 392665.56, + 1560805.45 + ], + [ + 393897.74, + 1562538.6 + ], + [ + 391653.82, + 1562554.69 + ], + [ + 392241.22, + 1563513.8 + ], + [ + 390544.71, + 1563409.59 + ], + [ + 389717.28, + 1564167.79 + ], + [ + 388679.11, + 1564964.41 + ], + [ + 387575.47, + 1565667.51 + ], + [ + 386414.74, + 1566271.74 + ], + [ + 385205.77, + 1566772.51 + ], + [ + 383957.75, + 1567166.01 + ], + [ + 382680.19, + 1567449.24 + ], + [ + 381382.8, + 1567620.05 + ], + [ + 380075.47, + 1567677.13 + ], + [ + 378768.13, + 1567620.05 + ], + [ + 377470.74, + 1567449.24 + ], + [ + 376193.18, + 1567166.01 + ], + [ + 374945.16, + 1566772.51 + ], + [ + 373736.19, + 1566271.74 + ], + [ + 373386.55, + 1566089.73 + ], + [ + 373479.61, + 1566068.7 + ], + [ + 373667.88, + 1566026.16 + ], + [ + 373854.04, + 1565985.42 + ], + [ + 373901.8, + 1565774.4 + ], + [ + 373960.65, + 1565530.08 + ], + [ + 373733.56, + 1565306.76 + ], + [ + 373919.45, + 1565244.78 + ], + [ + 373949.88, + 1565184.5 + ], + [ + 374087.66, + 1565122.79 + ], + [ + 374251.42, + 1565048.8 + ], + [ + 374436.16, + 1564667.4 + ], + [ + 374486.8, + 1564561.96 + ], + [ + 374561.72, + 1564508.04 + ], + [ + 374617.07, + 1564518.72 + ], + [ + 374679.14, + 1564473.88 + ], + [ + 374956.04, + 1564298.2 + ], + [ + 375075.26, + 1564223.08 + ], + [ + 375196.84, + 1564147.14 + ], + [ + 375497.24, + 1563960.58 + ], + [ + 375653.46, + 1563866.52 + ], + [ + 375728.66, + 1563809.62 + ], + [ + 375768.07, + 1563758.07 + ], + [ + 375828.79, + 1563678.63 + ], + [ + 376284.32, + 1563082.69 + ], + [ + 376580.65, + 1562693.82 + ], + [ + 376413.05, + 1562663.96 + ], + [ + 376390.36, + 1562659.92 + ], + [ + 376157.89, + 1562615.92 + ], + [ + 375744.23, + 1562540.76 + ], + [ + 375437.18, + 1562481.57 + ], + [ + 375403.4, + 1562475.06 + ], + [ + 374796.82, + 1562362.12 + ], + [ + 374798.72, + 1562321.54 + ], + [ + 374782.3, + 1562319.0 + ], + [ + 374631.14, + 1562295.57 + ], + [ + 374609.35, + 1562291.99 + ], + [ + 374423.28, + 1562263.28 + ], + [ + 374425.03, + 1562125.92 + ], + [ + 374425.3, + 1562105.02 + ], + [ + 374424.75, + 1562044.45 + ], + [ + 374367.9, + 1561891.24 + ], + [ + 374341.46, + 1561857.18 + ], + [ + 374313.3, + 1561870.3 + ], + [ + 374294.59, + 1561892.62 + ], + [ + 374256.64, + 1561944.68 + ], + [ + 374247.3, + 1562138.86 + ], + [ + 374232.52, + 1562189.35 + ], + [ + 374228.73, + 1562202.3 + ], + [ + 374220.14, + 1562231.86 + ], + [ + 374217.49, + 1562241.03 + ], + [ + 374199.26, + 1562302.69 + ], + [ + 374186.9, + 1562343.82 + ], + [ + 374184.2, + 1562353.79 + ], + [ + 374169.47, + 1562403.7 + ], + [ + 374156.54, + 1562447.52 + ], + [ + 374144.14, + 1562487.5 + ], + [ + 373924.06, + 1562514.44 + ], + [ + 373873.41, + 1562385.51 + ], + [ + 373839.22, + 1562298.5 + ], + [ + 373793.68, + 1562175.9 + ], + [ + 373620.56, + 1562143.78 + ], + [ + 373457.82, + 1562112.7 + ], + [ + 373367.62, + 1562292.42 + ], + [ + 373337.5, + 1562352.59 + ], + [ + 373291.86, + 1562443.79 + ], + [ + 373238.13, + 1562417.11 + ], + [ + 373170.25, + 1562549.8 + ], + [ + 373103.26, + 1562687.69 + ], + [ + 373085.6, + 1562724.04 + ], + [ + 373139.37, + 1562750.71 + ], + [ + 373073.42, + 1562883.29 + ], + [ + 373036.83, + 1562956.81 + ], + [ + 373011.28, + 1563008.14 + ], + [ + 372957.56, + 1562981.34 + ], + [ + 372903.11, + 1563091.17 + ], + [ + 372809.57, + 1563279.38 + ], + [ + 372847.56, + 1563298.18 + ], + [ + 372863.37, + 1563306.0 + ], + [ + 372863.33, + 1563306.08 + ], + [ + 372732.62, + 1563560.09 + ], + [ + 372551.23, + 1563799.43 + ], + [ + 372426.42, + 1563964.18 + ], + [ + 372381.17, + 1563928.63 + ], + [ + 372379.15, + 1563927.2 + ], + [ + 372142.7, + 1564231.09 + ], + [ + 372071.51, + 1564357.23 + ], + [ + 372098.12, + 1564371.08 + ], + [ + 372066.9, + 1564454.02 + ], + [ + 372094.65, + 1564465.44 + ], + [ + 372091.09, + 1564479.98 + ], + [ + 372072.52, + 1564559.54 + ], + [ + 372064.36, + 1564664.64 + ], + [ + 372066.11, + 1564715.34 + ], + [ + 372075.36, + 1564802.19 + ], + [ + 372102.47, + 1565010.35 + ], + [ + 372145.27, + 1565341.49 + ], + [ + 372146.98, + 1565354.69 + ], + [ + 372117.23, + 1565358.54 + ], + [ + 372119.64, + 1565377.12 + ], + [ + 371471.82, + 1564964.41 + ], + [ + 370433.65, + 1564167.79 + ], + [ + 369468.86, + 1563283.73 + ], + [ + 369411.86, + 1563221.52 + ], + [ + 369318.53, + 1563135.99 + ], + [ + 368935.12, + 1562717.58 + ], + [ + 367842.87, + 1562725.41 + ], + [ + 368312.8, + 1562043.94 + ], + [ + 366470.66, + 1561930.78 + ], + [ + 367401.2, + 1560761.57 + ], + [ + 366934.75, + 1560029.39 + ], + [ + 366330.51, + 1558868.66 + ], + [ + 365829.74, + 1557659.69 + ], + [ + 365436.24, + 1556411.68 + ], + [ + 365153.01, + 1555134.11 + ], + [ + 364982.21, + 1553836.73 + ], + [ + 364925.13, + 1552529.39 + ], + [ + 364982.21, + 1551222.05 + ], + [ + 365153.01, + 1549924.67 + ], + [ + 365436.24, + 1548647.11 + ], + [ + 365661.32, + 1547933.25 + ], + [ + 365640.04, + 1547741.33 + ], + [ + 365615.13, + 1547480.72 + ], + [ + 365594.78, + 1547219.72 + ], + [ + 365578.99, + 1546958.4 + ], + [ + 365567.76, + 1546696.84 + ], + [ + 365561.1, + 1546435.13 + ], + [ + 365559.0, + 1546173.34 + ], + [ + 365561.47, + 1545911.56 + ], + [ + 365568.52, + 1545649.86 + ], + [ + 365580.12, + 1545388.32 + ], + [ + 365596.3, + 1545127.02 + ], + [ + 365617.03, + 1544866.05 + ], + [ + 365642.31, + 1544605.48 + ], + [ + 365672.13, + 1544345.39 + ], + [ + 365706.49, + 1544085.85 + ], + [ + 365745.37, + 1543826.96 + ], + [ + 365788.77, + 1543568.79 + ], + [ + 365836.66, + 1543311.41 + ], + [ + 365889.04, + 1543054.91 + ], + [ + 365945.89, + 1542799.36 + ], + [ + 366007.19, + 1542544.84 + ], + [ + 366072.92, + 1542291.43 + ], + [ + 366143.07, + 1542039.21 + ], + [ + 366217.6, + 1541788.24 + ], + [ + 366296.5, + 1541538.62 + ], + [ + 366379.75, + 1541290.41 + ], + [ + 366467.32, + 1541043.7 + ], + [ + 366559.18, + 1540798.55 + ], + [ + 366655.31, + 1540555.04 + ], + [ + 366755.67, + 1540313.24 + ], + [ + 366860.23, + 1540073.23 + ], + [ + 366968.97, + 1539835.09 + ], + [ + 367081.85, + 1539598.88 + ], + [ + 367198.83, + 1539364.67 + ], + [ + 367319.88, + 1539132.54 + ], + [ + 367444.96, + 1538902.56 + ], + [ + 367574.04, + 1538674.8 + ], + [ + 367707.08, + 1538449.32 + ], + [ + 367844.03, + 1538226.21 + ], + [ + 367984.85, + 1538005.51 + ], + [ + 368129.5, + 1537787.31 + ], + [ + 368277.94, + 1537571.66 + ], + [ + 368430.12, + 1537358.64 + ], + [ + 368586.0, + 1537148.31 + ], + [ + 368745.52, + 1536940.72 + ], + [ + 368908.64, + 1536735.96 + ], + [ + 369075.31, + 1536534.07 + ], + [ + 369245.47, + 1536335.12 + ], + [ + 369419.09, + 1536139.17 + ], + [ + 369596.09, + 1535946.29 + ], + [ + 369776.44, + 1535756.52 + ], + [ + 369960.07, + 1535569.92 + ], + [ + 370146.93, + 1535386.56 + ], + [ + 370336.96, + 1535206.49 + ], + [ + 370530.1, + 1535029.76 + ], + [ + 370726.3, + 1534856.44 + ], + [ + 370925.5, + 1534686.56 + ], + [ + 371127.62, + 1534520.18 + ], + [ + 371162.0, + 1534492.47 + ], + [ + 367769.75, + 1529721.02 + ], + [ + 368789.47, + 1529713.71 + ], + [ + 368326.26, + 1528957.36 + ], + [ + 378092.43, + 1529557.28 + ], + [ + 379093.56, + 1529618.77 + ], + [ + 379400.54, + 1529637.63 + ], + [ + 382628.81, + 1529614.49 + ], + [ + 383874.86, + 1529605.55 + ], + [ + 393500.44, + 1529536.54 + ] + ] + } + ], + "points": [ + [ + 393500.44, + 1529536.54 + ], + [ + 392860.57, + 1530464.45 + ], + [ + 394432.79, + 1530561.02 + ], + [ + 390754.92, + 1535182.23 + ], + [ + 390796.9, + 1535221.29 + ], + [ + 390986.67, + 1535401.64 + ], + [ + 391173.27, + 1535585.27 + ], + [ + 391356.63, + 1535772.13 + ], + [ + 391536.7, + 1535962.16 + ], + [ + 391713.43, + 1536155.3 + ], + [ + 391886.76, + 1536351.5 + ], + [ + 392056.63, + 1536550.69 + ], + [ + 392223.01, + 1536752.82 + ], + [ + 392385.83, + 1536957.82 + ], + [ + 392545.06, + 1537165.64 + ], + [ + 392700.63, + 1537376.2 + ], + [ + 392852.5, + 1537589.44 + ], + [ + 393000.62, + 1537805.3 + ], + [ + 393144.96, + 1538023.71 + ], + [ + 393285.46, + 1538244.61 + ], + [ + 393422.09, + 1538467.93 + ], + [ + 393554.8, + 1538693.59 + ], + [ + 393683.55, + 1538921.54 + ], + [ + 393808.3, + 1539151.7 + ], + [ + 393929.02, + 1539384.01 + ], + [ + 394045.66, + 1539618.38 + ], + [ + 394158.19, + 1539854.76 + ], + [ + 394266.59, + 1540093.06 + ], + [ + 394370.8, + 1540333.22 + ], + [ + 394470.81, + 1540575.16 + ], + [ + 394566.59, + 1540818.81 + ], + [ + 394658.09, + 1541064.09 + ], + [ + 394745.3, + 1541310.93 + ], + [ + 394828.19, + 1541559.26 + ], + [ + 394906.74, + 1541809.0 + ], + [ + 394980.91, + 1542060.06 + ], + [ + 395050.69, + 1542312.39 + ], + [ + 395116.05, + 1542565.89 + ], + [ + 395176.98, + 1542820.5 + ], + [ + 395233.46, + 1543076.13 + ], + [ + 395285.47, + 1543332.71 + ], + [ + 395332.99, + 1543590.16 + ], + [ + 395376.01, + 1543848.39 + ], + [ + 395414.52, + 1544107.34 + ], + [ + 395448.51, + 1544366.92 + ], + [ + 395477.95, + 1544627.06 + ], + [ + 395502.86, + 1544887.67 + ], + [ + 395523.21, + 1545148.67 + ], + [ + 395539.0, + 1545409.99 + ], + [ + 395550.23, + 1545671.55 + ], + [ + 395556.9, + 1545933.26 + ], + [ + 395558.99, + 1546195.04 + ], + [ + 395556.52, + 1546456.83 + ], + [ + 395549.48, + 1546718.53 + ], + [ + 395537.87, + 1546980.07 + ], + [ + 395521.7, + 1547241.36 + ], + [ + 395500.97, + 1547502.34 + ], + [ + 395475.69, + 1547762.91 + ], + [ + 395445.86, + 1548023.0 + ], + [ + 395411.5, + 1548282.53 + ], + [ + 395372.62, + 1548541.43 + ], + [ + 395329.22, + 1548799.6 + ], + [ + 395281.33, + 1549056.98 + ], + [ + 395228.95, + 1549313.48 + ], + [ + 395172.1, + 1549569.03 + ], + [ + 395110.8, + 1549823.55 + ], + [ + 395045.07, + 1550076.96 + ], + [ + 394974.93, + 1550329.18 + ], + [ + 394910.2, + 1550548.02 + ], + [ + 395018.39, + 1551369.79 + ], + [ + 395075.47, + 1552677.13 + ], + [ + 395018.39, + 1553984.46 + ], + [ + 394847.58, + 1555281.85 + ], + [ + 394564.35, + 1556559.41 + ], + [ + 394170.86, + 1557807.43 + ], + [ + 393670.08, + 1559016.4 + ], + [ + 393065.85, + 1560177.13 + ], + [ + 392665.56, + 1560805.45 + ], + [ + 393897.74, + 1562538.6 + ], + [ + 391653.82, + 1562554.69 + ], + [ + 392241.22, + 1563513.8 + ], + [ + 390544.71, + 1563409.59 + ], + [ + 389717.28, + 1564167.79 + ], + [ + 388679.11, + 1564964.41 + ], + [ + 387575.47, + 1565667.51 + ], + [ + 386414.74, + 1566271.74 + ], + [ + 385205.77, + 1566772.51 + ], + [ + 383957.75, + 1567166.01 + ], + [ + 382680.19, + 1567449.24 + ], + [ + 381382.8, + 1567620.05 + ], + [ + 380075.47, + 1567677.13 + ], + [ + 378768.13, + 1567620.05 + ], + [ + 377470.74, + 1567449.24 + ], + [ + 376193.18, + 1567166.01 + ], + [ + 374945.16, + 1566772.51 + ], + [ + 373736.19, + 1566271.74 + ], + [ + 373386.55, + 1566089.73 + ], + [ + 373479.61, + 1566068.7 + ], + [ + 373667.88, + 1566026.16 + ], + [ + 373854.04, + 1565985.42 + ], + [ + 373901.8, + 1565774.4 + ], + [ + 373960.65, + 1565530.08 + ], + [ + 373733.56, + 1565306.76 + ], + [ + 373919.45, + 1565244.78 + ], + [ + 373949.88, + 1565184.5 + ], + [ + 374087.66, + 1565122.79 + ], + [ + 374251.42, + 1565048.8 + ], + [ + 374436.16, + 1564667.4 + ], + [ + 374486.8, + 1564561.96 + ], + [ + 374561.72, + 1564508.04 + ], + [ + 374617.07, + 1564518.72 + ], + [ + 374679.14, + 1564473.88 + ], + [ + 374956.04, + 1564298.2 + ], + [ + 375075.26, + 1564223.08 + ], + [ + 375196.84, + 1564147.14 + ], + [ + 375497.24, + 1563960.58 + ], + [ + 375653.46, + 1563866.52 + ], + [ + 375728.66, + 1563809.62 + ], + [ + 375768.07, + 1563758.07 + ], + [ + 375828.79, + 1563678.63 + ], + [ + 376284.32, + 1563082.69 + ], + [ + 376580.65, + 1562693.82 + ], + [ + 376413.05, + 1562663.96 + ], + [ + 376390.36, + 1562659.92 + ], + [ + 376157.89, + 1562615.92 + ], + [ + 375744.23, + 1562540.76 + ], + [ + 375437.18, + 1562481.57 + ], + [ + 375403.4, + 1562475.06 + ], + [ + 374796.82, + 1562362.12 + ], + [ + 374798.72, + 1562321.54 + ], + [ + 374782.3, + 1562319.0 + ], + [ + 374631.14, + 1562295.57 + ], + [ + 374609.35, + 1562291.99 + ], + [ + 374423.28, + 1562263.28 + ], + [ + 374425.03, + 1562125.92 + ], + [ + 374425.3, + 1562105.02 + ], + [ + 374424.75, + 1562044.45 + ], + [ + 374367.9, + 1561891.24 + ], + [ + 374341.46, + 1561857.18 + ], + [ + 374313.3, + 1561870.3 + ], + [ + 374294.59, + 1561892.62 + ], + [ + 374256.64, + 1561944.68 + ], + [ + 374247.3, + 1562138.86 + ], + [ + 374232.52, + 1562189.35 + ], + [ + 374228.73, + 1562202.3 + ], + [ + 374220.14, + 1562231.86 + ], + [ + 374217.49, + 1562241.03 + ], + [ + 374199.26, + 1562302.69 + ], + [ + 374186.9, + 1562343.82 + ], + [ + 374184.2, + 1562353.79 + ], + [ + 374169.47, + 1562403.7 + ], + [ + 374156.54, + 1562447.52 + ], + [ + 374144.14, + 1562487.5 + ], + [ + 373924.06, + 1562514.44 + ], + [ + 373873.41, + 1562385.51 + ], + [ + 373839.22, + 1562298.5 + ], + [ + 373793.68, + 1562175.9 + ], + [ + 373620.56, + 1562143.78 + ], + [ + 373457.82, + 1562112.7 + ], + [ + 373367.62, + 1562292.42 + ], + [ + 373337.5, + 1562352.59 + ], + [ + 373291.86, + 1562443.79 + ], + [ + 373238.13, + 1562417.11 + ], + [ + 373170.25, + 1562549.8 + ], + [ + 373103.26, + 1562687.69 + ], + [ + 373085.6, + 1562724.04 + ], + [ + 373139.37, + 1562750.71 + ], + [ + 373073.42, + 1562883.29 + ], + [ + 373036.83, + 1562956.81 + ], + [ + 373011.28, + 1563008.14 + ], + [ + 372957.56, + 1562981.34 + ], + [ + 372903.11, + 1563091.17 + ], + [ + 372809.57, + 1563279.38 + ], + [ + 372847.56, + 1563298.18 + ], + [ + 372863.37, + 1563306.0 + ], + [ + 372863.33, + 1563306.08 + ], + [ + 372732.62, + 1563560.09 + ], + [ + 372551.23, + 1563799.43 + ], + [ + 372426.42, + 1563964.18 + ], + [ + 372381.17, + 1563928.63 + ], + [ + 372379.15, + 1563927.2 + ], + [ + 372142.7, + 1564231.09 + ], + [ + 372071.51, + 1564357.23 + ], + [ + 372098.12, + 1564371.08 + ], + [ + 372066.9, + 1564454.02 + ], + [ + 372094.65, + 1564465.44 + ], + [ + 372091.09, + 1564479.98 + ], + [ + 372072.52, + 1564559.54 + ], + [ + 372064.36, + 1564664.64 + ], + [ + 372066.11, + 1564715.34 + ], + [ + 372075.36, + 1564802.19 + ], + [ + 372102.47, + 1565010.35 + ], + [ + 372145.27, + 1565341.49 + ], + [ + 372146.98, + 1565354.69 + ], + [ + 372117.23, + 1565358.54 + ], + [ + 372119.64, + 1565377.12 + ], + [ + 371471.82, + 1564964.41 + ], + [ + 370433.65, + 1564167.79 + ], + [ + 369468.86, + 1563283.73 + ], + [ + 369411.86, + 1563221.52 + ], + [ + 369318.53, + 1563135.99 + ], + [ + 368935.12, + 1562717.58 + ], + [ + 367842.87, + 1562725.41 + ], + [ + 368312.8, + 1562043.94 + ], + [ + 366470.66, + 1561930.78 + ], + [ + 367401.2, + 1560761.57 + ], + [ + 366934.75, + 1560029.39 + ], + [ + 366330.51, + 1558868.66 + ], + [ + 365829.74, + 1557659.69 + ], + [ + 365436.24, + 1556411.68 + ], + [ + 365153.01, + 1555134.11 + ], + [ + 364982.21, + 1553836.73 + ], + [ + 364925.13, + 1552529.39 + ], + [ + 364982.21, + 1551222.05 + ], + [ + 365153.01, + 1549924.67 + ], + [ + 365436.24, + 1548647.11 + ], + [ + 365661.32, + 1547933.25 + ], + [ + 365640.04, + 1547741.33 + ], + [ + 365615.13, + 1547480.72 + ], + [ + 365594.78, + 1547219.72 + ], + [ + 365578.99, + 1546958.4 + ], + [ + 365567.76, + 1546696.84 + ], + [ + 365561.1, + 1546435.13 + ], + [ + 365559.0, + 1546173.34 + ], + [ + 365561.47, + 1545911.56 + ], + [ + 365568.52, + 1545649.86 + ], + [ + 365580.12, + 1545388.32 + ], + [ + 365596.3, + 1545127.02 + ], + [ + 365617.03, + 1544866.05 + ], + [ + 365642.31, + 1544605.48 + ], + [ + 365672.13, + 1544345.39 + ], + [ + 365706.49, + 1544085.85 + ], + [ + 365745.37, + 1543826.96 + ], + [ + 365788.77, + 1543568.79 + ], + [ + 365836.66, + 1543311.41 + ], + [ + 365889.04, + 1543054.91 + ], + [ + 365945.89, + 1542799.36 + ], + [ + 366007.19, + 1542544.84 + ], + [ + 366072.92, + 1542291.43 + ], + [ + 366143.07, + 1542039.21 + ], + [ + 366217.6, + 1541788.24 + ], + [ + 366296.5, + 1541538.62 + ], + [ + 366379.75, + 1541290.41 + ], + [ + 366467.32, + 1541043.7 + ], + [ + 366559.18, + 1540798.55 + ], + [ + 366655.31, + 1540555.04 + ], + [ + 366755.67, + 1540313.24 + ], + [ + 366860.23, + 1540073.23 + ], + [ + 366968.97, + 1539835.09 + ], + [ + 367081.85, + 1539598.88 + ], + [ + 367198.83, + 1539364.67 + ], + [ + 367319.88, + 1539132.54 + ], + [ + 367444.96, + 1538902.56 + ], + [ + 367574.04, + 1538674.8 + ], + [ + 367707.08, + 1538449.32 + ], + [ + 367844.03, + 1538226.21 + ], + [ + 367984.85, + 1538005.51 + ], + [ + 368129.5, + 1537787.31 + ], + [ + 368277.94, + 1537571.66 + ], + [ + 368430.12, + 1537358.64 + ], + [ + 368586.0, + 1537148.31 + ], + [ + 368745.52, + 1536940.72 + ], + [ + 368908.64, + 1536735.96 + ], + [ + 369075.31, + 1536534.07 + ], + [ + 369245.47, + 1536335.12 + ], + [ + 369419.09, + 1536139.17 + ], + [ + 369596.09, + 1535946.29 + ], + [ + 369776.44, + 1535756.52 + ], + [ + 369960.07, + 1535569.92 + ], + [ + 370146.93, + 1535386.56 + ], + [ + 370336.96, + 1535206.49 + ], + [ + 370530.1, + 1535029.76 + ], + [ + 370726.3, + 1534856.44 + ], + [ + 370925.5, + 1534686.56 + ], + [ + 371127.62, + 1534520.18 + ], + [ + 371162.0, + 1534492.47 + ], + [ + 367769.75, + 1529721.02 + ], + [ + 368789.47, + 1529713.71 + ], + [ + 368326.26, + 1528957.36 + ], + [ + 378092.43, + 1529557.28 + ], + [ + 379093.56, + 1529618.77 + ], + [ + 379400.54, + 1529637.63 + ], + [ + 382628.81, + 1529614.49 + ], + [ + 383874.86, + 1529605.55 + ], + [ + 393500.44, + 1529536.54 + ] + ] + }, + "5": { + "name": "Пятая подзона", + "restriction": "1. В границах пятой подзоны запрещается размещать опасные производственные объекты <5> , функционирование которых может повлиять на безопасность полетов воздушных судов. 2. В границах пятой подзоны допускается эксплуатация, строительство, реконструкция, капитальный ремонт, техническое перевооружение, консервация (далее - размещение) опасных производственных объектов при их соответствии установленным в пункте 3 настоящей таблицы ограничениям. 3. Максимальные радиусы зон поражения при происшествия", + "count": 135, + "sectors": [ + { + "label": null, + "count": 135, + "points": [ + [ + 386940.98, + 1515072.55 + ], + [ + 383461.73, + 1531376.91 + ], + [ + 383601.28, + 1531403.21 + ], + [ + 384357.68, + 1531569.85 + ], + [ + 385104.46, + 1531775.31 + ], + [ + 385839.65, + 1532019.04 + ], + [ + 386561.27, + 1532300.39 + ], + [ + 387267.41, + 1532618.62 + ], + [ + 387956.18, + 1532972.87 + ], + [ + 388625.74, + 1533362.21 + ], + [ + 389274.32, + 1533785.59 + ], + [ + 389900.18, + 1534241.88 + ], + [ + 390501.65, + 1534729.87 + ], + [ + 391077.13, + 1535248.25 + ], + [ + 391625.08, + 1535795.65 + ], + [ + 392144.05, + 1536370.61 + ], + [ + 392632.65, + 1536971.58 + ], + [ + 393089.57, + 1537596.98 + ], + [ + 393513.61, + 1538245.13 + ], + [ + 393903.62, + 1538914.3 + ], + [ + 394258.57, + 1539602.71 + ], + [ + 394577.51, + 1540308.52 + ], + [ + 394859.6, + 1541029.86 + ], + [ + 395104.07, + 1541764.8 + ], + [ + 395310.29, + 1542511.37 + ], + [ + 395477.69, + 1543267.6 + ], + [ + 395605.83, + 1544031.46 + ], + [ + 395694.38, + 1544800.91 + ], + [ + 395743.08, + 1545573.91 + ], + [ + 395751.82, + 1546348.39 + ], + [ + 395720.58, + 1547122.29 + ], + [ + 395649.42, + 1547893.55 + ], + [ + 395538.55, + 1548660.11 + ], + [ + 395388.26, + 1549419.92 + ], + [ + 395198.95, + 1550170.96 + ], + [ + 394971.13, + 1550911.23 + ], + [ + 394705.4, + 1551638.75 + ], + [ + 394402.46, + 1552351.58 + ], + [ + 394063.14, + 1553047.83 + ], + [ + 393688.33, + 1553725.63 + ], + [ + 393279.03, + 1554383.18 + ], + [ + 392836.34, + 1555018.73 + ], + [ + 392361.43, + 1555630.58 + ], + [ + 391855.57, + 1556217.11 + ], + [ + 391320.12, + 1556776.73 + ], + [ + 390756.48, + 1557307.98 + ], + [ + 390166.18, + 1557809.42 + ], + [ + 389550.78, + 1558279.72 + ], + [ + 388911.92, + 1558717.63 + ], + [ + 388251.32, + 1559121.98 + ], + [ + 387570.72, + 1559491.68 + ], + [ + 386871.94, + 1559825.77 + ], + [ + 386156.85, + 1560123.34 + ], + [ + 385427.36, + 1560383.6 + ], + [ + 384685.4, + 1560605.86 + ], + [ + 384553.43, + 1560644.87 + ], + [ + 383804.33, + 1560841.73 + ], + [ + 383046.07, + 1560999.66 + ], + [ + 383270.3, + 1562424.76 + ], + [ + 383241.79, + 1562424.97 + ], + [ + 385629.14, + 1577598.27 + ], + [ + 383044.98, + 1577616.8 + ], + [ + 383076.78, + 1577979.13 + ], + [ + 377791.48, + 1577654.46 + ], + [ + 376329.39, + 1577664.95 + ], + [ + 376343.57, + 1577565.52 + ], + [ + 373794.28, + 1577408.93 + ], + [ + 377015.66, + 1562313.01 + ], + [ + 376975.98, + 1562310.58 + ], + [ + 377273.13, + 1560918.07 + ], + [ + 377198.15, + 1560902.06 + ], + [ + 376445.59, + 1560718.91 + ], + [ + 375703.48, + 1560497.16 + ], + [ + 374973.8, + 1560237.4 + ], + [ + 374258.51, + 1559940.32 + ], + [ + 373559.51, + 1559606.72 + ], + [ + 372878.65, + 1559237.48 + ], + [ + 372217.77, + 1558833.58 + ], + [ + 371578.61, + 1558396.11 + ], + [ + 370962.89, + 1557926.23 + ], + [ + 370372.24, + 1557425.2 + ], + [ + 369808.24, + 1556894.34 + ], + [ + 369272.4, + 1556335.08 + ], + [ + 368766.14, + 1555748.91 + ], + [ + 368290.81, + 1555137.39 + ], + [ + 367847.68, + 1554502.14 + ], + [ + 367437.93, + 1553844.87 + ], + [ + 367062.66, + 1553167.32 + ], + [ + 366722.85, + 1552471.31 + ], + [ + 366419.43, + 1551758.69 + ], + [ + 366153.2, + 1551031.35 + ], + [ + 365924.87, + 1550291.24 + ], + [ + 365735.04, + 1549540.33 + ], + [ + 365584.23, + 1548780.62 + ], + [ + 365472.83, + 1548014.14 + ], + [ + 365401.15, + 1547242.93 + ], + [ + 365369.37, + 1546469.05 + ], + [ + 365377.58, + 1545694.56 + ], + [ + 365425.75, + 1544921.53 + ], + [ + 365513.77, + 1544152.02 + ], + [ + 365641.39, + 1543388.07 + ], + [ + 365808.27, + 1542631.73 + ], + [ + 366013.97, + 1541885.01 + ], + [ + 366257.94, + 1541149.91 + ], + [ + 366539.53, + 1540428.38 + ], + [ + 366857.99, + 1539722.34 + ], + [ + 367212.46, + 1539033.69 + ], + [ + 367602.02, + 1538364.25 + ], + [ + 368025.61, + 1537715.81 + ], + [ + 368482.1, + 1537090.1 + ], + [ + 368970.29, + 1536488.79 + ], + [ + 369488.86, + 1535913.48 + ], + [ + 370036.44, + 1535365.7 + ], + [ + 370611.56, + 1534846.92 + ], + [ + 371212.69, + 1534358.52 + ], + [ + 371838.24, + 1533901.8 + ], + [ + 372486.52, + 1533477.97 + ], + [ + 373155.82, + 1533088.18 + ], + [ + 373844.35, + 1532733.45 + ], + [ + 374550.27, + 1532414.74 + ], + [ + 375271.7, + 1532132.89 + ], + [ + 375431.54, + 1532066.68 + ], + [ + 376679.56, + 1531673.18 + ], + [ + 377180.54, + 1531562.11 + ], + [ + 377834.71, + 1531417.09 + ], + [ + 377957.12, + 1531389.95 + ], + [ + 378017.58, + 1531381.99 + ], + [ + 378495.6, + 1531301.28 + ], + [ + 375877.67, + 1514662.5 + ], + [ + 377671.41, + 1514649.64 + ], + [ + 377658.48, + 1514502.35 + ], + [ + 379807.09, + 1514634.33 + ], + [ + 385177.43, + 1514595.83 + ], + [ + 385125.32, + 1514961.02 + ], + [ + 386940.98, + 1515072.55 + ] + ] + } + ], + "points": [ + [ + 386940.98, + 1515072.55 + ], + [ + 383461.73, + 1531376.91 + ], + [ + 383601.28, + 1531403.21 + ], + [ + 384357.68, + 1531569.85 + ], + [ + 385104.46, + 1531775.31 + ], + [ + 385839.65, + 1532019.04 + ], + [ + 386561.27, + 1532300.39 + ], + [ + 387267.41, + 1532618.62 + ], + [ + 387956.18, + 1532972.87 + ], + [ + 388625.74, + 1533362.21 + ], + [ + 389274.32, + 1533785.59 + ], + [ + 389900.18, + 1534241.88 + ], + [ + 390501.65, + 1534729.87 + ], + [ + 391077.13, + 1535248.25 + ], + [ + 391625.08, + 1535795.65 + ], + [ + 392144.05, + 1536370.61 + ], + [ + 392632.65, + 1536971.58 + ], + [ + 393089.57, + 1537596.98 + ], + [ + 393513.61, + 1538245.13 + ], + [ + 393903.62, + 1538914.3 + ], + [ + 394258.57, + 1539602.71 + ], + [ + 394577.51, + 1540308.52 + ], + [ + 394859.6, + 1541029.86 + ], + [ + 395104.07, + 1541764.8 + ], + [ + 395310.29, + 1542511.37 + ], + [ + 395477.69, + 1543267.6 + ], + [ + 395605.83, + 1544031.46 + ], + [ + 395694.38, + 1544800.91 + ], + [ + 395743.08, + 1545573.91 + ], + [ + 395751.82, + 1546348.39 + ], + [ + 395720.58, + 1547122.29 + ], + [ + 395649.42, + 1547893.55 + ], + [ + 395538.55, + 1548660.11 + ], + [ + 395388.26, + 1549419.92 + ], + [ + 395198.95, + 1550170.96 + ], + [ + 394971.13, + 1550911.23 + ], + [ + 394705.4, + 1551638.75 + ], + [ + 394402.46, + 1552351.58 + ], + [ + 394063.14, + 1553047.83 + ], + [ + 393688.33, + 1553725.63 + ], + [ + 393279.03, + 1554383.18 + ], + [ + 392836.34, + 1555018.73 + ], + [ + 392361.43, + 1555630.58 + ], + [ + 391855.57, + 1556217.11 + ], + [ + 391320.12, + 1556776.73 + ], + [ + 390756.48, + 1557307.98 + ], + [ + 390166.18, + 1557809.42 + ], + [ + 389550.78, + 1558279.72 + ], + [ + 388911.92, + 1558717.63 + ], + [ + 388251.32, + 1559121.98 + ], + [ + 387570.72, + 1559491.68 + ], + [ + 386871.94, + 1559825.77 + ], + [ + 386156.85, + 1560123.34 + ], + [ + 385427.36, + 1560383.6 + ], + [ + 384685.4, + 1560605.86 + ], + [ + 384553.43, + 1560644.87 + ], + [ + 383804.33, + 1560841.73 + ], + [ + 383046.07, + 1560999.66 + ], + [ + 383270.3, + 1562424.76 + ], + [ + 383241.79, + 1562424.97 + ], + [ + 385629.14, + 1577598.27 + ], + [ + 383044.98, + 1577616.8 + ], + [ + 383076.78, + 1577979.13 + ], + [ + 377791.48, + 1577654.46 + ], + [ + 376329.39, + 1577664.95 + ], + [ + 376343.57, + 1577565.52 + ], + [ + 373794.28, + 1577408.93 + ], + [ + 377015.66, + 1562313.01 + ], + [ + 376975.98, + 1562310.58 + ], + [ + 377273.13, + 1560918.07 + ], + [ + 377198.15, + 1560902.06 + ], + [ + 376445.59, + 1560718.91 + ], + [ + 375703.48, + 1560497.16 + ], + [ + 374973.8, + 1560237.4 + ], + [ + 374258.51, + 1559940.32 + ], + [ + 373559.51, + 1559606.72 + ], + [ + 372878.65, + 1559237.48 + ], + [ + 372217.77, + 1558833.58 + ], + [ + 371578.61, + 1558396.11 + ], + [ + 370962.89, + 1557926.23 + ], + [ + 370372.24, + 1557425.2 + ], + [ + 369808.24, + 1556894.34 + ], + [ + 369272.4, + 1556335.08 + ], + [ + 368766.14, + 1555748.91 + ], + [ + 368290.81, + 1555137.39 + ], + [ + 367847.68, + 1554502.14 + ], + [ + 367437.93, + 1553844.87 + ], + [ + 367062.66, + 1553167.32 + ], + [ + 366722.85, + 1552471.31 + ], + [ + 366419.43, + 1551758.69 + ], + [ + 366153.2, + 1551031.35 + ], + [ + 365924.87, + 1550291.24 + ], + [ + 365735.04, + 1549540.33 + ], + [ + 365584.23, + 1548780.62 + ], + [ + 365472.83, + 1548014.14 + ], + [ + 365401.15, + 1547242.93 + ], + [ + 365369.37, + 1546469.05 + ], + [ + 365377.58, + 1545694.56 + ], + [ + 365425.75, + 1544921.53 + ], + [ + 365513.77, + 1544152.02 + ], + [ + 365641.39, + 1543388.07 + ], + [ + 365808.27, + 1542631.73 + ], + [ + 366013.97, + 1541885.01 + ], + [ + 366257.94, + 1541149.91 + ], + [ + 366539.53, + 1540428.38 + ], + [ + 366857.99, + 1539722.34 + ], + [ + 367212.46, + 1539033.69 + ], + [ + 367602.02, + 1538364.25 + ], + [ + 368025.61, + 1537715.81 + ], + [ + 368482.1, + 1537090.1 + ], + [ + 368970.29, + 1536488.79 + ], + [ + 369488.86, + 1535913.48 + ], + [ + 370036.44, + 1535365.7 + ], + [ + 370611.56, + 1534846.92 + ], + [ + 371212.69, + 1534358.52 + ], + [ + 371838.24, + 1533901.8 + ], + [ + 372486.52, + 1533477.97 + ], + [ + 373155.82, + 1533088.18 + ], + [ + 373844.35, + 1532733.45 + ], + [ + 374550.27, + 1532414.74 + ], + [ + 375271.7, + 1532132.89 + ], + [ + 375431.54, + 1532066.68 + ], + [ + 376679.56, + 1531673.18 + ], + [ + 377180.54, + 1531562.11 + ], + [ + 377834.71, + 1531417.09 + ], + [ + 377957.12, + 1531389.95 + ], + [ + 378017.58, + 1531381.99 + ], + [ + 378495.6, + 1531301.28 + ], + [ + 375877.67, + 1514662.5 + ], + [ + 377671.41, + 1514649.64 + ], + [ + 377658.48, + 1514502.35 + ], + [ + 379807.09, + 1514634.33 + ], + [ + 385177.43, + 1514595.83 + ], + [ + 385125.32, + 1514961.02 + ], + [ + 386940.98, + 1515072.55 + ] + ] + }, + "6": { + "name": "Шестая подзона", + "restriction": "1. В границах шестой подзоны запрещается размещать объекты, способствующие привлечению и массовому скоплению птиц.", + "count": 73, + "sectors": [ + { + "label": null, + "count": 73, + "points": [ + [ + 395561.85, + 1546162.06 + ], + [ + 395504.77, + 1547469.4 + ], + [ + 395333.96, + 1548766.79 + ], + [ + 395050.73, + 1550044.35 + ], + [ + 394657.24, + 1551292.37 + ], + [ + 394156.46, + 1552501.34 + ], + [ + 393552.23, + 1553662.06 + ], + [ + 392849.13, + 1554765.71 + ], + [ + 392052.51, + 1555803.88 + ], + [ + 391168.45, + 1556768.67 + ], + [ + 390203.66, + 1557652.73 + ], + [ + 389165.49, + 1558449.34 + ], + [ + 388061.85, + 1559152.45 + ], + [ + 386901.12, + 1559756.68 + ], + [ + 385692.15, + 1560257.45 + ], + [ + 384444.13, + 1560650.95 + ], + [ + 383166.57, + 1560934.18 + ], + [ + 381869.18, + 1561104.98 + ], + [ + 380561.85, + 1561162.06 + ], + [ + 379254.51, + 1561104.98 + ], + [ + 377957.12, + 1560934.18 + ], + [ + 376679.56, + 1560650.95 + ], + [ + 375431.54, + 1560257.45 + ], + [ + 374222.57, + 1559756.68 + ], + [ + 373061.85, + 1559152.45 + ], + [ + 371958.2, + 1558449.34 + ], + [ + 370920.03, + 1557652.73 + ], + [ + 369955.25, + 1556768.67 + ], + [ + 369071.18, + 1555803.88 + ], + [ + 368274.57, + 1554765.71 + ], + [ + 367571.47, + 1553662.06 + ], + [ + 366967.23, + 1552501.34 + ], + [ + 366466.46, + 1551292.37 + ], + [ + 366072.96, + 1550044.35 + ], + [ + 365789.73, + 1548766.79 + ], + [ + 365618.93, + 1547469.4 + ], + [ + 365561.85, + 1546162.06 + ], + [ + 365618.93, + 1544854.73 + ], + [ + 365789.73, + 1543557.34 + ], + [ + 366072.96, + 1542279.78 + ], + [ + 366466.46, + 1541031.76 + ], + [ + 366967.23, + 1539822.79 + ], + [ + 367571.47, + 1538662.06 + ], + [ + 368274.57, + 1537558.42 + ], + [ + 369071.18, + 1536520.25 + ], + [ + 369955.25, + 1535555.46 + ], + [ + 370920.03, + 1534671.4 + ], + [ + 371958.2, + 1533874.78 + ], + [ + 373061.85, + 1533171.68 + ], + [ + 374222.57, + 1532567.45 + ], + [ + 375431.54, + 1532066.67 + ], + [ + 376679.56, + 1531673.18 + ], + [ + 377957.12, + 1531389.95 + ], + [ + 379254.51, + 1531219.14 + ], + [ + 380561.85, + 1531162.06 + ], + [ + 381869.18, + 1531219.14 + ], + [ + 383166.57, + 1531389.95 + ], + [ + 384444.13, + 1531673.18 + ], + [ + 385692.15, + 1532066.67 + ], + [ + 386901.12, + 1532567.45 + ], + [ + 388061.85, + 1533171.68 + ], + [ + 389165.49, + 1533874.78 + ], + [ + 390203.66, + 1534671.4 + ], + [ + 391168.45, + 1535555.46 + ], + [ + 392052.51, + 1536520.25 + ], + [ + 392849.13, + 1537558.42 + ], + [ + 393552.23, + 1538662.06 + ], + [ + 394156.46, + 1539822.79 + ], + [ + 394657.24, + 1541031.76 + ], + [ + 395050.73, + 1542279.78 + ], + [ + 395333.96, + 1543557.34 + ], + [ + 395504.77, + 1544854.73 + ], + [ + 395561.85, + 1546162.06 + ] + ] + } + ], + "points": [ + [ + 395561.85, + 1546162.06 + ], + [ + 395504.77, + 1547469.4 + ], + [ + 395333.96, + 1548766.79 + ], + [ + 395050.73, + 1550044.35 + ], + [ + 394657.24, + 1551292.37 + ], + [ + 394156.46, + 1552501.34 + ], + [ + 393552.23, + 1553662.06 + ], + [ + 392849.13, + 1554765.71 + ], + [ + 392052.51, + 1555803.88 + ], + [ + 391168.45, + 1556768.67 + ], + [ + 390203.66, + 1557652.73 + ], + [ + 389165.49, + 1558449.34 + ], + [ + 388061.85, + 1559152.45 + ], + [ + 386901.12, + 1559756.68 + ], + [ + 385692.15, + 1560257.45 + ], + [ + 384444.13, + 1560650.95 + ], + [ + 383166.57, + 1560934.18 + ], + [ + 381869.18, + 1561104.98 + ], + [ + 380561.85, + 1561162.06 + ], + [ + 379254.51, + 1561104.98 + ], + [ + 377957.12, + 1560934.18 + ], + [ + 376679.56, + 1560650.95 + ], + [ + 375431.54, + 1560257.45 + ], + [ + 374222.57, + 1559756.68 + ], + [ + 373061.85, + 1559152.45 + ], + [ + 371958.2, + 1558449.34 + ], + [ + 370920.03, + 1557652.73 + ], + [ + 369955.25, + 1556768.67 + ], + [ + 369071.18, + 1555803.88 + ], + [ + 368274.57, + 1554765.71 + ], + [ + 367571.47, + 1553662.06 + ], + [ + 366967.23, + 1552501.34 + ], + [ + 366466.46, + 1551292.37 + ], + [ + 366072.96, + 1550044.35 + ], + [ + 365789.73, + 1548766.79 + ], + [ + 365618.93, + 1547469.4 + ], + [ + 365561.85, + 1546162.06 + ], + [ + 365618.93, + 1544854.73 + ], + [ + 365789.73, + 1543557.34 + ], + [ + 366072.96, + 1542279.78 + ], + [ + 366466.46, + 1541031.76 + ], + [ + 366967.23, + 1539822.79 + ], + [ + 367571.47, + 1538662.06 + ], + [ + 368274.57, + 1537558.42 + ], + [ + 369071.18, + 1536520.25 + ], + [ + 369955.25, + 1535555.46 + ], + [ + 370920.03, + 1534671.4 + ], + [ + 371958.2, + 1533874.78 + ], + [ + 373061.85, + 1533171.68 + ], + [ + 374222.57, + 1532567.45 + ], + [ + 375431.54, + 1532066.67 + ], + [ + 376679.56, + 1531673.18 + ], + [ + 377957.12, + 1531389.95 + ], + [ + 379254.51, + 1531219.14 + ], + [ + 380561.85, + 1531162.06 + ], + [ + 381869.18, + 1531219.14 + ], + [ + 383166.57, + 1531389.95 + ], + [ + 384444.13, + 1531673.18 + ], + [ + 385692.15, + 1532066.67 + ], + [ + 386901.12, + 1532567.45 + ], + [ + 388061.85, + 1533171.68 + ], + [ + 389165.49, + 1533874.78 + ], + [ + 390203.66, + 1534671.4 + ], + [ + 391168.45, + 1535555.46 + ], + [ + 392052.51, + 1536520.25 + ], + [ + 392849.13, + 1537558.42 + ], + [ + 393552.23, + 1538662.06 + ], + [ + 394156.46, + 1539822.79 + ], + [ + 394657.24, + 1541031.76 + ], + [ + 395050.73, + 1542279.78 + ], + [ + 395333.96, + 1543557.34 + ], + [ + 395504.77, + 1544854.73 + ], + [ + 395561.85, + 1546162.06 + ] + ] + } + }, + "aggregate_outline": { + "points": [ + [ + 386940.98, + 1515072.55 + ], + [ + 383839.67, + 1529605.8 + ], + [ + 383874.86, + 1529605.55 + ], + [ + 393500.44, + 1529536.54 + ], + [ + 392860.57, + 1530464.45 + ], + [ + 394432.79, + 1530561.02 + ], + [ + 390858.86, + 1535051.64 + ], + [ + 391077.13, + 1535248.25 + ], + [ + 391625.08, + 1535795.65 + ], + [ + 392144.05, + 1536370.61 + ], + [ + 392632.65, + 1536971.58 + ], + [ + 393089.57, + 1537596.98 + ], + [ + 393513.61, + 1538245.13 + ], + [ + 393903.62, + 1538914.3 + ], + [ + 394258.57, + 1539602.71 + ], + [ + 394577.51, + 1540308.52 + ], + [ + 394859.6, + 1541029.86 + ], + [ + 395104.07, + 1541764.8 + ], + [ + 395310.29, + 1542511.37 + ], + [ + 395477.69, + 1543267.6 + ], + [ + 395605.83, + 1544031.46 + ], + [ + 395694.38, + 1544800.91 + ], + [ + 395743.08, + 1545573.91 + ], + [ + 395751.82, + 1546348.39 + ], + [ + 395720.58, + 1547122.29 + ], + [ + 395649.42, + 1547893.55 + ], + [ + 395538.55, + 1548660.11 + ], + [ + 395388.26, + 1549419.92 + ], + [ + 395198.95, + 1550170.96 + ], + [ + 394971.13, + 1550911.23 + ], + [ + 394961.49, + 1550937.61 + ], + [ + 395018.39, + 1551369.79 + ], + [ + 395075.47, + 1552677.13 + ], + [ + 395018.39, + 1553984.46 + ], + [ + 394847.58, + 1555281.85 + ], + [ + 394564.35, + 1556559.41 + ], + [ + 394170.86, + 1557807.43 + ], + [ + 393670.08, + 1559016.4 + ], + [ + 393065.85, + 1560177.13 + ], + [ + 392665.56, + 1560805.45 + ], + [ + 393897.74, + 1562538.6 + ], + [ + 391653.82, + 1562554.69 + ], + [ + 392241.22, + 1563513.8 + ], + [ + 390544.71, + 1563409.59 + ], + [ + 389717.28, + 1564167.79 + ], + [ + 388679.11, + 1564964.41 + ], + [ + 387575.47, + 1565667.51 + ], + [ + 386414.74, + 1566271.74 + ], + [ + 385205.77, + 1566772.51 + ], + [ + 383986.33, + 1567157.0 + ], + [ + 385629.14, + 1577598.27 + ], + [ + 383044.98, + 1577616.8 + ], + [ + 383076.78, + 1577979.13 + ], + [ + 377791.48, + 1577654.46 + ], + [ + 376329.39, + 1577664.95 + ], + [ + 376343.57, + 1577565.52 + ], + [ + 373794.28, + 1577408.93 + ], + [ + 375993.49, + 1567103.05 + ], + [ + 374945.16, + 1566772.51 + ], + [ + 373736.19, + 1566271.74 + ], + [ + 373386.55, + 1566089.73 + ], + [ + 373667.88, + 1566026.16 + ], + [ + 373854.04, + 1565985.42 + ], + [ + 373901.8, + 1565774.4 + ], + [ + 373960.65, + 1565530.08 + ], + [ + 373733.56, + 1565306.76 + ], + [ + 373919.45, + 1565244.78 + ], + [ + 373949.88, + 1565184.5 + ], + [ + 374087.66, + 1565122.79 + ], + [ + 374251.42, + 1565048.8 + ], + [ + 374436.16, + 1564667.4 + ], + [ + 374486.8, + 1564561.96 + ], + [ + 374561.72, + 1564508.04 + ], + [ + 374617.07, + 1564518.72 + ], + [ + 374679.14, + 1564473.88 + ], + [ + 374956.04, + 1564298.2 + ], + [ + 375075.26, + 1564223.08 + ], + [ + 375196.84, + 1564147.14 + ], + [ + 375497.24, + 1563960.58 + ], + [ + 375653.46, + 1563866.52 + ], + [ + 375728.66, + 1563809.62 + ], + [ + 375768.07, + 1563758.07 + ], + [ + 375828.79, + 1563678.63 + ], + [ + 376284.32, + 1563082.69 + ], + [ + 376580.65, + 1562693.82 + ], + [ + 376390.36, + 1562659.92 + ], + [ + 376157.89, + 1562615.92 + ], + [ + 375744.23, + 1562540.76 + ], + [ + 375403.4, + 1562475.06 + ], + [ + 374796.82, + 1562362.12 + ], + [ + 374798.72, + 1562321.54 + ], + [ + 374782.3, + 1562319.0 + ], + [ + 374631.14, + 1562295.57 + ], + [ + 374609.35, + 1562291.99 + ], + [ + 374423.28, + 1562263.28 + ], + [ + 374425.03, + 1562125.92 + ], + [ + 374425.3, + 1562105.44 + ], + [ + 374424.75, + 1562044.45 + ], + [ + 374367.9, + 1561891.24 + ], + [ + 374341.46, + 1561857.18 + ], + [ + 374313.3, + 1561870.3 + ], + [ + 374294.59, + 1561892.62 + ], + [ + 374256.64, + 1561944.68 + ], + [ + 374247.3, + 1562138.86 + ], + [ + 374228.73, + 1562202.3 + ], + [ + 374220.14, + 1562231.86 + ], + [ + 374217.49, + 1562241.03 + ], + [ + 374199.26, + 1562302.69 + ], + [ + 374186.9, + 1562343.82 + ], + [ + 374184.2, + 1562353.79 + ], + [ + 374156.54, + 1562447.52 + ], + [ + 374144.14, + 1562487.5 + ], + [ + 373924.06, + 1562514.44 + ], + [ + 373839.22, + 1562298.5 + ], + [ + 373793.68, + 1562175.9 + ], + [ + 373620.56, + 1562143.78 + ], + [ + 373457.82, + 1562112.7 + ], + [ + 373367.62, + 1562292.42 + ], + [ + 373291.86, + 1562443.79 + ], + [ + 373238.13, + 1562417.11 + ], + [ + 373170.25, + 1562549.8 + ], + [ + 373085.6, + 1562724.04 + ], + [ + 373139.37, + 1562750.71 + ], + [ + 373073.42, + 1562883.29 + ], + [ + 373036.83, + 1562956.81 + ], + [ + 373011.28, + 1563008.14 + ], + [ + 372957.56, + 1562981.34 + ], + [ + 372903.11, + 1563091.17 + ], + [ + 372809.57, + 1563279.38 + ], + [ + 372847.56, + 1563298.18 + ], + [ + 372863.33, + 1563306.08 + ], + [ + 372732.62, + 1563560.09 + ], + [ + 372551.23, + 1563799.43 + ], + [ + 372426.42, + 1563964.18 + ], + [ + 372381.17, + 1563928.63 + ], + [ + 372379.15, + 1563927.2 + ], + [ + 372142.7, + 1564231.09 + ], + [ + 372071.51, + 1564357.23 + ], + [ + 372098.12, + 1564371.08 + ], + [ + 372066.9, + 1564454.02 + ], + [ + 372094.65, + 1564465.44 + ], + [ + 372091.09, + 1564479.98 + ], + [ + 372072.52, + 1564559.54 + ], + [ + 372064.36, + 1564664.64 + ], + [ + 372066.11, + 1564715.34 + ], + [ + 372075.36, + 1564802.19 + ], + [ + 372102.47, + 1565010.35 + ], + [ + 372146.98, + 1565354.69 + ], + [ + 372117.23, + 1565358.54 + ], + [ + 372119.64, + 1565377.12 + ], + [ + 371471.82, + 1564964.41 + ], + [ + 370433.65, + 1564167.79 + ], + [ + 369468.86, + 1563283.73 + ], + [ + 369411.86, + 1563221.52 + ], + [ + 369318.53, + 1563135.99 + ], + [ + 368935.12, + 1562717.58 + ], + [ + 367842.87, + 1562725.41 + ], + [ + 368312.8, + 1562043.94 + ], + [ + 366470.66, + 1561930.78 + ], + [ + 367401.2, + 1560761.57 + ], + [ + 366934.75, + 1560029.39 + ], + [ + 366330.51, + 1558868.66 + ], + [ + 365829.74, + 1557659.69 + ], + [ + 365436.24, + 1556411.68 + ], + [ + 365153.01, + 1555134.11 + ], + [ + 364982.21, + 1553836.73 + ], + [ + 364925.13, + 1552529.39 + ], + [ + 364982.21, + 1551222.05 + ], + [ + 365153.01, + 1549924.67 + ], + [ + 365436.24, + 1548647.11 + ], + [ + 365524.25, + 1548367.96 + ], + [ + 365472.83, + 1548014.14 + ], + [ + 365401.15, + 1547242.93 + ], + [ + 365369.37, + 1546469.05 + ], + [ + 365377.58, + 1545694.56 + ], + [ + 365425.75, + 1544921.53 + ], + [ + 365513.77, + 1544152.02 + ], + [ + 365641.39, + 1543388.07 + ], + [ + 365808.27, + 1542631.73 + ], + [ + 366013.97, + 1541885.01 + ], + [ + 366257.94, + 1541149.91 + ], + [ + 366539.53, + 1540428.38 + ], + [ + 366857.99, + 1539722.34 + ], + [ + 367212.46, + 1539033.69 + ], + [ + 367602.02, + 1538364.25 + ], + [ + 368025.61, + 1537715.81 + ], + [ + 368482.1, + 1537090.1 + ], + [ + 368970.29, + 1536488.79 + ], + [ + 369488.86, + 1535913.48 + ], + [ + 370036.44, + 1535365.7 + ], + [ + 370611.56, + 1534846.92 + ], + [ + 371120.19, + 1534433.67 + ], + [ + 367769.75, + 1529721.02 + ], + [ + 368789.47, + 1529713.71 + ], + [ + 368326.26, + 1528957.36 + ], + [ + 378092.43, + 1529557.28 + ], + [ + 378222.46, + 1529565.26 + ], + [ + 375877.67, + 1514662.5 + ], + [ + 377671.41, + 1514649.64 + ], + [ + 377658.48, + 1514502.35 + ], + [ + 379807.09, + 1514634.33 + ], + [ + 385177.43, + 1514595.83 + ], + [ + 385125.32, + 1514961.02 + ], + [ + 386940.98, + 1515072.55 + ] + ], + "count": 204 + } +} diff --git a/data/sql/142_pat_subzones.sql b/data/sql/142_pat_subzones.sql new file mode 100644 index 00000000..77fd97a8 --- /dev/null +++ b/data/sql/142_pat_subzones.sql @@ -0,0 +1,60 @@ +-- 142_pat_subzones.sql +-- #1065 / #1067 (Site Finder v2 / GG-форсайт) — подзоны приаэродромных территорий (ПАТ). +-- Первый аэродром: Кольцово (Приказ Росавиации № 367-П от 02.06.2023, ред. 804-П от 27.10.2025). +-- +-- Геометрия строится Celery-воркером pat_subzones_load из извлечённых координат МСК-66 +-- (файл data/pat/koltsovo_367p_subzones.json) с репроекцией → WGS84 (EPSG:4326). +-- +-- Поддерживает несколько аэродромов (поле aerodrome), subzone_no=0 — общий контур. +-- +-- Deploy: auto-applied deploy.yml через _schema_migrations (ровно один раз по NN=142). +-- Idempotent (CREATE TABLE/INDEX IF NOT EXISTS + guarded DO-блоки). +-- Данные загружаются отдельно Celery-воркером (tasks.pat_subzones_load.load_koltsovo_pat). + +BEGIN; + +-- ── 1. Таблица pat_subzones ─────────────────────────────────────────────────── +CREATE TABLE IF NOT EXISTS pat_subzones ( + id BIGSERIAL PRIMARY KEY, + aerodrome TEXT NOT NULL, -- 'Екатеринбург (Кольцово)' и т.д. + subzone_no INTEGER NOT NULL, -- 1..6; 0 = aggregate_outline + name TEXT, -- 'Первая подзона' и т.д. + restriction TEXT, -- текст ограничения из приказа + geom geometry(MultiPolygon, 4326) NOT NULL, + source TEXT, -- URL/реквизит НПА + fetched_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +COMMENT ON TABLE pat_subzones IS + 'Подзоны приаэродромных территорий (ПАТ), EPSG:4326 (#1065/#1067). ' + 'Источник: Приказы Росавиации. Первый аэродром: Кольцово (367-П/804-П). ' + 'Геометрия загружается воркером tasks.pat_subzones_load.load_koltsovo_pat.'; + +COMMENT ON COLUMN pat_subzones.aerodrome IS + 'Наименование аэродрома из НПА, напр. «Екатеринбург (Кольцово)».'; +COMMENT ON COLUMN pat_subzones.subzone_no IS + 'Номер подзоны 1..6 по НБНРД. 0 — aggregate_outline (общий контур ПАТ).'; +COMMENT ON COLUMN pat_subzones.geom IS + 'MultiPolygon WGS84. Внутренние границы секторов стали дырками Polygon.'; + +-- ── 2. UNIQUE (aerodrome, subzone_no) — ключ для UPSERT ────────────────────── +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'uq_pat_subzones_aerodrome_no' + ) THEN + ALTER TABLE pat_subzones + ADD CONSTRAINT uq_pat_subzones_aerodrome_no UNIQUE (aerodrome, subzone_no); + END IF; +END +$$; + +-- ── 3. GIST-индекс по геометрии (ST_Intersects / parcel-lookup) ────────────── +CREATE INDEX IF NOT EXISTS idx_pat_subzones_geom + ON pat_subzones USING GIST (geom); + +-- ── 4. Индекс по аэродрому (фильтрация per-aerodrome) ──────────────────────── +CREATE INDEX IF NOT EXISTS idx_pat_subzones_aerodrome + ON pat_subzones (aerodrome); + +COMMIT; -- 2.45.3