Files
wiki/tasks/enduro-trails/prototype
2026-05-05 19:40:01 +03:00
..
2026-05-05 19:40:01 +03:00
2026-05-04 23:40:01 +03:00
2026-05-02 17:10:02 +03:00
2026-05-04 09:40:01 +03:00

Enduro Trails — Prototype

FastAPI + MapLibre GL JS карта грунтовых дорог ЦФО + Чувашия.
Векторные тайлы (MVT) из SQLite/Spatialite, без внешних тайл-серверов.

Быстрый старт

Требования

  • Docker + Docker Compose
  • ~1.5 GB свободного места для БД

Запуск (если БД уже есть)

cd tasks/enduro-trails
docker compose up enduro-trails

Карта откроется на http://localhost:5558

Первичная загрузка данных (с нуля)

# Скачать PBF и распарсить в SQLite (~30-60 мин)
docker compose --profile init up data-init

# Затем запустить сервер
docker compose up enduro-trails

Структура

prototype/
  app.py          — FastAPI сервер, endpoint /api/tiles/{z}/{x}/{y}.mvt
  Dockerfile      — образ для сервера
  requirements.txt
  static/
    index.html    — HTML-разметка
    app.js        — вся логика карты (MapLibre GL)
    app.css       — стили
    style.json    — стиль карты (слои, цвета)

scripts/
  parse.py              — парсинг OSM PBF → SQLite
  requirements-parse.txt — зависимости только для парсинга
  smoke_check.py        — проверка схемы БД и API

API

Endpoint Описание
GET / Веб-карта
GET /api/tiles/{z}/{x}/{y}.mvt Векторный тайл (protobuf)
GET /api/health Статус сервера и БД
GET /api/route Роутинг А→Б через OSRM. Параметры: from_lon, from_lat, to_lon, to_lat
GET /api/cache/clear Принудительный сброс тайл-кэша

Валидация: z должен быть 022, x/y в пределах 2^z. Иначе 400.

Слои карты

ID слоя Описание
trails-track Грунтовки (highway=track)
trails-asphalt Асфальт (highway=track, surface=asphalt)
trails-path-bridleway Тропы и bridleway
poi-circles POI точки
poi-labels Подписи POI
osm-base OSM подложка

Smoke check

# Против живого сервера
API_BASE=http://82.22.50.71:5558 python scripts/smoke_check.py

# Локально (нужен доступ к БД)
DATA_PATH=/data/centralfederal.sqlite API_BASE=http://localhost:5558 python scripts/smoke_check.py

OSRM роутинг

Роутинг работает через внешний OSRM-контейнер. По умолчанию OSRM_URL=http://172.22.0.1:5559 — это Docker host gateway. Профиль: ../osrm/enduro.lua.

Переменные окружения

Переменная По умолчанию Описание
DATA_PATH ../data/centralfederal.sqlite Путь к SQLite БД
PORT 5558 Порт сервера
OSRM_URL http://172.22.0.1:5559 URL OSRM-сервера

Деплой (обновление файлов без пересборки)

PASS='motoZ@yaz2010'
docker cp prototype/app.py enduro-trails:/app/app.py
docker cp prototype/static/index.html enduro-trails:/app/static/index.html
docker cp prototype/static/app.js enduro-trails:/app/static/app.js
docker cp prototype/static/app.css enduro-trails:/app/static/app.css
docker restart enduro-trails