GTFS route map generator with a modern graphical interface and GIS support.
- Architecture: ARCHITECTURE.md
- Contributing: CONTRIBUTING.md
If you just want to run the app without installing Python:
- Go to the Releases tab of this repository.
- Download the latest
.exefile at the bottom of the page in the "Assets" section. - Run the file directly! (If Windows blocks it, see this guide).
- Granular Zoom (0.1): Precise zoom adjustment for perfect framing, smooth and without jerky jumps.
- Smart Multi-Selection: Select multiple layers with Ctrl + Click or a full line (all directions) with Shift + Click.
- Batch Styling: Change color and thickness of multiple selected layers simultaneously.
- Smart Legend: Automatic unification by color to simplify visualization.
- Individual Layer Removal via button (✕).
- Clean screenshots (automatically hides zoom buttons).
- High-Quality Export: DPI control for sharp images and PDFs.
- Professional Export: Save selected routes in SVG (Vector), KML (Google Earth), GeoPackage (.gpkg), and Shapefile (.shp) formats.
- Python 3.9+
- CustomTkinter
- TkinterMapView
- Ensure you have Python 3.10+ installed.
- Install dependencies:
pip install -r requirements.txt pip install -r requirements-dev.txt
- Run the application:
python src/app.py
The project includes a GUI-enabled container using Xvfb + VNC + noVNC.
- Build and start the container:
docker compose up --build
- Open the app in your browser:
- Optional direct VNC access:
- Host:
localhost - Port:
5901
- Host:
Notes:
- The
map_tiles_cachefolder is mounted as a volume to preserve tile cache. - The Docker runtime is intended for development and demo usage.
To create a single .exe file for Windows:
- Install PyInstaller:
pip install pyinstaller
- Build using the provided script:
Or run PyInstaller directly:
.\scripts\build_exe.ps1 -Cleanpyinstaller app.spec
- The final file will be in the
dist/folder.
src/: Source code.app.py: Main app orchestrator.processor.py: GTFS processing engine.controllers/: UI action orchestration (map + GTFS flow).services/: Domain rules (layers, zoom, exports).ui/: UI building module.utils/renderer.py: Rendering helpers.
tests/: Automated tests (pytest).map_tiles_cache/: Offline map cache.