Перейти к содержанию

Бизнес-требования: интеграция карты и рельефа в планировщик

Дата: 2026-09-18. Ветка: fix4/maps-biz-req (от release/m1).
Основа решения: вердикт исследования 01-research.mdself-host OSM (Planetiler → PMTiles) + Copernicus DEM GLO-30 (terrain-RGB), запасной путь для интернет-стенда — Яндекс Tiles API как растр в MapLibre.
Аудитория: продукт, фронтенд, DevOps, демонстрация на защите 29.09.2026.


1. Бизнес-контекст: зачем планировщику «настоящая» карта

Планировщик уже рисует галсы, бесполётные зоны (БПЗ), границы разрешённого воздушного пространства (ВП) и взлётно-посадочные пункты (ВПП) поверх MapLibre + deck.gl, но подложка сейчас — пустой фон (OFFLINE_STYLE без sources; см. 01-research.md §1, MapCanvas.tsx). Для заказчика и жюри это не «косметика», а доверие к координатам и высотам на всём пути «ввод → расчёт → выгрузка → симулятор».

1.1. Связь с формулировками заказчика (Q&A 16.09.2026)

Аргумент Почему без карты/рельефа ломается смысл Источник
Область съёмки и ВПП задаются произвольными координатами на карте, а не справочником Оператор должен видеть местность и ориентиры, иначе «произвольные» точки — абстрактные числа 04-requirements-checklist.md (../00-brief/04-requirements-checklist.md) (комментарий к R-IN-1); Q-06 WGS-84 — 06-customer-qa-2026-09-16.md (../00-brief/06-customer-qa-2026-09-16.md)
Третий вход — «карта высотных препятствий» наряду с KML зон облёта и запретов Терренный полёт и запас над рельефом — отраслевая норма; без ЦМР высота в ПЗ не привязана к местности Q-0906-customer-qa-2026-09-16.md (../00-brief/06-customer-qa-2026-09-16.md)
GSD на этапе планирования — расчётная оценка при постоянной истинной высоте в задании При терренном полёте номинальная высота должна следовать рельефу, иначе GSD «плывёт» по галсам Q-14; модель — terrain.ts, 01-research.md §1
Эталон отрасли (Geoscan Planner) кеширует подложку и карту высот (GEM) офлайн Заказчик ожидает поведение «как в Planner»: местность и высоты не исчезают без интернета 20-analogs/01-geoscan-planner.md (../20-analogs/01-geoscan-planner.md)

1.2. Связь с чеклистом ТЗ и приёмкой

Требование Что должна дать карта Источник
R-DEMO-2 — визуализация маршрутов Маршруты читаются на узнаваемой местности, а не на однотонном фоне; статус «частично» закрывается подложкой + теми же deck.gl-слоями 04-requirements-checklist.md (../00-brief/04-requirements-checklist.md); AC-1309-metrics-and-acceptance.md (../90-business/09-metrics-and-acceptance.md)
R-IN-1…6 — ВПП, область, БПЗ, ВП Слои уже рисуются deck.gl; карта даёт пространственный контекст для проверки «зона не в реке / не за городом» R-IN-* — чеклист; реализация слоёв — 01-research.md §1 (layers.ts)
R-OUT-2, M-19, AC-21 — KML в Google Earth Координаты WGS-84 (Q-06) должны совпадать с подложкой и экспортом (без сдвига датума/проекции) Q-06; AC-2109-metrics-and-acceptance.md (../90-business/09-metrics-and-acceptance.md)
R-DOC-3, NFR-09…14, SR-CFG-09…11 — офлайн-контур Без локальных PMTiles (подложка + DEM) docker compose up не демонстрирует карту и рельеф без сети TODO.md (../TODO.md) P2; 93-review/00-checklist.md (NFR-12, NFR-13); D-0393-review/10-build-ops.md (../93-review/10-build-ops.md)
Демо-сценарий — реальный район 20–40 км² Жюри ожидает узнаваемый район на карте, не синтетический прямоугольник AC-12, M-1709-metrics-and-acceptance.md (../90-business/09-metrics-and-acceptance.md); 70-plan/02-test-scenarios.md (../70-plan/02-test-scenarios.md)

1.3. Блокер приёмки: «нет реальных геоданных»

