[ИРД-8] ООПТ / лесные зоны / водно-болотные (водоохранные) объекты #1064

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

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

Существующее: 🟡 PARTIAL. В каталоге НСПД: ООПТ 875845, лесничества 875866 — но НЕ тащатся по умолчанию (include_opportunity=False в harvest); водоохранные/природные частично в ЗОУИТ 37580.
Пробел: ООПТ/леса не fetch-ятся; водно-болотные/водоохранные явно не выделены.
Источник: НСПД 875845 (ООПТ) + 875866 (лесничества) + 37580/«Водные объекты» (водоохранные). Рег. ООПТ Свердл — нет public geojson → полагаемся на НСПД 875845. Фед-ООПТ открыты (gis-lab/oopt.aari) как доп. Feasibility: easy (слои в каталоге).
План: включить fetch 875845/875866 + водоохранные → поля oopt/forest/wetland + gate_verdict warning.
Acceptance: analyze отдаёт пересечения с ООПТ/лесом/водоохранной зоной.

_Запрос команды (Макс/Леха) 2026-06-04 для «волшебной таблицы» (= analyze/§22). Источники: ПКК pkk.rosreestr.ru, НСПД нспд.рф, portal.okn.midural.ru, приказы ПАТ._ **Существующее:** 🟡 PARTIAL. В каталоге НСПД: ООПТ `875845`, лесничества `875866` — но **НЕ тащатся по умолчанию** (`include_opportunity=False` в harvest); водоохранные/природные частично в ЗОУИТ `37580`. **Пробел:** ООПТ/леса не fetch-ятся; водно-болотные/водоохранные явно не выделены. **Источник:** НСПД 875845 (ООПТ) + 875866 (лесничества) + 37580/«Водные объекты» (водоохранные). Рег. ООПТ Свердл — **нет public geojson** → полагаемся на НСПД 875845. Фед-ООПТ открыты (gis-lab/oopt.aari) как доп. Feasibility: **easy** (слои в каталоге). **План:** включить fetch 875845/875866 + водоохранные → поля `oopt`/`forest`/`wetland` + `gate_verdict` warning. **Acceptance:** analyze отдаёт пересечения с ООПТ/лесом/водоохранной зоной.
bot-backend added the
scope/backend
scrapers
status/ready
ИРД
GG-форсайт
site-finder
labels 2026-06-05 03:46:25 +00:00
lekss361 added this to the Site Finder v2 — Foresight (GG-форсайт) milestone 2026-06-05 07:22:48 +00:00
Owner

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

Codebase-аудит (forgejo/main) — claims подтверждены:

  • nspd_client.py: protected_areas: 875845 (ООПТ), forestries: 875866, zouit_natural: 37580 («природные: водоохранные, СЗО») — все три в LAYERS
  • ООПТ (875845) в QUARTER_OPPORTUNITY_LAYERS, но fetch только при include_opportunity=True, а дефолт include_opportunity=False → ООПТ реально НЕ тащится.
  • ⚠️ Уточнение к телу issue: forestries (875866) определён в LAYERS, но не входит ни в один harvest-dict — лес не тащится вообще (это не «off by default», а полное отсутствие wiring). DoD должен добавить ключ.
  • zouit_natural (37580) — уже в grid-walk при include_zouit=True (дефолт) → водоохранные частично уже собираются, но не выделены отдельным полем.

Правовая база (verified): ООПТ — ФЗ-33; водоохранные зоны + ПЗП — ВК РФ ст. 65; земли лесфонда/лесничества — ЛК РФ; водно-болотные (Рамсар) — Пост. № 1050, ближайших к ЕКБ нет (низкий приоритет). Все — виды ЗОУИТ.

Реальность покрытия ЕКБ/Свердл.:

  • В Свердл. обл. 636 ООПТ, ~630 региональных (424 памятника природы, 57 заказников, 18 лесопарков) и лишь ~6 федеральных (Минприроды СО).
  • Открытое geojson только по федеральным (gis-lab — данные 2011 г., stale; для ЕКБ-сити фед. ООПТ нет → почти бесполезно).
  • Региональные ООПТ public geojson НЕТ (claim issue верен).
  • НСПД 875845 — единственный автоматизируемый источник ООПТ для ЕКБ (тянет ЕГРН-внесённые независимо от фед/рег статуса). Оговорка: НСПД показывает только ЗОУИТ, внесённые в ЕГРН (~половина границ ЗОУИТ в ЕГРН отсутствует) → нужна честная пометка «не в ЕГРН → не проверено».

