|
|
||
|---|---|---|
| backend | ||
| examples | ||
| frontend | ||
| .gitignore | ||
| .python-version | ||
| QUICKSTART.md | ||
| README.md | ||
| TECHNICAL.md | ||
| UV_CHEATSHEET.md | ||
| UV_GUIDE.md | ||
| docker-compose.yml | ||
| nginx.conf | ||
| pyproject.toml | ||
| run.sh | ||
| setup.sh | ||
README.md
Izochrona - Mapa izochron dla połączeń kolejowych w Polsce
Interaktywna mapa pokazująca izochrony (obszary dostępne w określonym czasie) dla połączeń kolejowych PKP Intercity i Kolei Dolnośląskich.
Funkcjonalności
- Wyświetlanie izochron dla wybranej stacji początkowej
- Obliczanie czasów podróży na podstawie rzeczywistych rozkładów jazdy
- Interaktywna mapa z Leaflet
- Obsługa danych GTFS od polskich przewoźników
Struktura projektu
backend/ - Serwer Python (Flask) i logika obliczania izochron
frontend/ - Mapa interaktywna (HTML + Leaflet)
data/ - Dane GTFS (nie wrzucane do repozytorium)
Źródła danych
- mkuran.pl/gtfs - polish_trains.zip (PKP IC, PolRegio, etc.)
- Koleje Dolnośląskie GTFS - oficjalne dane KD
📚 Dokumentacja
- README.md - Ten plik, podstawowe informacje
- QUICKSTART.md - Szybki start w 3 krokach
- TECHNICAL.md - Dokumentacja techniczna i API
- UV_GUIDE.md - Przewodnik po uv (menedżer pakietów)
- UV_CHEATSHEET.md - Ściągawka z komend uv
Instalacja
Wymagania:
- Python 3.9+
- uv - szybki menedżer pakietów Pythona
- Przeglądarka internetowa (Chrome, Firefox, Safari)
- ~500MB wolnego miejsca na dysku (dane GTFS)
Instalacja uv (jeśli nie masz):
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Lub przez pip
pip install uv
Szybka instalacja (Linux/macOS):
./setup.sh
Ręczna instalacja:
# 1. Backend
cd backend
uv venv
uv pip install -r requirements.txt
# 2. Pobierz dane GTFS
uv run download_gtfs.py
# 3. Uruchom serwer
uv run app.py
Alternatywnie z pyproject.toml:
uv sync
uv run backend/app.py
Użycie
Uruchomienie:
Szybki start:
./run.sh
Lub ręcznie:
cd backend
source venv/bin/activate
python app.py
Następnie otwórz frontend/index.html w przeglądarce lub użyj prostego serwera HTTP:
cd frontend
python3 -m http.server 8000
# Otworz http://localhost:8000
Korzystanie z aplikacji:
- Wyszukaj stację - wpisz nazwę stacji w polu wyszukiwania (np. "Wrocław Główny")
- Wybierz przedziały czasowe - zaznacz checkboxy (30, 60, 90, 120 lub 180 minut)
- Kliknij "Oblicz izochrony" - poczekaj na wygenerowanie mapy
- Eksploruj wyniki - zobacz obszary dostępne w wybranym czasie!
API Endpoints:
Backend udostępnia REST API:
GET /api/health- status serweraGET /api/stops- lista wszystkich przystankówGET /api/stops/search?q=nazwa- wyszukiwanie przystankówPOST /api/isochrones- obliczanie izochronPOST /api/reachable- lista osiągalnych przystanków
Technologie
- Backend: Python 3.9+, Flask, gtfs-kit, NetworkX, GeoPandas
- Frontend: Leaflet, OpenStreetMap, vanilla JavaScript
- Dane: GTFS (General Transit Feed Specification)
- Narzędzia: uv - szybki menedżer pakietów (10-100x szybszy niż pip!)
💡 Dlaczego uv? Zobacz UV_GUIDE.md aby dowiedzieć się więcej o uv i jak go używać.