Ideen zur kompakten Speicherung des Fahrplanes von Bus- und Bahnlinien

Diese Ideen bauen auf dem ÖPNV-Schema auf.

Die Strecke wird in Segmente aufgeteilt.

Ein Segment ist ein Teilstück, das

Die Strecke wird in Segmente aufgeteilt, die mit "a" bis "z" benannt werden.

  1. "Segmente" sind zusammenhängende Linienzüge OHNE Verzweigungen, die haben also genau zwei Enden. Sie können aber insbesondere auch nur aus einem Punkt bestehen, dann fallen die beiden Enden zusammen.

    → Bewegung eindeutig, fange ich an einem Ende an, komme ich am anderen raus

  2. Ein OSM-Way darf bei einer Route maximal einmal vorwärts und einmal rückwärts in einer Route vorkommen.

    → Bin ich auf einem Way in einer bestimmten Richtung unterwegs, ist eindeutig in welchem Segment und wo ich da unterwegs bin.

Als Rolle trage ich für die Ways "s:[Segmentname]" ein.

Haltestellen sind einem Segment und einer relativen Zeit zugeordnet. Die Konten werden mit der Rolle "t:[Segmentname]:Offsetzeit" aufgenommen.

Prinzipiell kann eine Haltestelle nur in genau einem Segment auftauchen. Debei enthält die Haltestelle auch immer eine Richtung. Da aber häufig in der Karte die zwei Haltestellen für zwei Richtungen nur mit einem Punkt dargestellt werden, ist diese Regel etwas aufgeweicht: ein Haltestelle darf "je Richtung" zweimal vormommen.

Wobei mittlerweilen beim Erfassen von Haltestellen immer zwei Punkte setze für die beiden Richtungen.

In einem Segment kann jede Offsetminute nur einmal vergeben werden (wenn im Originalfahrplan zwei Haltestellen die gleiche Zeit haben, verschiebe ich alle ab der zweiten, bis auch auf einen Abstand ≥2 Minuten stoße und den um 1 erniedrige, dann stimmts ab da wieder.

Natürlich sollen beim Durchfahren eines Segmentes die Haltestellen in aufsteigender Zeit durchfahren werden.

Weiter zu beachten:

  • es gibt Haltestellen ohne Weg
  • es gibt Segmente ohne Haltestelle
  • Kreisverkehre und Flächen werden mit "s:*" zu einem Punkt implodiert.

Fahrten:

Die Zeichenfolge a10b12d15d14e bedeutet:

  • Beginne bei Start+0min bei der ersten Haltestelle von Segment a.
  • Sei bei Start+10min bei der ersten von Segment b
  • Sei von Start+12 bis Start+15 bei der Haltestelle in Segment "d" (dieses Segment kann keine Strecke und nur eine Hst enthalten)
  • Sei bei Start+14 bei der ersten Haltestelle von Segment "e"

Weiterhin gilt: Das erste Segment einer Fahrt muß immer eine Haltestelle am Anfang haben. Das letzte Segment einer Fahrt muss immer eine Haltestelle am Ende haben.

Bei der Reihenfolge der Buchstabenvergabe zu beachten: die Segmente so benamsen, dass weitgehend aufsteigend die Segmente durchfahren werden. Rücksprünge in der Benamsung sind unvermeidbar, wenn ein Segment zweimal durchlaufen wird. Im Fahrplan wird der Segmentkennung keine Zahl vorangestellt. Wenn bei einer Fahrt die Segmentbenamsung einen Schritt rückwärts macht, wird diese Zahl um eins erhöht, und die Haltestelle taucht im Fahrplan zweimal auf. Wenn man die Segmente ungünstig benamst, kann das dazu führen, dass eine Haltestelle häufiger als nötig im Fahrplan auftaucht. Die Korrektheit leidet nicht, wohl aber die Übersichtlichkeit.

Zeiten

HHMMc ist Stunde/Minute und Tagescode. Dabei zu beachten: Stunden laufen von 23 weiter bis ca. 28.

Tagescodes zur Zeit:

  • [w]eekday (=Mo-Fr)
  • s[a]turday
  • s[u]nday
  • [s]choolday
  • [h]oliday
  • [f]riday
  • a[l]ways

Wiederholungen werden abgekürzt zu HHMM-HHMM/(H)MM"
"Alle 90 min" kann man als "/90" oder "/130" schreiben.

ACHTUNG bei dem Ganzen: ich strebe keine 100% Übereinstimmung mit dem echten Fahrplan an. Die Verkehrsgesellschaften verschieben über den Tag hin die Zeiten um signifikante Minutenbeträge vor und zurück, um der Verkehrsdichte Genüge zu tun. Das ignoriere ich teilweise.

Bei mir ist korrekt jeweils die Zeit an der ersten Haltestelle eines Segmentes. Die Zeiten aller weiteren Haltestellen des Segments sind möglicherweise zu früh (aber nie zu spät). Denn ich fahre ich mit der schnellsten gefundenen Geschwindigkeit durch jedes Segment.

Da will ich mir noch was schlaueres einfallen lassen, dass an allen wichtigen (=Umsteige-)Haltestellen die Zeit korrekt ist, und dass nicht zwischen der letzten Haltestelle eines Segmentes und der ersten des nächsten ein möglicherweise großes Zeitloch sich auftut.

Bei den Kurstags "kurs:XXX" ist das XXX völlig ohne Bedeutung (taucht nur in Fehlermeldungen auf)