Automatable vs manual: полностью автоматизируемо — все 3 слоя в каталоге + grid-walk инфра; нужен только wiring fetch + денорм-поля. Manual-оцифровка не требуется.

Заострённый DoD:

  1. search_by_quarter: добавить forestries в opportunity-dict (ООПТ уже там); поднять fetch ООПТ+лес независимо от include_opportunity ИЛИ ввести include_ird=True.
  2. Денорм-поля: oopt (bool + название/категория), forest (bool + лесничество), water_protection (bool, из 37580 — выделить subset по типу зоны).
  3. gate_verdict: пересечение → warning (не hard-block — требует экспертизы).
  4. analyze/§22 отдаёт строки «ООПТ / Лес / Водоохранная зона» + verdict + источник + флаг «ЕГРН/не в ЕГРН».
  5. Тест на квартале с известным пересечением (лесопарк ЕКБ).

Effort: S–M (1 PR, ~150–250 строк). Risk: low — инфра есть; основной риск — ЕГРН-полнота НСПД (mitigated честной пометкой источника).

Status-label: оставить status/ready — корректно, easy/clear single-domain backend. needs-human не требуется.

## 🔬 Research-дополнение (2026-06-05) **Codebase-аудит (`forgejo/main`) — claims подтверждены:** - `nspd_client.py`: `protected_areas: 875845` (ООПТ), `forestries: 875866`, `zouit_natural: 37580` («природные: водоохранные, СЗО») — все три в `LAYERS` ✅ - ООПТ (875845) в `QUARTER_OPPORTUNITY_LAYERS`, но fetch только при `include_opportunity=True`, а дефолт `include_opportunity=False` → ООПТ реально НЕ тащится. - ⚠️ **Уточнение к телу issue:** `forestries` (875866) определён в `LAYERS`, но **не входит ни в один harvest-dict** — лес не тащится вообще (это не «off by default», а полное отсутствие wiring). DoD должен добавить ключ. - `zouit_natural` (37580) — уже в grid-walk при `include_zouit=True` (дефолт) → водоохранные **частично уже собираются**, но не выделены отдельным полем. **Правовая база (verified):** ООПТ — ФЗ-33; водоохранные зоны + ПЗП — **ВК РФ ст. 65**; земли лесфонда/лесничества — ЛК РФ; водно-болотные (Рамсар) — Пост. № 1050, ближайших к ЕКБ нет (низкий приоритет). Все — виды ЗОУИТ. **Реальность покрытия ЕКБ/Свердл.:** - В Свердл. обл. **636 ООПТ, ~630 региональных** (424 памятника природы, 57 заказников, 18 лесопарков) и лишь ~6 федеральных ([Минприроды СО](https://mprso.midural.ru/article/show/id/1079)). - **Открытое geojson только по федеральным** ([gis-lab](https://gis-lab.info/qa/oopt.html) — данные 2011 г., stale; для ЕКБ-сити фед. ООПТ нет → почти бесполезно). - **Региональные ООПТ public geojson НЕТ** (claim issue верен). - ⇒ **НСПД 875845 — единственный автоматизируемый источник** ООПТ для ЕКБ (тянет ЕГРН-внесённые независимо от фед/рег статуса). Оговорка: НСПД показывает только ЗОУИТ, **внесённые в ЕГРН** (~половина границ ЗОУИТ в ЕГРН отсутствует) → нужна честная пометка «не в ЕГРН → не проверено». **Automatable vs manual:** полностью автоматизируемо — все 3 слоя в каталоге + grid-walk инфра; нужен только wiring fetch + денорм-поля. Manual-оцифровка не требуется. **Заострённый DoD:** 1. `search_by_quarter`: добавить `forestries` в opportunity-dict (ООПТ уже там); поднять fetch ООПТ+лес независимо от `include_opportunity` ИЛИ ввести `include_ird=True`. 2. Денорм-поля: `oopt` (bool + название/категория), `forest` (bool + лесничество), `water_protection` (bool, из 37580 — выделить subset по типу зоны). 3. `gate_verdict`: пересечение → `warning` (не hard-block — требует экспертизы). 4. analyze/§22 отдаёт строки «ООПТ / Лес / Водоохранная зона» + verdict + источник + флаг «ЕГРН/не в ЕГРН». 5. Тест на квартале с известным пересечением (лесопарк ЕКБ). **Effort:** S–M (1 PR, ~150–250 строк). **Risk:** low — инфра есть; основной риск — ЕГРН-полнота НСПД (mitigated честной пометкой источника). **Status-label:** оставить `status/ready` — корректно, easy/clear single-domain backend. needs-human не требуется.
Owner

