[ИРД-1] ГП 2045 — функциональные зоны генплана в analyze #1058

Closed
opened 2026-06-05 03:46:19 +00:00 by bot-backend · 8 comments
Collaborator

Запрос команды (Макс/Леха) 2026-06-04 для «волшебной таблицы» (= analyze/§22). Источники: ПКК pkk.rosreestr.ru, НСПД нспд.рф, portal.okn.midural.ru, приказы ПАТ.

Существующее: 🟡 PARTIAL. analyze.zoning/nspd_zoning отдаёт территориальные зоны (ПЗЗ, НСПД 875838) — это НЕ функциональные зоны генплана. Отдельного функц.-зонального слоя нет.
Пробел: функц. зона генплана (до 2045) по геометрии участка.
Источник: НСПД «Функц. зоны / Документы террит. планирования» (ID — harvest #1057); fallback ФГИС ТП (фгистп.рф WMS, авторитетный открытый) / ekburg ИСОГД. Формат WMS GetFeatureInfo. Queryable by-geometry. Feasibility: easy через НСПД-клиент после harvest ID.
План: harvest ID (#1057) → fetch функц.зону по centroid/bbox → новое поле functional_zone в analyze (+ соответствие ПЗЗ).
Acceptance: для реального участка возвращается функц.зона генплана.
Связано: #106 (ФГИС ТП функц.зоны), #28 (ПЗЗ import). prereq #1057.

_Запрос команды (Макс/Леха) 2026-06-04 для «волшебной таблицы» (= analyze/§22). Источники: ПКК pkk.rosreestr.ru, НСПД нспд.рф, portal.okn.midural.ru, приказы ПАТ._ **Существующее:** 🟡 PARTIAL. `analyze.zoning`/`nspd_zoning` отдаёт **территориальные зоны (ПЗЗ, НСПД 875838)** — это НЕ функциональные зоны генплана. Отдельного функц.-зонального слоя нет. **Пробел:** функц. зона генплана (до 2045) по геометрии участка. **Источник:** НСПД «Функц. зоны / Документы террит. планирования» (ID — harvest #1057); fallback **ФГИС ТП** (фгистп.рф WMS, авторитетный открытый) / ekburg ИСОГД. Формат WMS GetFeatureInfo. Queryable by-geometry. Feasibility: **easy** через НСПД-клиент после harvest ID. **План:** harvest ID (#1057) → fetch функц.зону по centroid/bbox → новое поле `functional_zone` в analyze (+ соответствие ПЗЗ). **Acceptance:** для реального участка возвращается функц.зона генплана. **Связано:** #106 (ФГИС ТП функц.зоны), #28 (ПЗЗ import). prereq #1057.
lekss361 added this to the Site Finder v2 — Foresight (GG-форсайт) milestone 2026-06-05 07:22:42 +00:00
Owner

🔬 Research-дополнение (2026-06-05)

Источник (verified): Функц. зоны ЕКБ доступны как federal слой ФГИС ТП — в НСПД это layer ID 846615 «Функциональные зоны». Эмпирически подтверждён в #106 (18 hits на 4 контрольных точках ЕКБ — Центр/Уралмаш/Эльмаш/Химмаш = 100% покрытие), с полем-схемой obshnz (Жилая/Производственная/ОД/Рекреационная/С-Х/…), obshoz (подкатегория), status. ⚠️ Это меняет план: для пункта ГП harvest #1057 уже частично сделан — ID известен, нужна только верификация что 846615 ещё отвечает на VPS (НСПД геоблок не-РФ IP).

Правовая основа: функц. зоны — генплан, ГрК ст.23; территориальные зоны — ПЗЗ, ГрК ст.30/35. Текущий nspd_zoning (875838 ПЗЗ) и новый functional_zone (846615 ГП) — два РАЗНЫХ юр. слоя, не дубль. Иерархия: функц. зонирование ГП = основа для градзонирования ПЗЗ (ст.30 ч.2).

Статус ГП ЕКБ: генплан до 2045 утверждён — Приказ Минстроя Свердл. обл. от 01.06.2023 № 335-П (РБК). Действующий документ → данные не «черновик». ФГИС ТП официально отдаёт WMS/WFS (fgistp.economy.gov.ru), но публичной доки с прямым layer-URL нет — на практике проще тащить через зеркало в НСПД (846615), как и остальные слои клиента.

Recommended fetch (aligned to nspd_client): NSPDClient.get_feature_info(846615, centroid_lon, centroid_lat) по центроиду участка (EPSG:3857 micro-bbox, реализовано). Точечный запрос достаточен. Маппинг obshnz→совместимость с МКД. Overlay-таблицу по образцу cad_territorial_zones (data/sql/102).

Sharpened DoD:

  • verify на VPS: 846615 отвечает GetFeatureInfo по 3–5 тест-cad ЕКБ (НЕ пусто), properties.obshnz непуст;
  • "functional_zone_gp": 846615 в LAYERS;
  • поле analyze.functional_zone {obshnz, obshoz, status, source:"fgis_tp_846615", compatible_with_mkd:bool};
  • кросс-чек ВРИ (875838) vs obshnz для 5 cad — расхождение ГП↔ПЗЗ флагается (ст.30 ч.2).

Effort/risk: easy (~0.5–1 день) — primitive + layer ID готовы. Risk: LOW (покрытие ЕКБ доказано в #106). Единственный gate — VPS-доступность 846615.

⚠️ Дубль-риск: #106 покрывает тот же слой 846615 с более полной схемой (nspd_functional_zones + bbox-tiling). Рекомендую слить scope: #1058 = analyze-интеграция, #106 = harvest/storage, либо закрыть один как дубль. Решение — за тимлидом.

Status label:ready (после размежевания с #106). ID известен, primitive есть, правовая модель ясна; VPS-проверка не блокирует кодинг (gate-flag).

## 🔬 Research-дополнение (2026-06-05) **Источник (verified):** Функц. зоны ЕКБ доступны как **federal слой ФГИС ТП** — в НСПД это **layer ID `846615` «Функциональные зоны»**. Эмпирически подтверждён в **#106** (18 hits на 4 контрольных точках ЕКБ — Центр/Уралмаш/Эльмаш/Химмаш = 100% покрытие), с полем-схемой `obshnz` (Жилая/Производственная/ОД/Рекреационная/С-Х/…), `obshoz` (подкатегория), `status`. ⚠️ **Это меняет план:** для пункта ГП harvest #1057 уже частично сделан — ID известен, нужна только верификация что `846615` ещё отвечает на VPS (НСПД геоблок не-РФ IP). **Правовая основа:** функц. зоны — генплан, **ГрК ст.23**; территориальные зоны — ПЗЗ, **ГрК ст.30/35**. Текущий `nspd_zoning` (875838 ПЗЗ) и новый `functional_zone` (846615 ГП) — два РАЗНЫХ юр. слоя, не дубль. Иерархия: функц. зонирование ГП = основа для градзонирования ПЗЗ (ст.30 ч.2). **Статус ГП ЕКБ:** генплан до 2045 **утверждён** — Приказ Минстроя Свердл. обл. **от 01.06.2023 № 335-П** ([РБК](https://ekb.rbc.ru/ekb/freenews/647db6999a79473a58055945)). Действующий документ → данные не «черновик». ФГИС ТП официально отдаёт WMS/WFS ([fgistp.economy.gov.ru](https://fgistp.economy.gov.ru/)), но публичной доки с прямым layer-URL нет — на практике проще тащить через зеркало в НСПД (846615), как и остальные слои клиента. **Recommended fetch (aligned to nspd_client):** `NSPDClient.get_feature_info(846615, centroid_lon, centroid_lat)` по центроиду участка (EPSG:3857 micro-bbox, реализовано). Точечный запрос достаточен. Маппинг `obshnz`→совместимость с МКД. Overlay-таблицу по образцу `cad_territorial_zones` (`data/sql/102`). **Sharpened DoD:** - [ ] verify на VPS: `846615` отвечает GetFeatureInfo по 3–5 тест-cad ЕКБ (НЕ пусто), `properties.obshnz` непуст; - [ ] `"functional_zone_gp": 846615` в `LAYERS`; - [ ] поле `analyze.functional_zone {obshnz, obshoz, status, source:"fgis_tp_846615", compatible_with_mkd:bool}`; - [ ] кросс-чек ВРИ (875838) vs obshnz для 5 cad — расхождение ГП↔ПЗЗ флагается (ст.30 ч.2). **Effort/risk:** easy (~0.5–1 день) — primitive + layer ID готовы. Risk: LOW (покрытие ЕКБ доказано в #106). Единственный gate — VPS-доступность `846615`. **⚠️ Дубль-риск:** #106 покрывает тот же слой 846615 с более полной схемой (`nspd_functional_zones` + bbox-tiling). Рекомендую слить scope: #1058 = analyze-интеграция, #106 = harvest/storage, либо закрыть один как дубль. Решение — за тимлидом. **Status label:** → **ready** (после размежевания с #106). ID известен, primitive есть, правовая модель ясна; VPS-проверка не блокирует кодинг (gate-flag).
Owner

🛰️ Разведка источника функц.зон генплана — Геопортал ЕКБ + ФГИС ТП (2026-06-06)

TL;DR: функц.зон генплана в геопортале ЕКБ НЕТ (слой объявлен, но пустой). В НСПД — тоже нет (установлено реконом). Реальный источник — ФГИС ТП: GML функц.зон, прикреплённый к документу генплана → разовый ETL в PostGIS. 🟡 automatable (offline GML-ETL), НЕ real-time API.

Геопортал ЕКБ — проверено вживую, функц.зон НЕТ

Endpoint https://геопортал.екатеринбург.рф/api/gis/ows/3/portal/wfs (это единственный живой GeoServer — geoServerKey 1/2/4/5/6/7 → HTTP 500). Прогнал resultType=hits по всем релевантным слоям:

Слой features
portal_geo_urban_ter_zone (ПЗЗ террит.зоны, существ.) 10532
portal_geo_urban_terzone_plan (ПЗЗ планируемые) 636
portal_geo_dmd_prj_mej / dmd_prj_plan (ПМ/ППТ) 904 / 290
portal_geo_urban5_area_base_development_pzz 9
portal_geo_urban_10_functional_zone (функц.зона генплана, схема ФГИС-ТП) 0
portal_geo_dmd_genplan (генплан — только граница документа) 2
весь набор portal_geo_urban_10_*_plan (генплан-схема ФГИС-ТП) 0 везде

Вывод: ЕКБ не публиковала функц.зоны генплана в свой GeoServer — стандартный слой urban_10_functional_zone объявлен в GetCapabilities, но пуст. dmd_genplan (2 features) — только полигон-обложка документа генплана, без зонирования. → геопортал для ИРД-1 не годится (в отличие от ПЗЗ/ЗОУИТ/КРТ).

Реальный источник: ФГИС ТП (fallback из тела issue — верный)

  • fgistp.economy.gov.ru — открытый, авторитетный. Функц.зоны входят в состав документа генплана; портал отдаёт их GML-файлом (раньше SHP/MID-MIF, сейчас GML — подтверждено докой ФГИС-ТП). Это download-by-document, не queryable-by-geometry point-API.
  • Формат: GML (геометрия функц.зон) + PDF (текстовая часть/регламент). unconfirmed live — сам выгрузку GML для генплана ЕКБ (горизонт 2045) не дёргал; нужно подтвердить, что (а) актуальный генплан ЕКБ загружен в ФГИС-ТП, (б) GML функц.зон скачивается без авторизации.
  • Прим.: тело issue предполагало НСПД как primary + WMS GetFeatureInfo — но рекон установил, что функц.зон в НСПД (тема-1, 63 слоя) НЕТ. WMS GetFeatureInfo возможен в ФГИС-ТП, но надёжнее одноразовый GML-ETL.

Рекомендованный pipeline (offline GML-ETL)

[разово / при изменении генплана]
  ФГИС ТП → документ «Генплан ГО Екатеринбург» (горизонт 2045)
          → скачать GML «Карта функциональных зон»
          → ogr2ogr → PostGIS  genplan_functional_zone(geom, zone_code, zone_name, doc_ref)
[в рантайме analyze]
  ST_Intersects(parcel.geom, genplan_functional_zone.geom)
          → functional_zone = {code, name, doc_ref}  (+ соответствие ПЗЗ)

Генплан меняется редко → ETL не cron, а ad-hoc при правке генплана.

Честные пробелы

  • ФГИС-ТП GML-выгрузка для ЕКБ не подтверждена вживую (только по доке формата). Первый шаг воркера = подтвердить наличие актуального документа + скачиваемость GML.
  • Горизонт «2045»: надо убедиться, что в ФГИС-ТП лежит действующий генплан до 2045, а не устаревший «до 2025» (Решение ЕГД №60/1 от 2004, cntd.ru/document/453137060).
  • Альтернатива, если GML недоступен: WMS GetFeatureInfo по ФГИС-ТП (queryable, но атрибутика беднее) либо ИСОГД ЕКБ по запросу.

Итог

🟡 automatable через offline GML-ETL → можно status/ready с первым under-task «подтвердить выгрузку GML функц.зон генплана ЕКБ из ФГИС-ТП». Детерминированно (point-in-polygon локально), но НЕ через live-API геопортала. Источник: НЕ геопортал ЕКБ и НЕ НСПД — а ФГИС ТП (#106 уже на эту тему). Prereq #1057 (НСПД-harvest) для этого пункта не релевантен — снять зависимость.

## 🛰️ Разведка источника функц.зон генплана — Геопортал ЕКБ + ФГИС ТП (2026-06-06) **TL;DR: функц.зон генплана в геопортале ЕКБ НЕТ (слой объявлен, но пустой). В НСПД — тоже нет (установлено реконом). Реальный источник — ФГИС ТП: GML функц.зон, прикреплённый к документу генплана → разовый ETL в PostGIS. 🟡 automatable (offline GML-ETL), НЕ real-time API.** ### Геопортал ЕКБ — проверено вживую, функц.зон НЕТ Endpoint `https://геопортал.екатеринбург.рф/api/gis/ows/3/portal/wfs` (это единственный живой GeoServer — geoServerKey 1/2/4/5/6/7 → HTTP 500). Прогнал `resultType=hits` по всем релевантным слоям: | Слой | features | |---|---| | `portal_geo_urban_ter_zone` (ПЗЗ террит.зоны, существ.) | **10532** | | `portal_geo_urban_terzone_plan` (ПЗЗ планируемые) | 636 | | `portal_geo_dmd_prj_mej` / `dmd_prj_plan` (ПМ/ППТ) | 904 / 290 | | `portal_geo_urban5_area_base_development_pzz` | 9 | | **`portal_geo_urban_10_functional_zone`** (функц.зона генплана, схема ФГИС-ТП) | **0** ⛔ | | `portal_geo_dmd_genplan` (генплан — только граница документа) | 2 | | весь набор `portal_geo_urban_10_*_plan` (генплан-схема ФГИС-ТП) | 0 везде | Вывод: ЕКБ **не публиковала** функц.зоны генплана в свой GeoServer — стандартный слой `urban_10_functional_zone` объявлен в GetCapabilities, но **пуст**. `dmd_genplan` (2 features) — только полигон-обложка документа генплана, без зонирования. → геопортал для ИРД-1 **не годится** (в отличие от ПЗЗ/ЗОУИТ/КРТ). ### Реальный источник: ФГИС ТП (fallback из тела issue — верный) - **`fgistp.economy.gov.ru`** — открытый, авторитетный. Функц.зоны входят в состав документа генплана; портал отдаёт их **GML-файлом** (раньше SHP/MID-MIF, сейчас GML — подтверждено докой ФГИС-ТП). Это download-by-document, **не** queryable-by-geometry point-API. - Формат: GML (геометрия функц.зон) + PDF (текстовая часть/регламент). **unconfirmed live** — сам выгрузку GML для генплана ЕКБ (горизонт 2045) не дёргал; нужно подтвердить, что (а) актуальный генплан ЕКБ загружен в ФГИС-ТП, (б) GML функц.зон скачивается без авторизации. - Прим.: тело issue предполагало НСПД как primary + WMS GetFeatureInfo — но рекон установил, что функц.зон в НСПД (тема-1, 63 слоя) НЕТ. WMS GetFeatureInfo возможен в ФГИС-ТП, но надёжнее одноразовый GML-ETL. ### Рекомендованный pipeline (offline GML-ETL) ``` [разово / при изменении генплана] ФГИС ТП → документ «Генплан ГО Екатеринбург» (горизонт 2045) → скачать GML «Карта функциональных зон» → ogr2ogr → PostGIS genplan_functional_zone(geom, zone_code, zone_name, doc_ref) [в рантайме analyze] ST_Intersects(parcel.geom, genplan_functional_zone.geom) → functional_zone = {code, name, doc_ref} (+ соответствие ПЗЗ) ``` Генплан меняется редко → ETL не cron, а ad-hoc при правке генплана. ### Честные пробелы - ФГИС-ТП GML-выгрузка для ЕКБ **не подтверждена вживую** (только по доке формата). Первый шаг воркера = подтвердить наличие актуального документа + скачиваемость GML. - Горизонт «2045»: надо убедиться, что в ФГИС-ТП лежит действующий генплан до 2045, а не устаревший «до 2025» (Решение ЕГД №60/1 от 2004, cntd.ru/document/453137060). - Альтернатива, если GML недоступен: WMS GetFeatureInfo по ФГИС-ТП (queryable, но атрибутика беднее) либо ИСОГД ЕКБ по запросу. ### Итог **🟡 automatable через offline GML-ETL → можно `status/ready`** с первым under-task «подтвердить выгрузку GML функц.зон генплана ЕКБ из ФГИС-ТП». Детерминированно (point-in-polygon локально), но НЕ через live-API геопортала. **Источник: НЕ геопортал ЕКБ и НЕ НСПД — а ФГИС ТП (#106 уже на эту тему).** Prereq #1057 (НСПД-harvest) для этого пункта **не релевантен** — снять зависимость.
lekss361 removed the
status/needs-analysis
label 2026-06-06 18:05:57 +00:00
Owner

Доп-источник (2026-06-06): региональный ГИСОГД Свердл. обл.

Помимо ФГИС ТП (GML-ETL) — нашёл https://gisogd66.midural.ru (платформа «agate»/Аксиома, публичный, без auth). В каталоге /api/catalogs/agate_sverdregion есть слой «Функциональные зоны» (id 24, typeName agate_sverdregion:agate_sverdregion_geo_urban_10_functional_zone_80d5aad5) + «Генеральный план» (map 67). Региональный ИСОГД агрегирует генплан по области, включая ЕКБ — потенциально лучше, чем разовый GML из ФГИС ТП (live-запрос по точке вместо ETL).

Метод (CONFIRMED работает): GET /api/v1/spatialsearch/agate_sverdregion/<entity>/<x>/<y> (EPSG:3857); raw /geoserver WFS не проксируется (SPA). UNCONFIRMED: entity-alias слоя функц.зон (известный рабочий — urbanterzoneregulation; для функц.зон другой — снять через UI-toggle слоя + перехват spatialsearch-запроса) + покрытие ЕКБ по фичам.

→ Воркеру: сравнить два пути (gisogd66 spatialsearch vs ФГИС-ТП GML), выбрать по факту покрытия ЕКБ. Детали по платформе/контракту — в комментарии #1062 (путь A) и vault research/EKB_Geoportal_IRD_Layers_KRT_Genplan_Reserve_Jun06.

## ➕ Доп-источник (2026-06-06): региональный ГИСОГД Свердл. обл. Помимо ФГИС ТП (GML-ETL) — нашёл **`https://gisogd66.midural.ru`** (платформа «agate»/Аксиома, публичный, без auth). В каталоге `/api/catalogs/agate_sverdregion` есть слой **«Функциональные зоны»** (id 24, typeName `agate_sverdregion:agate_sverdregion_geo_urban_10_functional_zone_80d5aad5`) + **«Генеральный план»** (map 67). Региональный ИСОГД агрегирует генплан по области, **включая ЕКБ** — потенциально лучше, чем разовый GML из ФГИС ТП (live-запрос по точке вместо ETL). **Метод (CONFIRMED работает):** `GET /api/v1/spatialsearch/agate_sverdregion/<entity>/<x>/<y>` (EPSG:3857); raw `/geoserver` WFS не проксируется (SPA). **UNCONFIRMED:** entity-alias слоя функц.зон (известный рабочий — `urbanterzoneregulation`; для функц.зон другой — снять через UI-toggle слоя + перехват `spatialsearch`-запроса) + покрытие ЕКБ по фичам. → Воркеру: сравнить два пути (gisogd66 spatialsearch vs ФГИС-ТП GML), выбрать по факту покрытия ЕКБ. Детали по платформе/контракту — в комментарии #1062 (путь A) и vault `research/EKB_Geoportal_IRD_Layers_KRT_Genplan_Reserve_Jun06`.
Owner

⚠️ Поправка к доп-источнику gisogd66 — слой функц.зон ПУСТ (Playwright-проверка)

Проверил вживую: в региональном ГИСОГД gisogd66.midural.ru слой urban_10_functional_zone = 0 фич (WFS …/map/tiles/agate_sverdregion/wfs, контроль — слой ЗУ 1.38M фич, т.е. endpoint рабочий). Каталог слой объявляет, но данные не залиты — как и в муниципальном геопортале ЕКБ.

gisogd66 для функц.зон отзываю. Остаётся единственный путь — ФГИС ТП (GML-ETL), как в основном комментарии. Лейбл status/ready оставляю (ФГИС-ТП маршрут не опровергнут; первый шаг воркера — подтвердить выгрузку GML генплана ЕКБ). Подробности проверки — в #1062.

## ⚠️ Поправка к доп-источнику gisogd66 — слой функц.зон ПУСТ (Playwright-проверка) Проверил вживую: в региональном ГИСОГД `gisogd66.midural.ru` слой **`urban_10_functional_zone` = 0 фич** (WFS `…/map/tiles/agate_sverdregion/wfs`, контроль — слой ЗУ 1.38M фич, т.е. endpoint рабочий). Каталог слой объявляет, но **данные не залиты** — как и в муниципальном геопортале ЕКБ. → **gisogd66 для функц.зон отзываю.** Остаётся единственный путь — **ФГИС ТП (GML-ETL)**, как в основном комментарии. Лейбл `status/ready` оставляю (ФГИС-ТП маршрут не опровергнут; первый шаг воркера — подтвердить выгрузку GML генплана ЕКБ). Подробности проверки — в #1062.
Owner

Переразмечено needs-analysis → status/ready (анализ сделан, источник найден).

Функц.зоны генплана НЕ в НСПД (harvest #1057 подтвердил — закрыт), но есть в ЕКБ-геопортале WFS: слой portal:portal_geo_urban_10_functional_zone (+ portal_geo_dmd_genplan). Клиент — ekb_geoportal_client.py (PR #1083, C7): features_at_point('functional_zone', lon, lat) → функц.зона по геометрии участка.

План: через EKBGeoportalClient достать функц.зону по centroid участка → поле functional_zone в analyze. Зависимость от #1057 снята. Источник: vault research/EKB_Geoportal_WFS_Construction_Intel_Jun06.

**Переразмечено needs-analysis → status/ready (анализ сделан, источник найден).** Функц.зоны генплана **НЕ в НСПД** (harvest #1057 подтвердил — закрыт), но **есть в ЕКБ-геопортале WFS**: слой `portal:portal_geo_urban_10_functional_zone` (+ `portal_geo_dmd_genplan`). Клиент — `ekb_geoportal_client.py` (PR #1083, C7): `features_at_point('functional_zone', lon, lat)` → функц.зона по геометрии участка. **План:** через `EKBGeoportalClient` достать функц.зону по centroid участка → поле `functional_zone` в analyze. Зависимость от #1057 снята. Источник: vault `research/EKB_Geoportal_WFS_Construction_Intel_Jun06`.
Owner

Реализовано в merged-работе ИРД-эпика (за флагом enable_ird_analyze, default off):

  • Функц.зона генплана по геометрииird.functional_zone в ответе analyze: backend/app/services/site_finder/ird_analyze.py (_functional_zone_at), источник — ЕКБ-геопортал WFS-слой functional_zone (portal:portal_geo_urban_10_functional_zone, ekb_geoportal_client.WFS_LAYERS). Wired в analyze PR #1101 (D9b). TLS-фикс к геопорталу — #1103.

Отличие от плана issue (НСПД/ФГИС ТП): использован ЕКБ-геопортал WFS (точнее/актуальнее для ЕКБ, тот же результат — функц.зона по точке участка).

Acceptance («для реального участка возвращается функц.зона генплана») закрывается при enable_ird_analyze=true. Перевожу в needs-human — подтвердить закрытие после включения флага (B6/enable). Если нужна доп. семантика (соответствие ПЗЗ↔функц.зона) — отдельной задачей.

Реализовано в merged-работе ИРД-эпика (за флагом `enable_ird_analyze`, default off): - **Функц.зона генплана по геометрии** — `ird.functional_zone` в ответе analyze: `backend/app/services/site_finder/ird_analyze.py` (`_functional_zone_at`), источник — ЕКБ-геопортал WFS-слой `functional_zone` (`portal:portal_geo_urban_10_functional_zone`, `ekb_geoportal_client.WFS_LAYERS`). Wired в analyze PR #1101 (D9b). TLS-фикс к геопорталу — #1103. Отличие от плана issue (НСПД/ФГИС ТП): использован ЕКБ-геопортал WFS (точнее/актуальнее для ЕКБ, тот же результат — функц.зона по точке участка). Acceptance («для реального участка возвращается функц.зона генплана») закрывается при `enable_ird_analyze=true`. Перевожу в `needs-human` — подтвердить закрытие после включения флага (B6/enable). Если нужна доп. семантика (соответствие ПЗЗ↔функц.зона) — отдельной задачей.
lekss361 added the
needs-human
label 2026-06-06 20:46:27 +00:00
Owner

⚠️ Коррекция предыдущего коммента (verify-don't-trust на проде 2026-06-07). Мой ранний вывод «функц.зона отдаётся через ird.functional_zone» — НЕВЕРЕН. Проверка живого WFS:

  • portal:portal_geo_urban_10_functional_zoneПУСТОЙ слой: GetFeature без фильтра → totalFeatures: 0 (geom-колонка geoloc корректна, DescribeFeatureType ок — данных просто нет). INTERSECTS по точке → даже JSONDecodeError (server-quirk на пустом слое).
  • portal:portal_geo_dmd_genplan — лишь 2 документ-фичи (это слой-документ генплана, НЕ функц.-зональная нарезка).

→ Функц.зоны генплана на ЕКБ-геопортале как WFS-слой не опубликованы. _functional_zone_at (D9b) гейтит graceful → всегда None. Acceptance #1058 НЕ закрыт.

Что нужно (остаётся needs-human/нужен источник): альтернатива из issue-плана — ФГИС ТП (фгистп.рф WMS, авторитетный открытый) или НСПД «функц.зоны / документы террит. планирования» (layer-ID через #1057). Код-сторона готова: как только найдётся слой с данными — подставить typeName в WFS_LAYERS['functional_zone'] (или НСПД-harvest), ird.functional_zone сразу оживёт.

Контраст (для записи): на том же геопортале krt=48, territorial_zone=6351, ppt/pmt=1170 — НЕ пустые, #1059/#1060/#1085 отдают реальные данные. Пуст именно functional_zone.

⚠️ **Коррекция предыдущего коммента (verify-don't-trust на проде 2026-06-07).** Мой ранний вывод «функц.зона отдаётся через `ird.functional_zone`» — **НЕВЕРЕН**. Проверка живого WFS: - `portal:portal_geo_urban_10_functional_zone` — **ПУСТОЙ слой**: `GetFeature` без фильтра → `totalFeatures: 0` (geom-колонка `geoloc` корректна, DescribeFeatureType ок — данных просто нет). INTERSECTS по точке → даже JSONDecodeError (server-quirk на пустом слое). - `portal:portal_geo_dmd_genplan` — лишь **2** документ-фичи (это слой-документ генплана, НЕ функц.-зональная нарезка). → Функц.зоны генплана на ЕКБ-геопортале как WFS-слой **не опубликованы**. `_functional_zone_at` (D9b) гейтит graceful → всегда `None`. Acceptance #1058 **НЕ закрыт**. **Что нужно (остаётся `needs-human`/нужен источник):** альтернатива из issue-плана — **ФГИС ТП** (`фгистп.рф` WMS, авторитетный открытый) или **НСПД** «функц.зоны / документы террит. планирования» (layer-ID через #1057). Код-сторона готова: как только найдётся слой с данными — подставить typeName в `WFS_LAYERS['functional_zone']` (или НСПД-harvest), `ird.functional_zone` сразу оживёт. Контраст (для записи): на том же геопортале `krt`=48, `territorial_zone`=6351, `ppt/pmt`=1170 — НЕ пустые, #1059/#1060/#1085 отдают реальные данные. Пуст именно functional_zone.
Owner

🟢 Источник найден — авто-импортируемо (research 2026-06-07)

Не ФГИС ТП (там вектор = SHP-зип в карточке, fallback), а региональный ГИСОГД-СО gisogd66.midural.ru — открытый WFS с полной геометрией.

Endpoint (200 OK, GeoJSON, проверено независимым fetch — без auth/капчи/региоблока):

GET https://gisogd66.midural.ru/map/tiles/agate_ekbgo/wfs
  ?service=WFS&version=2.0.0&request=GetFeature
  &typeNames=agate_ekbgo:agate_ekbgo_geo_urban_10_functional_zone_f6c5926
  &outputFormat=application/json
  • 6436 фич (Polygon), EPSG:4326. info_set_key_ref = «Генплан … до 2045 (545-П), 14.11.2025» — нужная редакция.
  • Атрибуты: full_name/urban10_classid_cat/urban10_classid_v (тип зоны), urban10_classid (код), urban10_status_v (существ./план.), urban10_area (га), urban10_globalid (UUID).
  • ⚠️ суффикс слоя _f6c5926 = хеш версии → перед ингестом перечитывать /api/catalogs/agate_ekbgo и брать актуальный value узла «Функциональные зоны».
  • Муниципальный геопортал ЕКБ имеет ту же data-model (geo_urban_10_functional_zone), но пуст — у области наполнен.

Бонус: тот же WFS отдаёт весь генплан векторно (терзоны, земли по категориям, СЗЗ, водоохранные, ОКН, ППиМ-зоны ОКС).

Pipeline: /api/catalogs → resolve layer → WFS GeoJSON → upsert ekb_genplan_functional_zone (by globalid) → analyze functional_zone из БД (заменяет текущий stub None).

→ Снимаю needs-human, беру в работу (ingest). Оговорки: лицензия reuse не проверена (данные официальные открытые); параметрические поля зон (плотность/высотность) преим. null — тип зоны заполнен надёжно.

## 🟢 Источник найден — авто-импортируемо (research 2026-06-07) Не ФГИС ТП (там вектор = SHP-зип в карточке, fallback), а **региональный ГИСОГД-СО** `gisogd66.midural.ru` — открытый WFS с полной геометрией. **Endpoint (200 OK, GeoJSON, проверено независимым fetch — без auth/капчи/региоблока):** ``` GET https://gisogd66.midural.ru/map/tiles/agate_ekbgo/wfs ?service=WFS&version=2.0.0&request=GetFeature &typeNames=agate_ekbgo:agate_ekbgo_geo_urban_10_functional_zone_f6c5926 &outputFormat=application/json ``` - **6436 фич** (Polygon), EPSG:4326. `info_set_key_ref` = «Генплан … до 2045 (545-П), 14.11.2025» — нужная редакция. - Атрибуты: `full_name`/`urban10_classid_cat`/`urban10_classid_v` (тип зоны), `urban10_classid` (код), `urban10_status_v` (существ./план.), `urban10_area` (га), `urban10_globalid` (UUID). - ⚠️ суффикс слоя `_f6c5926` = хеш версии → перед ингестом перечитывать `/api/catalogs/agate_ekbgo` и брать актуальный `value` узла «Функциональные зоны». - Муниципальный геопортал ЕКБ имеет ту же data-model (`geo_urban_10_functional_zone`), но **пуст** — у области наполнен. **Бонус:** тот же WFS отдаёт весь генплан векторно (терзоны, земли по категориям, СЗЗ, водоохранные, ОКН, ППиМ-зоны ОКС). **Pipeline:** `/api/catalogs` → resolve layer → WFS GeoJSON → upsert `ekb_genplan_functional_zone` (by globalid) → analyze `functional_zone` из БД (заменяет текущий stub `None`). → Снимаю `needs-human`, беру в работу (ingest). Оговорки: лицензия reuse не проверена (данные официальные открытые); параметрические поля зон (плотность/высотность) преим. null — тип зоны заполнен надёжно.
lekss361 removed the
needs-human
label 2026-06-07 11:48:06 +00:00
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1058
No description provided.