Аудит симулятора и планировщика фиксирует: настоящих геоданных в контуре 0 байт — подложка отсутствует, рельеф в UI — синтетическая функция terrainAt() (112…288 м MSL вокруг фиксированного ORIGIN), зеркало GLO-30 заблокировано (fixtures/mirror/manifest.jsonblocked).

Находка Следствие для бизнес-требований к карте Источник
«Карта местности и топосъёмка» — НЕТ, реальных геоданных 0 байт Поставка PMTiles (OSM + DEM) — must для демо и симулятора, не «nice to have» simulate/docs/93-audit/92-review-completeness.md (../../../simulate/docs/93-audit/92-review-completeness.md)
SIM-BIZ-09 — стенд без интернета и без ключей тайл-сервисов Любая подложка с внешним URL или API-ключом не принимается на изолированном стенде 01-research.md §1; simulate/docs/90-final/02-requirements-registry.md (../../../simulate/docs/90-final/02-requirements-registry.md) (SIM-BIZ-09)
Ограничение продукта: «В UI dev рельеф — аналитическая функция, не DEM» Бизнес-требование BR-MAP по DEM закрывает пробел, уже описанный как MAP-08 95-manual/03-limitations.md; MAP-0892-code/03-map-and-3d.md (../92-code/03-map-and-3d.md)

Файл simulate/docs/98-fixes/real-geodata.md в репозитории отсутствует; эквивалент по смыслу — пакет Б-7 «Реальных геоданных нет» (simulate/docs/98-fixes/00-merge-log.md) и требования к источникам мира simulate/docs/10-world/01-geodata-sources.md.

1.4. Принятое продуктовое решение (наследуем без пересмотра)

Исследование 01-research.md §5 рекомендует:

  1. Основной контур (офлайн + aerozveno после сборки): OSM-вектор self-host → basemap.pmtiles, Copernicus GLO-30 → terrain.pmtiles, протокол pmtiles://, raster-dem, attributionControl: true, runtime-переключатель mapBasemap (pmtiles | openfreemap | yandex-tiles).
  2. Фаза 0 (только интернет-стенд aerozveno.ff): OpenFreeMap style URL, пока PMTiles не собраны — не для симулятора и не для приёмки MAP-R-13 на изолированном контуре.
  3. Запасной путь: Яндекс Tiles API (растр, web_mercator, логотип, ключ в creds-store) — только где у браузера есть интернет; DEM всё равно свой.

Ниже все BR-MAP-xx трактуют это решение как бизнес-обязательство, если не помечено иначе.


2. Пользовательские истории (BR-MAP-xx)

Формат: роль → потребность → ценность → критерий приёмки, проверяемый человеком без доступа к коду.
Идентификаторы ссылаются на источники в §7.

BR-MAP-01 — Ориентация на местности при вводе сценария

Поле Содержание
Роль Оператор планирования (инженер БАС)
Потребность Вижу реальную топосъёмку района (дороги, гидрография, застройка) под геометрией сценария
Ценность Область съёмки и ВПП ставятся осмысленно; снижается риск «правильных координат в не том месте»
Критерий приёмки На демо-полигоне s04 (≈40 км², Москва и окрестности) при масштабе, где виден район целиком, оператор устно называет ≥2 ориентира (река, аэропорт, кольцевая и т.п.), совпадающих с открытым OSM/спутником вне сервиса; координаты центра карты в WGS-84 совпадают с центроидом области с погрешностью ≤ 50 м
Источники R-IN-3, R-IN-1; AC-12; 01-research.md §5–6

BR-MAP-02 — Навигация по карте (масштаб, панорама)

Поле Содержание
Роль Оператор
Потребность Масштабирую и сдвигаю карту колёсиком/жестами без перезагрузки страницы
Ценность Быстрый обзор большого демо-района (20–40 км²)
Критерий приёмки За 30 с оператор переходит от обзора всего полигона s04 до уровня, где видна отдельная улица, без артеfactов «белых дыр» > 2 с; положение камеры сохраняется при переходе /scenario → /plan на том же сценарии (карта не пересоздаётся — MAP-R-16)
Источники R-DEMO-2; MAP-01, MAP-R-1692-code/03-map-and-3d.md (../92-code/03-map-and-3d.md)

BR-MAP-03 — Поиск и переход к координатам/району