🛰️ Вода/сан-зоны — геопортал ЕКБ gknspecial_zone; ООПТ/лес — НСПД (2026-06-06, Playwright)

Частичная разбивка: водные/санитарные ЗОУИТ 🟢 через геопортал, ООПТ proper + лес → НСПД (геопортал по ним почти пуст).

Водоохранные / санитарные — geoportal gknspecial_zone (CONFIRMED, читаемый тип)

Слой portal:portal_geo_gknspecial_zone (ЗОУИТ ЕГРН/ГКН, 20 251), CQL по full_name:

  • Водоохранная зона = 196, Прибрежная защитная полоса = 199, Зона санитарной охраны источников водоснабжения = 393, Санитарно-защитная зона (СЗЗ) = 375
  • Метод: INTERSECTS(geoloc, POINT(lon lat)) 4326 + CQL full_name LIKE '<тип>%' + zone_state_v='Действующий'. Атрибуты: рег.№, gkn_specialz_contentrestrictions, gkn_specialz_protectedobject.

ООПТ proper + ЛЕС — в геопортале почти пусто → НСПД

  • gknspecial_zone: «Территория особо охраняемого природного объекта» = 6 (sparse); WFS-слои oopt/les_forest_district/urban_10_forest = 0; egrn_oopt/egrn_forest_district = 0.
  • → ООПТ/лесничества/лесопарки = НСПД (готовые слои 875845/875866/37580/875832 per 132_ird_overlays.sql п.8) — геометрия; читаемый тип/имя резолвить отдельно.

Итог по #1064

  • Вода/сан-зоны (водоохранная/прибрежная/ЗСО/СЗЗ): 🟢 геопортал WFS (с типом+ограничениями).
  • ООПТ/лес: 🟡 НСПД (геометрия, content resolve) — как в плане 132.
    → Источник СМЕШАННЫЙ: вода → геопортал (богаче НСПД), ООПТ/лес → НСПД. Feasibility 🟢/🟡 → status/ready (вода через геопортал; ООПТ/лес — НСПД-ветка из 132).

Разведка: vault research/EKB_Geoportal_IRD_Layers_KRT_Genplan_Reserve_Jun06.

## 🛰️ Вода/сан-зоны — геопортал ЕКБ `gknspecial_zone`; ООПТ/лес — НСПД (2026-06-06, Playwright) Частичная разбивка: **водные/санитарные ЗОУИТ 🟢 через геопортал**, **ООПТ proper + лес → НСПД** (геопортал по ним почти пуст). ### Водоохранные / санитарные — geoportal `gknspecial_zone` (CONFIRMED, читаемый тип) Слой `portal:portal_geo_gknspecial_zone` (ЗОУИТ ЕГРН/ГКН, 20 251), CQL по `full_name`: - **Водоохранная зона = 196**, **Прибрежная защитная полоса = 199**, **Зона санитарной охраны источников водоснабжения = 393**, **Санитарно-защитная зона (СЗЗ) = 375** ✅ - Метод: `INTERSECTS(geoloc, POINT(lon lat))` 4326 + CQL `full_name LIKE '<тип>%'` + `zone_state_v='Действующий'`. Атрибуты: рег.№, `gkn_specialz_contentrestrictions`, `gkn_specialz_protectedobject`. ### ООПТ proper + ЛЕС — в геопортале почти пусто → НСПД - `gknspecial_zone`: «Территория особо охраняемого природного объекта» = **6** (sparse); WFS-слои `oopt`/`les_forest_district`/`urban_10_forest` = **0**; `egrn_oopt`/`egrn_forest_district` = **0**. - → ООПТ/лесничества/лесопарки = **НСПД** (готовые слои 875845/875866/37580/875832 per `132_ird_overlays.sql` п.8) — геометрия; читаемый тип/имя резолвить отдельно. ### Итог по #1064 - **Вода/сан-зоны (водоохранная/прибрежная/ЗСО/СЗЗ): 🟢 геопортал WFS** (с типом+ограничениями). - **ООПТ/лес: 🟡 НСПД** (геометрия, content resolve) — как в плане 132. → Источник СМЕШАННЫЙ: вода → геопортал (богаче НСПД), ООПТ/лес → НСПД. Feasibility 🟢/🟡 → status/ready (вода через геопортал; ООПТ/лес — НСПД-ветка из 132). _Разведка: vault `research/EKB_Geoportal_IRD_Layers_KRT_Genplan_Reserve_Jun06`._
Owner

