26 lines
1.8 KiB
Markdown
26 lines
1.8 KiB
Markdown
# GNSS Backend (FastAPI + WebSocket)
|
||
|
||
## Установка
|
||
- Убедитесь, что установлен Python 3.11+ и Poetry.
|
||
- Выполните `poetry install` (ставит зависимости и проект как пакет `gnss`).
|
||
|
||
## Запуск
|
||
- `poetry run uvicorn gnss.main:app --host 0.0.0.0 --port 8000`
|
||
- Тайлы ожидаются по пути `gnss/tiles/{zoom}/{x}/{y}.png` (можно положить заглушку `placeholder.png` в эту же директорию).
|
||
- API для нарезки: `POST /tiles/slice` с JSON `{ "source": "/path/input.tif", "destination": "/path/to/tiles", "min_zoom": 10, "max_zoom": 16 }`.
|
||
|
||
## Нарезка тайлов (GDAL)
|
||
- Требуется установленный `gdal2tiles` (например, пакет `gdal-bin` в apt).
|
||
- Нарезка через API `POST /tiles/slice` или вызов сервиса `TileService.slice_to_tiles` (внутри backend).
|
||
- Поддерживаются входы, которые понимает GDAL (GeoTIFF, JPEG, MBTiles и др.). Нарезка идёт в профиле Web Mercator (XYZ) по умолчанию.
|
||
|
||
## Фронтенд
|
||
- В `frontend` лежит Tauri/React приложение для проверки бекенда (карта Leaflet, WebSocket трек, форма для запуска нарезки тайлов).
|
||
- Запуск: `cd frontend && pnpm install && pnpm dev` (или `pnpm tauri dev` при установленном Rust/Tauri). Бекенд должен слушать `http://localhost:8000`.
|
||
|
||
## Ключевые зависимости
|
||
- fastapi — REST и WebSocket
|
||
- uvicorn[standard] — ASGI-сервер
|
||
- pyserial — чтение GNSS по последовательному порту
|
||
- pynmea2 — парсинг NMEA
|
||
- python-dateutil — работа с временем/таймзонами
|