Бизнес-требования: интеграция карты и рельефа в планировщик
Дата: 2026-09-18. Ветка: fix4/maps-biz-req (от release/m1).
Основа решения: вердикт исследования 01-research.md — self-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-09 — 06-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-13 — 09-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-21 — 09-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-03 — 93-review/10-build-ops.md (../93-review/10-build-ops.md) |
| Демо-сценарий — реальный район 20–40 км² |
Жюри ожидает узнаваемый район на карте, не синтетический прямоугольник |
AC-12, M-17 — 09-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.json → blocked).
| Находка |
Следствие для бизнес-требований к карте |
Источник |
| «Карта местности и топосъёмка» — НЕТ, реальных геоданных 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-08 — 92-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 рекомендует:
- Основной контур (офлайн + aerozveno после сборки): OSM-вектор self-host →
basemap.pmtiles, Copernicus GLO-30 → terrain.pmtiles, протокол pmtiles://, raster-dem, attributionControl: true, runtime-переключатель mapBasemap (pmtiles | openfreemap | yandex-tiles).
- Фаза 0 (только интернет-стенд aerozveno.ff): OpenFreeMap style URL, пока PMTiles не собраны — не для симулятора и не для приёмки MAP-R-13 на изолированном контуре.
- Запасной путь: Яндекс 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-16 — 92-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-05 — 92-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-09 — 92-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-10 — 91-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-17 — 01-geodata-sources.md; аудит Р-1 — simulate/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-33 — 06-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)
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. Связанные артефакты реализации
Документ подготовлен для ветки fix4/maps-biz-req; изменения кода не описывают — только бизнес-обязательства и приёмку.