Поле Содержание
Роль Оператор
Потребность Перейти к известной точке (широта/долгота или название объекта сценария)
Ценность Не теряюсь на больших полигонах; связь с импортом KML
Критерий приёмки Must (демо): поле ввода «широта, долгота» + кнопка «Перейти» центрирует карту с zoom ≥ 14; ошибка при координатах вне WGS-84. Should: поиск по имени ВПП из сценария — двойной клик по строке списка ВПП выполняет flyTo
Источники Q-06; US-08 импорт — 90-business/03-user-scenarios.md (../90-business/03-user-scenarios.md); геокодер Яндекса не смешивать с OSM-подложкой (01-research.md §6.2, п. 6.6.1)

BR-MAP-04 — Переключатель спутник / схема

Поле Содержание
Роль Оператор
Потребность Переключить вид «схема ↔ спутник» для оценки застройки и растительности
Ценность Соответствие ожиданиям от аэрофотопланирования; узнаваемость для жюри
Критерий приёмки На контуре с mapBasemap=pmtiles: переключатель меняет подложку ≤ 3 с; спутник — локальный слой (Sentinel-2/орто заказчика в PMTiles, 01-research.md §2.3), не Яндекс JS API. На yandex-tiles: доступна только схема (ограничение Tiles API); UI явно пишет «спутник недоступен для выбранной подложки»
Источники 01-research.md §2.3, §3.2; 50-stack/04-frontend-3d.md (../50-stack/04-frontend-3d.md)

BR-MAP-05 — Рисование и правка области съёмки на подложке

Поле Содержание
Роль Оператор
Потребность Нарисовать/править полигон области на карте с привязкой к видимым границам местности
Ценность R-IN-3 выполняется визually, а не только JSON
Критерий приёмки Новый прямоугольник/полигон области отображается поверх подложки; вершины совпадают с курсором с погрешностью ≤ 2 px; после сохранения сценария reload страницы восстанавливает ту же геометрию и тот же bbox на карте
Источники R-IN-3; MAP-0592-code/03-map-and-3d.md (../92-code/03-map-and-3d.md)

BR-MAP-06 — ВПП и резервные площадки на карте

Поле Содержание
Роль Оператор
Потребность Ставлю точки ВПП/посадки на реальной местности (поле, площадка), видя рельеф и застройку
Ценность R-IN-1, Q-05 (старт ≠ посадка)
Критерий приёмки Клик по карте создаёт маркер ВПП; координаты в форме сценария обновляются; экспорт KML содержит те же WGS-84 координаты (ручная проверка 3 точек)
Источники R-IN-1, Q-05; AC-21

BR-MAP-07 — БПЗ и разрешённое ВП поверх подложки

Поле Содержание
Роль Оператор / специалист по воздушному пространству
Потребность Вижу полигоны бесполётных зон и границ разрешённого ВП на той же подложке, что и область съёмки
Ценность R-IN-5/6; Q-13 («режим»); визуальная проверка до расчёта
Критерий приёмки Одновременно видны слои nfz, allowed, survey-area, launch-sites (имена по реестру слоёв); переключатели слоёв скрывают/показывают без сдвига геометрии; цвет БПЗ отличим от границы ВП на скриншоте, понятном без легенды за 5 с
Источники R-IN-5, R-IN-6, AC-13; 01-research.md §1 (layers.ts)

BR-MAP-08 — Терренный рельеф влияет на высоту полёта (AGL / terrain following)

Поле Содержание
Роль Оператор
Потребность Вижу рельеф местности и понимаю, почему высота съёмки меняется над холмами/долинами; профиль высот использует ту же модель, что карта
Ценность Закрывает Q-09 и модель GSD при терренном полёте; приближение к Geoscan Planner (GEM + превышение)
Критерий приёмки На DEM bbox s04: (1) 3D-вид/наклон карты показывает рельеф (exaggeration = 1 для расчётов, допускается ×2 только для визуализации с подписью); (2) таблица WPT/профиль высот для точки на гребне и в долине различается ≥ 10 м при одинаковом заданном AGL; (3) SyntheticTerrain не используется при загруженном сценарии с файлами PMTiles (ручная проверка: отключить /tiles/terrain.pmtiles → явная ошибка/предупрежение, не молчаливая подмена)
Источники Q-09; MAP-07, MAP-08; 01-research.md §2.3; 20-analogs/01-geoscan-planner.md (../20-analogs/01-geoscan-planner.md)

