Files
wiki/tasks/enduro-trails/DEV_TASK_HYPSO_REGEN.md
2026-05-13 09:10:03 +03:00

8.9 KiB
Raw Blame History

DEV TASK: Перегенерация hypso тайлов (тест + полный прогон)

Статус: Ready for dev
Проект: enduro-trails
Фаза: 5.4


Цель

Сгенерировать рабочие тайлы гипсометрии из SRTM HGT файлов. Сначала тестовый прогон на 1 зуме, потом полная генерация.

Контекст

  • merged_srtm.tif — пустой (все пиксели = 0), merge был сделан неправильно
  • hypso_colored.tif — тоже пустой (следствие)
  • Отдельные HGT файлы рабочие: N55E037.hgt имеет высоты 100-264м
  • Hillshade тайлы рабочие — значит для hillshade использовался другой VRT/merge
  • Скрипт regen_hypso.sh существует, но его VRT тоже даёт пустой результат
  • 67 HGT файлов, 1.7 ГБ, покрытие ~37E-51E, 50N-61N

Проблема

Скрипт regen_hypso.sh использует gdalbuildvrt -vrtnodata -32768 — это корректно (nodata в SRTM = -32768). Но merged_srtm.tif пустой — значит при его создании что-то пошло не так. Возможно:

  1. VRT создавался из пустой директории
  2. Или merge делался с неправильными параметрами
  3. Или файл был перезаписан пустым

Решение: не использовать merged_srtm.tif, а строить VRT напрямую из HGT файлов каждый раз.


Инфраструктура

Параметр Значение
Сервер slin@82.22.50.71 (пароль: motoZ@yaz2010)
SSH через ssh2 Node.js модуль
SRTM данные /home/slin/enduro-trails/data/srtm/ (67 файлов .hgt)
Выходная директория /home/slin/enduro-trails/data/terrain/hypso/
URL проверки https://openclaw.mva154.duckdns.org/enduro/terrain/hypso/{z}/{x}/{y}.png

Задачи

Task 1: Тестовая генерация (1 зум, маленький участок)

Цель: Убедиться что pipeline работает и тайлы содержат цвет.

Шаги:

  • 1.1 Построить VRT из HGT файлов и проверить что данные есть:
cd /home/slin/enduro-trails/data/srtm
gdalbuildvrt -vrtnodata -32768 -overwrite /tmp/hypso_test/srtm.vrt *.hgt
gdalinfo -stats /tmp/hypso_test/srtm.vrt 2>&1 | grep -E "STATISTICS_MAX|STATISTICS_MIN"
# Ожидаем: MIN > 0, MAX > 100 (реальные высоты)
  • 1.2 Сгенерировать color-relief GeoTIFF (тестовый, обрезанный по bbox Москвы):
mkdir -p /tmp/hypso_test

# Обрезать VRT до маленького участка (Москва ±1°)
gdal_translate -projwin 36.5 56.5 38.5 55.0 /tmp/hypso_test/srtm.vrt /tmp/hypso_test/srtm_crop.tif

# Color ramp (без синего для воды, <=0 прозрачный)
cat > /tmp/hypso_test/color_ramp.txt << 'EOF'
nv    0    0    0    0
-100  0    0    0    0
0     0    0    0    0
1     57   151  105  255
50    80   165  110  255
100   120  180  100  255
150   160  190  95   255
200   139  176  96   255
300   170  185  105  255
500   189  188  115  255
700   210  200  130  255
1000  220  206  148  255
1500  235  220  175  255
2000  210  185  140  255
2500  185  152  110  255
3000  160  120  80   255
4000  120  80   40   255
5000  200  200  200  255
EOF

# Генерация color-relief с альфа-каналом
gdaldem color-relief \
  /tmp/hypso_test/srtm_crop.tif \
  /tmp/hypso_test/color_ramp.txt \
  /tmp/hypso_test/hypso_test.tif \
  -alpha \
  -of GTiff \
  -co COMPRESS=LZW

# Проверить что не пустой
gdalinfo -stats /tmp/hypso_test/hypso_test.tif 2>&1 | grep "STATISTICS_MAX"
# Band 1 (Red) MAX должен быть > 0
  • 1.3 Нарезать тайлы только для зума 10:
mkdir -p /tmp/hypso_test/tiles
gdal2tiles.py \
  --zoom=10 \
  --processes=4 \
  --tilesize=256 \
  --webviewer=none \
  /tmp/hypso_test/hypso_test.tif \
  /tmp/hypso_test/tiles/

