116 lines
6.5 KiB
Markdown
116 lines
6.5 KiB
Markdown
# Enduro Trails 🏍️
|
||
|
||
> OSM-карта с фокусом на грунтовые дороги для построения красивых эндуро-маршрутов
|
||
|
||
**Статус:** active (прототип задеплоен)
|
||
**Старт:** 2026-05-02
|
||
**Автор:** Слава
|
||
|
||
---
|
||
|
||
## Концепция
|
||
|
||
Обычные карты оптимизированы под автомобили — асфальт яркий, грунтовки не видны. Enduro Trails переворачивает эту логику: **грунтовки/тропы — главный слой**, асфальт — тусклый фон. Плюс фичи для поиска и построения красивых маршрутов (минимум асфальта, максимум красоты).
|
||
|
||
## Ключевые фичи
|
||
|
||
| Фича | Описание |
|
||
|------|----------|
|
||
| 🛤️ **"Дикий путь"** | Роутинг А→Б с максимизацией грунтовок |
|
||
| 🎨 **"Красивый маршрут"** | Замкнутый круг через водоёмы, виды, заброшки |
|
||
| 🏔️ **"Горка"** | Макс набор высоты, мин дистанция |
|
||
| 🔗 **"Связка"** | Соединить два трека грунтовками |
|
||
| 📍 **"Разведка"** | Грунтовки вокруг точки |
|
||
| 🚧 **"Препятствия"** | Броды, шлагбаумы, болота, ЛЭП |
|
||
| 🌐 **"Народные треки"** | Сбор и отображение треков с внешних сервисов |
|
||
| 🔍 **"Поиск"** | Поиск населённых пунктов, адресов и объектов как на обычных картах |
|
||
| 🌙 **"День/ночь"** | Переключатель темы — светлая/тёмная карта |
|
||
| 🎨 **"Эндуро-дизайн"** | Современный агрессивный UI в духе эндуро/оффроад |
|
||
| 📏 **"Линейка"** | Измерение расстояния между точками на карте |
|
||
| 🚩 **"Флажки/метки"** | Расстановка именованных меток на карте |
|
||
| 🗺️ **"Умный маршрут"** | Промежуточные точки, расстояние между ними, % асфальт/грунт/тропа |
|
||
|
||
## Регионы
|
||
|
||
1. **ЦФО + Чувашия** (первый регион, прототип)
|
||
2. Расширение на новые ФО по запросу
|
||
|
||
## План
|
||
|
||
Прототип (mva154) → проверка концепта → новая VM с PostGIS + OSRM → масштабируемая платформа
|
||
|
||
## Архитектура
|
||
|
||
Схема: `../../enduro_architecture.png`
|
||
Концепт: [CONCEPT.md](CONCEPT.md)
|
||
|
||
### Стек
|
||
|
||
- Pyrosm/Osmium → парсинг PBF
|
||
- Spatialite/PostGIS → хранение
|
||
- OSRM (кастомный профиль) → роутинг
|
||
- FastAPI → бэкенд
|
||
- MapLibre GL JS → фронт (веб + PWA)
|
||
|
||
## Хостинг
|
||
|
||
- **Прототип:** `slin@82.22.50.71`, контейнер `prototype-enduro-trails-1`, порт `5558`
|
||
- **URL:** `https://openclaw.mva154.duckdns.org/enduro/`
|
||
- **Продакшен:** новая VM (4 vCPU, 8 GB RAM, 50 GB диск)
|
||
|
||
## Текущее состояние (2026-05-03)
|
||
|
||
- ✅ Прототип задеплоен: `https://openclaw.mva154.duckdns.org/enduro/`
|
||
- ✅ БД: 1 141 926 треков, 14 882 POI (Spatialite)
|
||
- ✅ Векторные тайлы (MVT) через FastAPI, 4 uvicorn workers
|
||
- ✅ LRU-кэш тайлов (512 тайлов в памяти)
|
||
- ✅ Упрощение геометрии по зуму (Shapely simplify)
|
||
- ✅ Фильтр треков по длине на низких зумах (z8: ≥500м, z9: ≥200м)
|
||
- ✅ Dockerfile — быстрый старт контейнера без apt/pip при рестарте
|
||
- ✅ Nginx `/enduro/` с HTTPS через `openclaw.mva154.duckdns.org`
|
||
- ✅ Фронт: MapLibre GL JS, легенда (Lev1-2 / Lev3-5 / Тропа)
|
||
- ✅ Тропы — красный пунктир, асфальт скрыт
|
||
- ✅ Кнопки: 🧭 компас (север/свободный), 📍 геолокация с маркером
|
||
- ✅ Попапы с name, surface, tracktype, length_m, mtb_scale
|
||
|
||
## План развития
|
||
|
||
| Фаза | Что | Статус |
|
||
|------|-----|--------|
|
||
| Фаза 1 | Прототип — визуализация OSM треков | ✅ Готово |
|
||
| Фаза 2 | OSRM роутинг + "Дикий путь" | 🔄 В работе |
|
||
| Фаза 3 | SRTM рельеф + уклоны + "Горка" | ⏳ Планируется |
|
||
| Фаза 4 | "Красивый маршрут", "Связка", "Разведка" | ⏳ Планируется |
|
||
| Фаза 5 | PWA + оффлайн | ⏳ Планируется |
|
||
| Фаза 6 | Народные треки — сбор с внешних сервисов | ⏳ Планируется |
|
||
|
||
### Фаза 6: Народные треки (детали)
|
||
|
||
Источники для сбора:
|
||
- **OSM Traces** — публичные GPS-треки загруженные в OSM, бесплатно, API открытый
|
||
- **Wikiloc** — огромная база треков эндуристов/велосипедистов/туристов, есть API
|
||
- **Komoot** — активно используется эндуристами и велотуристами
|
||
- **Strava** — велосипедисты, бегуны (API платный для массового сбора)
|
||
- **4x4travel.ru** — джипперы, форум с GPX-файлами
|
||
- **Enduroad.ru** — эндуро-сообщество
|
||
- **Garmin Connect** — публичные активности
|
||
|
||
Реализация:
|
||
- Сборщик треков → конвертация в GeoJSON → отдельная таблица `community_tracks` в БД
|
||
- Отдельный слой на карте "Народные треки" (другой цвет, можно вкл/выкл)
|
||
- Фильтрация по типу активности: мото / велосипед / джип / пеший
|
||
- Атрибуты: источник, автор, дата, рейтинг, тип активности
|
||
|
||
| Компонент | Объём |
|
||
|-----------|--------|
|
||
| PBF (регион) | ~150-200 MB |
|
||
| Spatialite/PostGIS | ~500 MB - 1 GB |
|
||
| OSRM граф | ~1-3 GB |
|
||
| SRTM DEM | ~2-3 GB |
|
||
| Тайлы (z10-16) | ~2-5 GB |
|
||
| **Итого** | **~5-12 GB** |
|
||
|
||
---
|
||
|
||
*Ссылка на онтологию: `proj_enduro_trails`*
|