BR-MAP-09 — Изолинии / подписи высот (опора на DEM)

Поле Содержание
Роль Оператор
Потребность Оценить абсолютные отметки и перепады без внешнего GIS
Ценность Поддержка Q-09 и демонстрации «карты высотных препятствий»
Критерий приёмки Включение слоя «изолинии» рисует линии с шагом 10 м из того же DEM, что terrain-RGB; клик по карте (или профиль) показывает высоту MSL с точностью ±1 м от эталонного значения Copernicus в 3 контрольных точках bbox
Источники MAP-0992-code/03-map-and-3d.md (../92-code/03-map-and-3d.md); 01-research.md §5

BR-MAP-10 — Офлайн-демо на стенде хакатона (без интернета)

Поле Содержание
Роль Докладчик / инженер стенда
Потребность Поднять планировщик на ноутбуке без интернета и показать карту + рельеф + расчёт
Ценность R-DOC-3, SIM-BIZ-09, риск «на защите нет сети» (TODO.md (../TODO.md))
Критерий приёмки docker compose up на машине с отключённой сетью: вкладка «Сеть» браузера — 0 запросов вне origin; карта рисует подложку и рельеф; сценарий s01 считается; стиль не содержит http/https (MAP-R-13); mapBasemap только pmtiles
Источники NFR-09, SR-CFG-1091-system/08-config-and-secrets.md (../91-system/08-config-and-secrets.md); SIM-BIZ-09; 01-research.md §6.1

BR-MAP-11 — Онлайн-bootstrap на aerozveno (фаза 0)

Поле Содержание
Роль Команда разработки
Потребность Показать узнаваемую карту на https://aerozveno.ff до завершения сборки PMTiles
Ценность Не блокировать UI-разработку; браузеры стенда имеют интернет (01-research.md §1)
Критерий приёмки config.json: mapBasemap=openfreemap → карта загружается; в LIMITATIONS указано «временно нарушает MAP-R-13»; переключение на pmtiles после выкладки файлов в MinIO не требует пересборки фронта (только конфиг + reload)
Источники 01-research.md §5–6; 95-deploy/frontend-on-aerozveno.md

BR-MAP-12 — Запасная подложка «как Яндекс» (только интернет)

Поле Содержание
Роль Представитель заказчика на стенде
Потребность Привычная схема Яндекса, если OSM ещё не готов
Ценность Снижение когнитивной нагрузки; не заменяет DEM
Критерий приёмки При mapBasemap=yandex-tiles: видна схема; на карте есть логотип/ссылка Яндекса; projection=web_mercator; deck.gl-слои не смещены > 5 м относительно подложки на zoom 15; ключ не в git; в симуляторе режим недоступен
Источники 01-research.md §6.2; creds-store — CLAUDE.md (../../../CLAUDE.md)

BR-MAP-13 — Единая система координат с экспортом KML (Google Earth)

Поле Содержание
Роль ГИС-специалист
Потребность Выгруженный KML открывается в Google Earth на тех же координатах, что на карте планировщика
Ценность M-19, AC-21, Q-06
Критерий приёмки Round-trip: центроид области на карте и центроид <Polygon> в KML расходятся ≤ 1 м; 5 вершин маршрута в Earth совпадают с hover-подсказкой координат в UI (≤ 2 м); нет систематического сдвига > 100 м (признак неверной проекции тайлов)
Источники Q-06, Q-07; AC-21; MAP-R-06 (проекция только в geo.ts)

BR-MAP-14 — Тот же рельеф и bbox для симулятора мира

Поле Содержание
Роль Инженер валидации / симуляции
Потребность Мир симулятора использует те же файлы DEM/подложки (или производные из того же пайплайна), что и планировщик
Ценность Числа клиренса/GSD в симуляторе сопоставимы с UI; закрытие аудита «0 байт геоданных»
Критерий приёмки В манифесте мира указаны sha256 basemap.pmtiles и terrain.pmtiles, совпадающие с версией на /tiles/ планировщика; bbox мира = bbox сценария s04 ± 1 км; документ simulate/docs/10-world/01-geodata-sources.md §2.1 (приоритет GeoTIFF заказчика над GLO-30) соблюдён при появлении данных заказчика
Источники 01-research.md §6.1; SIM-GEO-1701-geodata-sources.md; аудит Р-1simulate/docs/93-audit/01-geo-and-world.md (../../../simulate/docs/93-audit/01-geo-and-world.md)