# Проверить что тайлы не пустые
find /tmp/hypso_test/tiles/10/ -name "*.png" | head -5 | xargs -I{} file {}
find /tmp/hypso_test/tiles/10/ -name "*.png" -size +400c | wc -l
# Должно быть > 0 (файлы больше 400 байт = не пустые)
  • 1.4 Скопировать тестовые тайлы в рабочую директорию и проверить через URL:
# Бэкап текущих пустых тайлов зума 10
mv /home/slin/enduro-trails/data/terrain/hypso/10 /home/slin/enduro-trails/data/terrain/hypso/10_backup

# Скопировать новые
cp -r /tmp/hypso_test/tiles/10 /home/slin/enduro-trails/data/terrain/hypso/10

# Проверить через curl (подставить реальный x/y из ls)
ls /home/slin/enduro-trails/data/terrain/hypso/10/ | head -3

Критерий готовности: Тайлы зума 10 содержат цветные пиксели (size > 400 байт). При включении гипсометрии на зуме 10 виден цветной overlay.


Task 2: Полная генерация (после подтверждения Task 1)

⚠️ НЕ ЗАПУСКАТЬ без подтверждения Славы что тест прошёл!

Шаги:

  • 2.1 Сгенерировать полный hypso GeoTIFF из всех HGT:
cd /home/slin/enduro-trails/data/srtm
gdalbuildvrt -vrtnodata -32768 -overwrite /tmp/terrain_gen/srtm.vrt *.hgt

gdaldem color-relief \
  /tmp/terrain_gen/srtm.vrt \
  /tmp/hypso_test/color_ramp.txt \
  /tmp/terrain_gen/hypso_full.tif \
  -alpha \
  -of GTiff \
  -co COMPRESS=LZW \
  -co BIGTIFF=YES

# Проверить
gdalinfo -stats /tmp/terrain_gen/hypso_full.tif 2>&1 | grep "STATISTICS_MAX"
  • 2.2 Удалить старые пустые тайлы и нарезать новые (зумы 5-14):
rm -rf /home/slin/enduro-trails/data/terrain/hypso/
mkdir -p /home/slin/enduro-trails/data/terrain/hypso/

gdal2tiles.py \
  --zoom=5-14 \
  --processes=4 \
  --tilesize=256 \
  --webviewer=none \
  /tmp/terrain_gen/hypso_full.tif \
  /home/slin/enduro-trails/data/terrain/hypso/

echo "Done. Tile count:"
find /home/slin/enduro-trails/data/terrain/hypso/ -name "*.png" | wc -l
  • 2.3 Проверить результат:
# Тайлы не пустые
find /home/slin/enduro-trails/data/terrain/hypso/10/ -name "*.png" -size +400c | wc -l
# Должно быть > 1000

Критерий готовности: Тайлы зумов 5-14 содержат цветные данные. Гипсометрия видна на карте.


Проверка (Acceptance)

# Проверка Команда / Действие Ожидаемый результат
1 VRT не пустой gdalinfo -stats srtm.vrt MAX > 100
2 Тестовый тайл цветной file tiles/10/x/y.png PNG > 400 байт
3 UI — гипсометрия видна Включить на зуме 10 Цветной overlay

Ограничения и контекст

  • ⚠️ SSH только через Node.js ssh2 (бинарный ssh сломан)
  • ⚠️ gdal2tiles на зумах 5-15 для полного покрытия может занять несколько часов — запускать в screen/tmux
  • ⚠️ Зум 15 генерит огромное количество тайлов — для теста достаточно 5-14
  • ⚠️ Color ramp: значения <=0 должны быть прозрачными (alpha=0), иначе вода/моря будут цветными
  • ⚠️ TMS scheme — gdal2tiles по умолчанию генерит TMS, app.js использует scheme: 'tms' — совпадает
  • 🚫 Не трогать hillshade тайлы — они рабочие
  • 🚫 Task 2 не запускать без подтверждения

Деплой-чеклист

  • VRT из HGT содержит реальные данные (stats > 0)
  • Тестовый color-relief не пустой
  • Тестовые тайлы зума 10 цветные
  • UI проверка — гипсометрия видна на карте
  • (После подтверждения) Полная генерация запущена
  • Полные тайлы на месте и видны в UI

Создано: 2026-05-13 | Автор ТЗ: Стрим | Исполнитель: Dev-агент