7.5 KiB
7.5 KiB
2026-05-13 — Terrain UI фикс + генерация тайлов
Что сделано
Terrain UI баги (из UI-тестов)
- Попап terrain — позиционирование исправлено (привязка к кнопке, а не top-right угол)
- Подписи чекбоксов — были невидимы из-за отсутствия шрифтов в headless Chromium. Установлены Noto Sans в тестовое окружение. В реальном браузере подписи были видны всегда.
- "Зум 10+" подсказка для hillshade — теперь вызывается при открытии попапа + стилизована заметно
- Переименование: Гипсометрия → "Высоты цветом", Отмывка → "Тени рельефа"
- Opacity: снижен с 0.85 → 0.65 для читаемости подписей населённых пунктов
Генерация hypso тайлов
- Root cause пустых тайлов: VRT создавался с относительными путями к HGT, сохранялся в другую директорию → GDAL не находил source files → все пиксели = 0
- Фикс: VRT строится с абсолютными путями через
-input_file_list - Тестовая генерация: Чувашия (зумы 5-14) — подтверждена работоспособность
- Полная генерация: 81 HGT файл, зумы 5-12, ~48K тайлов
Скачивание недостающих SRTM
- Дыра E041-E046 (Владимир — Нижний Новгород — Чебоксары) закрыта
- 14 файлов скачаны с kurviger.de зеркала (User-Agent нужен!)
- Итого: 81 HGT файл (было 67)
Новый слой: Перепады (TRI — Terrain Ruggedness Index)
- Отдельный чекбокс "Перепады" в попапе рельефа
- Алгоритм: gdaldem TRI → color-relief с порогами от TRI=3
- Цветовая шкала: прозрачный (плоско) → жёлтый (3-5) → оранжевый (5-10) → красный (10+)
- Первая версия порогов (TRI=10) была слишком высокой — среднее TRI=2.97
- Пересгенерено с порогом от 3 — теперь видно
Деплой
- Статика отдаётся через контейнер
prototype-enduro-trails-1(FastAPI) - Файлы на хосте НЕ = файлы в контейнере (образ вкомпилен при сборке)
- Нужен
docker cpпосле каждого изменения CSS/JS/HTML - Nginx location
/enduro/terrain/→/home/slin/enduro-trails/data/terrain/(тайлы с хоста напрямую)
Технические заметки
SRTM зеркала
firmware.ardupilot.org/SRTM/ap_srtm3/— ненадёжно (0 байт)srtm.kurviger.de/SRTM3/Eurasia/— работает, но нужен User-Agent (403 без него)viewfinderpanoramas.org/dem3/— таймауты
Headless Chromium шрифты
- Контейнер OpenClaw не имеет шрифтов и fontconfig
- Установлены Noto Sans в
~/.local/share/fonts/+ fontconfig из deb - Без этого кириллица не рендерится в скриншотах
TRI color ramp (финальный)
0-2: прозрачный
3: жёлтый (alpha 60)
4: жёлтый (alpha 100)
5: оранжевый (alpha 140)
7: тёмно-оранжевый (alpha 180)
10: красный (alpha 200)
15+: тёмно-красный (alpha 220+)
TODO
- Попап terrain: третий чекбокс обрезается на мобильном — нужен overflow/scroll или сдвиг позиции
- На зуме 10 MapLibre запрашивает тайлы зума 11 (devicePixelRatio?) — нужно генерить зум 11 тоже или разобраться с overzooming
Расширение покрытия на запад (Смоленск)
- Слава попросил покрытие от Солнечногорска (~37E) до Смоленска (~32E)
- Скачаны 20 SRTM файлов: N53-N56, E032-E036 (kurviger зеркало, User-Agent обязателен)
- Итого: 101 HGT файл (было 81)
- Перегенерены hypso + TRI тайлы (зумы 5-12), ~65K тайлов
- Bounds в app.js обновлены:
[35, 45, 55, 62]→[32, 45, 55, 62] docker cpapp.js в контейнер- Покрытие теперь: 32E (Смоленск) — 51E (Чебоксары), 50N — 61N
TODO (обновлённый)
- Попап terrain: третий чекбокс обрезается на мобильном — нужен overflow/scroll или сдвиг позиции
- На зуме 10 MapLibre запрашивает тайлы зума 11 (devicePixelRatio?) — нужно генерить зум 11 тоже или разобраться с overzooming
- Слава ещё не подтвердил что видит покрытие от Смоленска — ждём фидбек
Полный прогон тестов (55 тест-кейсов)
- Результат: 53 PASS, 2 FLAKY, 0 FAIL
- Flaky (не баги): TC-1.1 (сетевая задержка 22с при массовом прогоне), TC-2.1 (порядок тестов влияет на localStorage)
- Покрыто: загрузка, навигация, тема, компас, попап, hillshade, TRI, грунтовки, тропы, маршруты, разведка, scenic, link, линейка, маркеры, поиск, sheets, деактивация, адаптивность, производительность, покрытие данных, edge cases
Баг: грунтовки не рендерились (КРИТИЧЕСКИЙ)
- Root cause: Относительный URL
/api/tiles/{z}/{x}/{y}.mvtв style.json не резолвился в MapLibre Web Worker (workers не имеютdocument.baseURI) - Фикс: Заменён на абсолютный URL
https://openclaw.mva154.duckdns.org/enduro/api/tiles/{z}/{x}/{y}.mvtв style.json и style-dark.json - После фикса: 2079 source features, 387 tracks rendered, 35 paths rendered
Баг: TRI пропадает при смене темы
- Root cause:
map.setStyle(url)не триггеритstyle.loadevent в MapLibre. Listeneronce('style.load')вswitchMapStyleникогда не вызывался. - Фикс: Заменён на
map.once('idle')+ вызовrebuildMapOverlays()(который теперь включаетrestoreTerrainState()иrestoreTrailsState())
Итого за сессию исправлено 8 багов:
- Пустые hypso тайлы (VRT relative paths)
- Дыра Владимир—Чебоксары (+14 SRTM)
- Дыра до Смоленска (+20 SRTM)
- TRI невидим (порог 10→3)
- Попап обрезается (bottom-aligned)
- Карта прыгает при зуме (bounds убран)
- Грунтовки не рендерятся (relative URL в Worker)
- TRI пропадает при смене темы (idle event)
Отчёт
- Полный отчёт:
tasks/enduro-trails/reports/full-test/REPORT.md