BR-MAP-15 — Атрибуция и правовая корректность подложки

Поле Содержание
Роль Юридически ответственное лицо / DevOps
Потребность На экране видны обязательные copyright OSM / Copernicus / Яндекс (если применимо)
Ценность Соответствие ODbL и лицензии Copernicus; отсутствие претензий на защите
Критерий приёмки attributionControl: true; текст содержит «© OpenStreetMap contributors» для OSM и формулировку Copernicus для DEM (01-research.md §6.1); для Яндекс Tiles — видимый логотип; скриншот для презентации приложен
Источники 01-research.md §2.2, §6.1; MAP-R-13 (локальные URL)

BR-MAP-16 — Управление ключами и секретами карт

Поле Содержание
Роль DevOps
Потребность Ключ Яндекс Tiles (если используется) не попадает в git и не светится в публичном config.json
Ценность Безопасность tailnet и соответствие ToS
Критерий приёмки get_cred("project/geoscan", "YANDEX_TILES_API_KEY") существует при включённом режиме; репозиторий и бандл фронта не содержат строки ключа; прокси /api/tiles/yandex/... или Referer-ограничение задокументированы в runbook
Источники 01-research.md §6.2; SEC-07 импорт — 92-code/09-security.md (../92-code/09-security.md)

BR-MAP-17 — План и маршруты на карте после расчёта

Поле Содержание
Роль Оператор
Потребность Вижу галсы, перелёты, полосы захвата на той же подложке
Ценность R-DEMO-2, AC-13
Критерий приёмки После расчёта s04 на карте ≥ 4 типов объектов из чеклиста демо (галсы по бортам, перелёты, полосы захвата, область, БПЗ, ВП, ВПП); смена времени воспроизведения не «мигает» подложкой
Источники AC-13; MAP-02, MAP-03

BR-MAP-18 — Производительность карты на демо-полигоне

Поле Содержание
Роль Оператор
Потребность Карта остаётся отзывчивой при полном плане s04
Ценность R-PLT-1, качество демонстрации
Критерий приёмки Панорамирование на s04 после расчёта — ≥ 30 fps субъективно «плавно»; включение рельефа не блокирует UI > 500 ms (PERF-09, MAP-03)
Источники 92-code/10-performance.md (../92-code/10-performance.md); MAP-08 (interleaved: true)

BR-MAP-19 — Документирование ограничений точности DEM

Поле Содержание
Роль Эксперт заказчика
Потребность Понимать, что GLO-30 ≠ GEM Geoscan и ≠ своя съёмка
Ценность Честность Q-14, Q-33 (не отвечен)
Критерий приёмки В 03-limitations.md есть абзац: источник DEM, вертикальная точность порядка 2–4 м, приоритет GeoTIFF заказчика; на UI — badge «DEM: Copernicus GLO-30» или «DEM: заказчик»
Источники 01-research.md §2.3, §8; 95-manual/03-limitations.md; Q-3306-customer-qa-2026-09-16.md (../00-brief/06-customer-qa-2026-09-16.md)

BR-MAP-20 — Сборка и поставка тайлов (операционное требование)

Поле Содержание
Роль DevOps
Потребность Воспроизводимо собрать basemap.pmtiles + terrain.pmtiles для bbox s04 или ЦФО и положить в MinIO / offline-пакет
Ценность Закрытие TODO P2, SR-CFG-11
Критерий приёмки Скрипт scripts/build-map-tiles.sh (или эквивалент в docs) описывает шаги; размер артефактов bbox s04: basemap < 100 МБ, terrain < 20 МБ (01-research.md §6.1); PMTiles не в git
Источники TODO.md (../TODO.md); 01-research.md §6.1

3. Нецели (явно OUT of scope)

