diff --git a/tasks/enduro-trails/TECHNICAL_SPEC.md b/tasks/enduro-trails/TECHNICAL_SPEC.md index 9454985..ffa6d0a 100644 --- a/tasks/enduro-trails/TECHNICAL_SPEC.md +++ b/tasks/enduro-trails/TECHNICAL_SPEC.md @@ -51,10 +51,10 @@ | Параметр | Значение | |----------|----------| | **Формат** | OSM PBF | -| **Источник** | `https://download.geofabrik.de/russia/centralfederal.ru-latest.osm.pbf` | -| **Регион** | Центральный ФО | -| **Чувашия** | Проверить Geofabrik — если отдельный дамп, объединить; если включена — ок | -| **BBOX фильтрация** | Если Geofabrik не даёт отдельный ЦФО — фильтруем по bbox: west=30.0, east=45.0, south=51.0, north=59.0 | +| **Источник** | `https://download.geofabrik.de/russia/centralfederal.ru-latest.osm.pbf` + `https://download.geofabrik.de/russia/volga.osm.pbf` | +| **Регион** | Центральный ФО + Чувашия (Приволжский ФО) | +| **Чувашия** | ⚠️ Чувашия входит в Приволжский ФО, не в ЦФО. Скачать `volga.osm.pbf`, объединить с `centralfederal.osm.pbf` через `osmium merge`, затем отфильтровать по BBOX | +| **BBOX фильтрация** | west=30.0, east=48.0, south=51.0, north=59.0 (east расширен до 48.0 чтобы захватить Чувашию) | ### 3.3 Парсинг @@ -111,7 +111,8 @@ CREATE TABLE trails ( tags TEXT, -- JSON с остальными тегами geom GEOMETRY -- LINESTRING, SRID 4326 ); -CREATE INDEX idx_trails_geom ON trails USING GEOMETRY(geom, POLYGON); +-- ⚠️ Spatialite синтаксис (НЕ PostGIS!) +SELECT CreateSpatialIndex('trails', 'geom'); CREATE INDEX idx_trails_highway ON trails(highway_type); CREATE INDEX idx_trails_surface ON trails(surface); ``` @@ -125,7 +126,8 @@ CREATE TABLE poi ( name TEXT, geom GEOMETRY -- POINT, SRID 4326 ); -CREATE INDEX idx_poi_geom ON poi USING GEOMETRY(geom, POLYGON); +-- ⚠️ Spatialite синтаксис (НЕ PostGIS!) +SELECT CreateSpatialIndex('poi', 'geom'); CREATE INDEX idx_poi_type ON poi(poi_type); ``` @@ -135,11 +137,13 @@ CREATE INDEX idx_poi_type ON poi(poi_type); **Уровни:** z10, z11, z12, z13, z14, z15, z16 **Варианты реализации:** -1. **TileServer GL** — готовый сервер, принимает config.json с источником Spatialite -2. **Martin** (Rust) — быстрый тайл-сервер для PostGIS/Spatialite +1. **Spatialite → MBTiles → TileServer GL** — конвертация через `tippecanoe` или `ogr2ogr`, затем TileServer GL отдаёт MBTiles +2. **Martin** (Rust) — быстрый тайл-сервер, поддерживает SQLite/MBTiles напрямую, проще цепочка 3. **Python self-hosted** — FastAPI отдаёт тайлы на лету из Spatialite -**Рекомендация:** TileServer GL или Martin через Docker — минимум кастомного кода +**Рекомендация:** Martin через Docker — поддерживает SQLite напрямую, минимум шагов. + +⚠️ **Важно:** TileServer GL не работает с Spatialite напрямую — нужна конвертация в MBTiles (tippecanoe или ogr2ogr) перед использованием. **Слои тайлов:** | Слой | Источник | Описание | @@ -245,7 +249,7 @@ tasks/enduro-trails/ - **Без рельефа** — SRTM слой в фазе 3 - **Без PWA** — только веб, вёрстка для десктопа - **Один регион** — ЦФО, масштабирование потом -- **Данные статичные** — обновление PBF = перезапуск parase.py +- **Данные статичные** — обновление PBF = перезапуск parse.py - **Без авторизации** — локальный хост, только для Славы пока - **Pyrosm** может потребовать GDAL — если сложно, использовать Osmium