2.8 KiB
2.8 KiB
Архитектура Enduro Trails
Обзор
Веб-приложение для планирования эндуро-маршрутов с визуализацией рельефа.
Компоненты
- Frontend — MapLibre GL JS, vanilla JS (ES modules)
- Backend API — FastAPI (Python 3.12), uvicorn
- Tile Server — статические raster tiles (PNG), раздаются через FastAPI/nginx
- Routing Engine — OSRM с кастомным эндуро-профилем
- Database — SQLite + Spatialite (точки интереса, маршруты)
Слои карты
- Base map: Схема (OpenStreetMap raster) либо Спутник (Esri World Imagery raster) — переключается в UI (ET-007 / ADR-004)
- Hillshade (рельеф с тенями)
- TRI (Terrain Ruggedness Index — сложность рельефа)
- Hypsometric (высотная раскраска)
- Trails (маршруты из OSM)
Внешние тайл-провайдеры
Клиент (браузер) обращается напрямую к двум внешним raster-tile сервисам. Сервер mva154 эти тайлы не проксирует и не кэширует.
| Провайдер | Назначение | URL | Активация | API-ключ |
|---|---|---|---|---|
| OpenStreetMap | Базовый слой «Схема» | https://tile.openstreetmap.org/{z}/{x}/{y}.png |
всегда (default подложка) | нет |
| Esri World Imagery | Базовый слой «Спутник» | https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x} |
лениво — только при включении «Спутник» пользователем (ET-007) | нет |
Атрибуция обоих провайдеров выводится MapLibre автоматически при активном source.
Деплой
Один Docker Compose на mva154. Nginx проксирует /enduro/ на контейнер.
Клиентские модули (src/web/)
| Модуль | Описание | Work Item |
|---|---|---|
app.js |
Главный модуль: MapLibre, роутинг, UI, тёмная тема | PH-1..PH-6 |
units.js |
Централизованный форматтер расстояний (км/мили), localStorage, событие unitchange |
ET-005 |
gpx.js |
GPX 1.1 парсер (DOMParser), рендеринг треков/waypoints, canvas-профиль высот, rebuildMapOverlays() |
ET-006 |
style.json |
MapLibre стиль (светлая тема) | PH-1/PH-5 |
style-dark.json |
MapLibre стиль (тёмная тема) | PH-5 |