Функция Причина исключения Источник
Маршрутизация автомобилей / ОТ Не входит в ТЗ; другой продукт и ToS ТЗ п. 2; 01-research.md §7
Пробки, live-трафик Риск трактовки как диспетчеризация (Яндекс п. 5.1.3) 01-research.md §2.1
POI-поиск как у 2GIS/Яндекс Нет API без JS API; отвлечение от планирования БАС 01-research.md §3.3
2GIS MapGL как движок карты Ломает MapLibre + deck.gl overlay 01-research.md §5
Яндекс JS API v3 вместо MapLibre ToS: отображение только через их ПО 01-research.md §2.1
tile.openstreetmap.org / vector OSMF CDN Tile Usage Policy запрещает офлайн; MAP-R-13 01-research.md §2.2
Mapbox / Cesium ion / Google 3D Токены, запрет офлайн-кеша 01-research.md §7; 01-geodata-sources.md
Esri World Imagery «бесплатно» Коммерческие ToS 01-research.md §2.3
FABDEM CC BY-NC-SA — несовместимо с коммерцией 01-geodata-sources.md
Замена deck.gl-слоёв тайлами провайдера БПЗ/ВП уже в layers.ts; провайдер не знает сценарий 01-research.md §1
Полная страна OSM в первой поставке Бюджет хакатона: bbox s04 / ЦФО 01-research.md §2.2

4. Правовые и лицензионные ограничения (бизнес-уровень)

ID Ограничение Обязательное действие продукта Источник
L-MAP-01 OSM — ODbL, атрибуция обязательна Текст «© OpenStreetMap contributors» в attribution 01-research.md §2.2
L-MAP-02 Copernicus GLO-30 — free & open с фиксированной цитатой Attribution в стиле + в LIMITATIONS 01-research.md §2.3
L-MAP-03 Яндекс Tiles — кеш ≤ 30 дней, не архивировать для sim Не собирать mbtiles из PNG Яндекса; sim без yandex-tiles 01-research.md §2.1, §6.2
L-MAP-04 Яндекс Tiles — только web_mercator Иначе deck.gl и KML «разъедутся» 01-research.md §2.1
L-MAP-05 OpenFreeMap public — as-is, без SLA Не включать в критерий приёмки offline/sim 01-research.md §2.2, §8
L-MAP-06 2GIS vector — только через MapGL Не использовать как подложку 01-research.md §2.1
L-MAP-07 Своя GeoTIFF/LiDAR заказчика Приоритет над GLO-30; лицензия — на стороне заказчика 01-geodata-sources.md §2.1

5. Приоритизация MoSCoW (дедлайн защиты 29.09.2026)

Must — без этого демо на стенде без интернета или R-DEMO-2 формально слабое.
Should — сильно повышает оценку «качество демонстрации», успеть до 29.09 реалистично.
Could — после первой поставки PMTiles или при наличии времени.
Won't (хакатон) — сознательно переносится.

ID MoSCoW Обоснование к дате
BR-MAP-01, 02, 07, 17 Must AC-13, R-DEMO-2
BR-MAP-08, 10, 13, 15, 20 Must Q-09, R-DOC-3, SIM-BIZ-09, блокер «0 байт геоданных»
BR-MAP-05, 06 Must R-IN-1, R-IN-3
BR-MAP-11 Should Ускоряет разработку до PMTiles на aerozveno
BR-MAP-04 (спутник local) Should Желательно в брифе, не обязательно в ТЗ (01-research.md §4 вес Satellite 0.05)
BR-MAP-09 Could MAP-09 — 1 заход после MAP-08
BR-MAP-03 (геокодинг названий) Could Достаточно координат к демо
BR-MAP-12 Could Только если заказчик настаивает на «яндекс-схеме»
BR-MAP-14 Should Связка sim + planner для credibility; часть SIM-FIN-07
BR-MAP-16 Must если включён BR-MAP-12; иначе Should (заготовка creds)
BR-MAP-18, 19 Should Экспертные вопросы на защите
2GIS / JS API / routing Won't 01-research.md §7

6. Риски и меры

Риск Вероятность / impact Митигация Источник
Planetiler не успеет до 29.09 С / H Фаза 0 OpenFreeMap на aerozveno; параллельно bbox s04 (< 100 МБ) 01-research.md §5–6
OpenFreeMap недоступен в день демо M / M Self-host PMTiles на n1/MinIO; не зависеть от CDN в Must-критериях 01-research.md §8
Яндекс меняет ToS/тариф Tiles API L / H Основной путь — OSM self-host; Яндекс только fallback 01-research.md §5
RU: доступ к AWS Copernicus с рабочей станции M / M Разовая выгрузка на n1; COG в offline-пакете 01-research.md §6.1
Неточность GLO-30 vs реальные препятствия H / M BR-MAP-19; слой OSM power=*; опционально GeoTIFF заказчика Q-09; 01-geodata-sources.md
Сдвиг координат (не web mercator) M / H Тест BR-MAP-13; запрет elliptic mercator 01-research.md §6.2
Диск n1 / MinIO L / M Бюджет ≤ 15 ГБ; только bbox s04 01-research.md §2.2, §8
attributionControl: false сейчас H / L (юр.) BR-MAP-15 — включить до публичного демо 01-research.md §1

