koleo-izochrona/README.md

129 lines
3.2 KiB
Markdown

# 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](https://mkuran.pl/gtfs/) - polish_trains.zip (PKP IC, PolRegio, etc.)
- [Koleje Dolnośląskie GTFS](https://kolejedolnoslaskie.pl/rozklady-gtfs/) - oficjalne dane KD
## 📚 Dokumentacja
- **[README.md](README.md)** - Ten plik, podstawowe informacje
- **[QUICKSTART.md](QUICKSTART.md)** - Szybki start w 3 krokach
- **[TECHNICAL.md](TECHNICAL.md)** - Dokumentacja techniczna i API
- **[UV_GUIDE.md](UV_GUIDE.md)** - Przewodnik po uv (menedżer pakietów)
- **[UV_CHEATSHEET.md](UV_CHEATSHEET.md)** - Ściągawka z komend uv
## Instalacja
### Wymagania:
- Python 3.9+
- [uv](https://docs.astral.sh/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):
```bash
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Lub przez pip
pip install uv
```
### Szybka instalacja (Linux/macOS):
```bash
./setup.sh
```
### Ręczna instalacja:
```bash
# 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:
```bash
uv sync
uv run backend/app.py
```
## Użycie
### Uruchomienie:
**Szybki start:**
```bash
./run.sh
```
**Lub ręcznie:**
```bash
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:
```bash
cd frontend
python3 -m http.server 8000
# Otworz http://localhost:8000
```
### Korzystanie z aplikacji:
1. **Wyszukaj stację** - wpisz nazwę stacji w polu wyszukiwania (np. "Wrocław Główny")
2. **Wybierz przedziały czasowe** - zaznacz checkboxy (30, 60, 90, 120 lub 180 minut)
3. **Kliknij "Oblicz izochrony"** - poczekaj na wygenerowanie mapy
4. **Eksploruj wyniki** - zobacz obszary dostępne w wybranym czasie!
### API Endpoints:
Backend udostępnia REST API:
- `GET /api/health` - status serwera
- `GET /api/stops` - lista wszystkich przystanków
- `GET /api/stops/search?q=nazwa` - wyszukiwanie przystanków
- `POST /api/isochrones` - obliczanie izochron
- `POST /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](https://docs.astral.sh/uv/) - szybki menedżer pakietów (10-100x szybszy niż pip!)
> 💡 **Dlaczego uv?** Zobacz [UV_GUIDE.md](UV_GUIDE.md) aby dowiedzieć się więcej o uv i jak go używać.