Закрыто merged-работой ИРД-эпика. ird_harvest (#1090, backend/app/workers/tasks/ird_harvest.py IRD_HARVEST_LAYER_KEYS) тащит по кварталам ЕКБ в ird_overlays:

  • protected_areas (НСПД 875845 ООПТ)
  • forestries (НСПД 875866 лесничества)
  • zouit_natural (НСПД 37580 — водоохранные/природные)

Пересечения участка отдаются в analyze через ird.ird_overlaps/ird_by_kind (read-side #1092, wiring D9b #1101, за флагом enable_ird_analyze). «не тащатся по умолчанию (include_opportunity=False)» в issue относилось к старому QuarterDump-пути — выделенный ird_harvest их тащит явно.

Acceptance («analyze отдаёт пересечения с ООПТ/лесом/водоохранной зоной») закрывается при enable_ird_analyze=true. → needs-human для подтверждения после включения флага.

Закрыто merged-работой ИРД-эпика. `ird_harvest` (#1090, `backend/app/workers/tasks/ird_harvest.py` `IRD_HARVEST_LAYER_KEYS`) тащит по кварталам ЕКБ в `ird_overlays`: - `protected_areas` (НСПД 875845 ООПТ) - `forestries` (НСПД 875866 лесничества) - `zouit_natural` (НСПД 37580 — водоохранные/природные) Пересечения участка отдаются в analyze через `ird.ird_overlaps`/`ird_by_kind` (read-side #1092, wiring D9b #1101, за флагом `enable_ird_analyze`). «не тащатся по умолчанию (include_opportunity=False)» в issue относилось к старому QuarterDump-пути — выделенный `ird_harvest` их тащит явно. Acceptance («analyze отдаёт пересечения с ООПТ/лесом/водоохранной зоной») закрывается при `enable_ird_analyze=true`. → `needs-human` для подтверждения после включения флага.
lekss361 added
needs-human
and removed
status/ready
labels 2026-06-06 20:56:39 +00:00
Owner

Сделано — на проде (verified 2026-06-07)

ООПТ / лес / водно-болотные в ird_overlays, врезано в analyze:

  • Вода: water_protection (водоохранная) + coastal_strip (прибрежная) + water_sanitary (ЗСО) + sanitary_protection (СЗЗ) — gknspecial #1114, ~1160 фич.
  • ООПТ/лес: protected_areas (ООПТ) + forestries (лесничества) + zouit_natural — НСПД-harvest.
  • Все пересекаются с участком через ST_Intersects, отдаются в ird_overlaps/ird_by_kind. Closing.
## ✅ Сделано — на проде (verified 2026-06-07) ООПТ / лес / водно-болотные в `ird_overlays`, врезано в analyze: - **Вода:** `water_protection` (водоохранная) + `coastal_strip` (прибрежная) + `water_sanitary` (ЗСО) + `sanitary_protection` (СЗЗ) — gknspecial #1114, ~1160 фич. - **ООПТ/лес:** `protected_areas` (ООПТ) + `forestries` (лесничества) + `zouit_natural` — НСПД-harvest. - Все пересекаются с участком через ST_Intersects, отдаются в `ird_overlaps`/`ird_by_kind`. Closing.
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#1064
No description provided.