Extend stops to DACH-region
Deploy PBT / deploy (push) Failing after 2m53s

This commit is contained in:
2026-09-12 07:06:29 +02:00
parent 039e2905dd
commit a52e233c31
9 changed files with 204 additions and 139 deletions
+27 -10
View File
@@ -20,15 +20,18 @@ Beim ersten Start legt die App die Tabellen (`users`, `trips`, `stops`) automati
## Haltestellen-Lookup
Die Felder „Von" und „Nach" haben eine Autovervollständigung aus allen
österreichischen Haltestellen. Die Daten stammen aus OpenStreetMap
(© OpenStreetMap-Mitwirkende, ODbL) und liegen als Snapshot im Repo
(`data/stops_at.csv.gz`, ~37 000 Haltestellen).
Die Felder „Von" und „Nach" haben eine Autovervollständigung aus den
Haltestellen in Österreich, Deutschland und der Schweiz (DACH) aktuell
**306 954 Haltestellen** (DE 243 278, AT 37 454, CH 26 222). Die Daten stammen
aus OpenStreetMap (© OpenStreetMap-Mitwirkende, ODbL) und liegen als Snapshot
im Repo (`data/stops_dach.csv.gz`, ~7,5 MB gepackt).
Zusätzlich ist pro Haltestelle die Menge der Linien hinterlegt (aus den
OSM-`route`-Relationen, ~87 % der Halte). Das Feld „Linie" schlägt daraus die
Linien vor, die an den gewählten Halten verkehren, und füllt sich selbst aus,
wenn nur eine Linie in Frage kommt. Freitext bleibt immer möglich.
OSM-`route`-Relationen). Das Feld „Linie" schlägt daraus die Linien vor, die
an den gewählten Halten verkehren, und füllt sich selbst aus, wenn nur eine
Linie in Frage kommt. Freitext bleibt immer möglich. Da mehrere Länder
gleichnamige Haltestellen haben können (mehrere „Hauptbahnhof"), zeigt die
Vorschlagsliste zusätzlich das Land.
Nach dem Anlegen der Tabellen den Snapshot in die DB laden:
@@ -40,14 +43,28 @@ Der Import ist idempotent (Upsert) und braucht kein Internet. Im Produktivbetrie
übernimmt das die Unit `pbt-import-stops.service` (wird bei jedem Deploy
angestoßen, s. u.).
Snapshot neu von OpenStreetMap holen (Halte + Linien, ~5 min, braucht Netzugang
und ~1 GB RAM):
### Snapshot aktualisieren
Bei dieser Größenordnung (AT+DE+CH) geht sich das nicht mehr über die
öffentliche Overpass-API aus schon eine reine Zählabfrage für Deutschland
oder auch nur die Schweiz läuft dort in den Timeout. Stattdessen lädt
`fetch_stops.py` die offiziellen Geofabrik-Extrakte pro Land herunter
(`data/.osm-cache/`, nicht committed, ~6 GB) und wertet sie lokal mit
`pyosmium` aus keine Last auf einer geteilten API.
```bash
python scripts/fetch_stops.py # überschreibt data/stops_at.csv.gz
pip install osmium # einmalig, nur für dieses Script
python scripts/fetch_stops.py # überschreibt data/stops_dach.csv.gz
flask import-stops
```
Braucht Netzugang zum Download, ein paar GB RAM und in der Praxis eher
11,5 Stunden als die 5 Minuten von früher (der Großteil davon ist
Deutschland Österreich allein dauert ca. 11 Minuten). Bereits
heruntergeladene Extrakte werden für spätere Läufe wiederverwendet, solange
sie in `data/.osm-cache/` liegen (~6 GB, `rm -rf data/.osm-cache/` gibt den
Platz wieder frei).
## Kartenvorschau (optional, standardmäßig aus)
Trip-Formular und „Meine Fahrten" können eine kleine Leaflet/OSM-Karte mit den