7. Матрица трассируемости (выборка)

BR-MAP Основной источник бизнес-факта
01–02, 17 R-DEMO-2, AC-13
05–07 R-IN-1…6, Q-13
08–09 Q-09, MAP-07…09
10 R-DOC-3, NFR-09, SIM-BIZ-09, TODO P2
11–12 01-research.md
13 Q-06, AC-21, M-19
14 01-geodata-sources.md, аудит sim
15–16 01-research.md, L-MAP-*
19 Q-14, Q-33, limitations
20 SR-CFG-11, TODO

8. Диаграммы

8.1. Пользовательский путь с картой (от ввода до экспорта)

flowchart LR
  subgraph input [Ввод сценария]
    A[Открыть карту с подложкой PMTiles] --> B[Масштаб / панорама]
    B --> C[Область съёмки и ВПП на местности]
    C --> D[БПЗ и граница ВП поверх basemap]
    D --> E[Профиль высот по DEM]
  end
  subgraph plan [Планирование]
    E --> F[Расчёт плана]
    F --> G[Галсы и полосы на той же карте]
  end
  subgraph out [Выход]
    G --> H[Экспорт KML WGS-84]
    H --> I[Google Earth без сдвига]
    G --> J[Те же PMTiles в симуляторе]
  end

8.2. Mindmap потребностей стейкхолдеров

mindmap
  root((Карта и рельеф))
    Заказчик Q&A
      Q-09 карта препятствий
      Q-06 WGS-84
      Q-05 разные ВПП посадки
    Жюри / ТЗ
      R-DEMO-2 визуализация
      AC-12 реальный район
      M-19 KML в Earth
    Офлайн контур
      R-DOC-3
      SIM-BIZ-09
      MAP-R-13
    DevOps
      PMTiles в MinIO
      creds ключ Яндекс
      атрибуция ODbL
    Симулятор
      GLO-30 манифест
      0 байт geodata blocker

8.3. Квадрант приоритета × срок (MoSCoW)

quadrantChart
    title BR-MAP: ценность для демо 29.09 vs срок реализации
    x-axis "Дольше 3 дней" --> "≤ 3 дней"
    y-axis "Nice to have" --> "Критично для защиты"
    quadrant-1 "Must немедленно"
    quadrant-2 "Must, но параллель DevOps"
    quadrant-3 "Could / Won't"
    quadrant-4 "Should после PMTiles"
    BR-MAP-10 offline: [0.25, 0.95]
    BR-MAP-08 DEM: [0.35, 0.92]
    BR-MAP-01 basemap: [0.45, 0.88]
    BR-MAP-20 build tiles: [0.15, 0.90]
    BR-MAP-11 OpenFreeMap: [0.85, 0.55]
    BR-MAP-09 contours: [0.40, 0.45]
    BR-MAP-12 Yandex fallback: [0.70, 0.35]
    BR-MAP-03 geocode POI: [0.75, 0.30]

9. Разногласия с исследованием

Разногласий с вердиктом 01-research.md §5 нет. Документ переводит рекомендацию в проверяемые BR-MAP-xx и MoSCoW.

Уточнение (не возражение): для BR-MAP-03 (поиск адресов) business-требование намеренно сужено до координат и flyTo по объектам сценария — полноценный геокодер провайдера вне scope (01-research.md §6.2, запрет смешивания геокодера Яндекса с OSM-подложкой).


10. Связанные артефакты реализации

Артефакт Назначение
92-code/03-map-and-3d.md (../92-code/03-map-and-3d.md) MAP-07…09, MAP-R-13, критерии тестов
01-research.md Выбор провайдера, лицензии, проводка
TODO.md (../TODO.md) P2 Сборка тайлов
simulate/docs/10-world/01-geodata-sources.md DEM и приоритет данных заказчика для sim

Документ подготовлен для ветки fix4/maps-biz-req; изменения кода не описывают — только бизнес-обязательства и приёмку.