Nahmd,
Falsch.
Ich sperre alle Variationen in eine Relation. Der 576 hat zwei Relation - eine für stadteinwärts, und eine für stadtauswärts. (Übrigens schade, dass wir in Deutschland noch nicht einmal einen Namen für dieses Merkmal haben – in Japan hat jeder Bus neben der Linie das Zeichen für “Aufwärts” oder für “Abwärts” stehen). Und weil eine Haltestelle normalerweise nur von der stadtau oder von der stadtein-Linie berührt wird (es gibt da seltene Ausnahmen - der 576 hat eine Haltestelle, die er in beiden Richtungen anfährt), taucht an jeder Haltestelle jede Linie einmal auf.
Wenn an einer Haltestelle 10 Linien vorbeikommen, ist die natürlich an 10 Relationen beteiligt - das ist ok und auch jedem Bearbeiter sofort einsichtig: der 510 hält hier - also ist diese Haltestelle in der 510-Relation.
Nun laufen alle (ungefähr 15 je Richtung) Variationen des 576 auf den ersten Dutzend Haltestellen parallel. Würde ich je Variation eine eigene Relation einführen, wäre jede dieser Haltestellen in jeder dieser 15 Relationen - also in der Relation “576V1”, in der Relation “576V2” usw. – und das für jede Linie. Und Mitgliedschaft in 100 Relationen finde ich minderspaßig.
Aus diesem Grund hab ich ja gegrübelt, wie man alle Alternativen unter einen Hut bringt, und bin dabei auf die Lösung mit den Segmente und den Kursen definiert als Folge von Segmenten gestoßen. Da ich aber die Segmentzugehörigkeit nur in der “role” angeben kann ……… den Rest hatten wir schon.
Nein. Weil ich eben NICHT für jede Variation eine Relation einführe.
Nein. Weil ich eben NICHT für jede Variation eine Relation einführe.
Nein. Weil ich eben NICHT für jede Variation eine Relation einführe.
Das Oxomoa-Schema ist von der Realität überfordert und muss erweitert werden.
Wenn irgendwelche Nasen nicht in der Lage sind, eine Zeile (das muss man wohl gross schreiben: EINE EINZIGE ZEILE) Code in eine Software einzufügen und die Weiterentwicklung eines ganzen Themenbereiches dadurch blockiert wird, ist auch das minderspaßig.
Bevor das segmentierte Tagging-Schema verurteilt wird, SCHAUT ES EUCH DOCH BITTE ERST EINMAL AN!
Also hier eine Anleitung :
(1) Druck Dir den Fahrplan aus: http://www.netzwolf.info/kartografie/osm/bus_und_bahn/fahrplan?relid=403521
Du siehst links die Haltestellennamen, dann die Fahrten, und rechts die IBNR verlinkt mit der Abfahrtstafel der DB und der Node-Id verlinkt mit JOSM-Remote, sowie das zugeordnete Segment und die Position im Segment. Nimm eine Stift und mal überall da eine Linie quer über das Papier, an der rechts der Segmentbuchstabe wechselt.
(2) Unter dem Fahrplan ist die zugehörige Relation bei OSM verlinkt, lade die in den Browser und druck sie am besten aus. Kein Panik wegen der “kurs:”-Attribute, die erkläre ich später.
(3) Schau Dir im Fahrplan die Fahrten an: die überspringen Haltestellen und enden auch früher. Du siehst aber auch, dass die Fahrten nur an Segmentegrenzen beginnen oder enden und Segmentgrenzen auch nur da sind, wo eine Fahrt endet oder beginnt → die Anzahl der Segmente ist minimal.
(4) Wähle eine Fahrt aus und färbe die mit einem Markerstift ein. Schau Dir an, welche Segmente diese Fahrt durchläuft und schreibe die Segmentkennungen (=1 Buchstabe nebeneinander). Ich nehme als Beispiel die 13:20 (S=nur an Schultagen). Die läuft über “a”, überspringt b, läuft über “c” und “d”, springt wieder und läuft dann über “h”. Das ist also die Variante “acdh”. Jede Variante ist eindeutig durch eine solche Buchstabenfolge gekennzeichnet.
(5) Jetzt guck Dir die “kurs*”-Attribute der Relation an: die Werte beginnen alle mit einer von Zahlen unterbrochenen Buchstabenfolge. Die Buchstaben geben die Variante an. Du wirst sehen, dass es die gleiche Buchstabenfolge mit unterschiedlichen eingefügten Zahlen gibt – das sind Untervarianten mit unterschiedlichem Timing. Wenn man das Timing mit berücksichtigt, hat man 28(!) verschiedene Untervarianten. Die Zahlen werden für die Zeiten im Fahrplan gebraucht – wenn Du nur wissen willst OB Du irgendwohin kommst und nicht wann, brauchst Du die nicht.
(6) Jetzt geht es auf die Suche nach dem richtigen Kurseintrag (Hinweis noch: die Kursnamen nach dem kurs: sind willkürlich gewählt): und siehe da wir finden nur den Kurs GH1.
Ich hoffe, dass die Struktur damit klar ist. Aber es geht weiter:
(7) Wenn Du den Ausdruck des Fahrplans (erste, vorletzte und letzte Spalte) und der Relation nebeneinander legst, verstehst Du wahrscheinlich sofort die Bedeutung der Rollennamen an den Haltestellen-Nodes.
(8) Wenn Du den Zeitabstand zwischen zwei Haltestellen aus dem gleichen Segment im Fahrplan (z.B. gleich Siegburg-Bahnhof (a0000) und Markt (a0003) anschaust, verstehst Du die Bedeutung der Zahl nach der Segmentangabe, als 0 und 3.
(9) Der 13:20er fährt durch die Segmente a-c-d-h. Im Kurs steht “a23c……”. Jetzt schau Dir die Zeit an der ersten Haltestelle von Segment a und der ersten Haltestelle in Segment c an…
Das als kurze Einführung. BTW: Der Trivialfall von einer Variante mit fixem Timing ist natürlich enthalten: dann hat man nur das Segment a, und die Zahlen nach dem “a” in den Haltestellen-Roles geben die relative Zeit seit Beginn der Fahrt an. Hat man nur ein Segment, braucht es den Kennbuchstaben nicht. Braucht man die relativen Zeiten nicht oder will sie nicht erfassen, kann man da auch 1…N vergeben… und siehe da, wir haben die “stop_I”-Notation
(10) Noch eine kurze Anmerkung zu den Zahlenfolgen in den Kursen nach der wem ersten Wort, das die Segmente auflistet: das ist eine sehr kompakte Darstellung der Abfahrtszeiten: HHMM Abfahrt zu diesem Zeitpunkt an Tagen des Typs “x” (kein x=täglich, w=Werktag, a=Samstag, u=Sonntag, s=Schultag, h=Ferientag); HHMM-hhmm/HMM Abfahrten zwischen HHMM und hhmm im Abstand HMM an Tagen des Typs “x”. Das war aber nur eine Spielerei von mir – das könnte man nur dann pflegen, wenn man die Daten in einer maschinell lesbaren Form bekäme und per Robot einspielte – händisch ist das illusorisch. Und natürlich würde ich sie dann als “service_times” einpflegen.
Was sichtbar geworden sein sollte:
bunte Striche in die Karte malen ist eine vergleichsweise einfache Übung (http://www.netzwolf.info/kartografie/openlayers/network?id=411879). Der nächste Schritt ist ein großer. Sogar ein sehr großer.
ÖPNV ist nicht trivial.
Ich danke fürs Zuhören.
Wolf