User:Netzwolf/Konzept Haltestellen-IDs
Vorbemerkung
Eine Verknüpfung der OSM-Kartendaten und einer Fahrplanauskunft ist nützlich:
- Ein direkter Link von einer Karte zur Fahrplanauskunft bietet die Möglichkeit, direkt festzustellen, wie man mit Bus und Bahn zu einem Ort kommt.
- Eine Karte ist eine hilfreiche Erweiterung zur Fahrplanauskunft:
- um eine nahegelegene Haltestelle zu finden,
- um Haltestellen entlang einer Wanderroute zu finden,
- für ein integriertes Fußgänger-ÖPNV-Routing.
Hintergrund: ich möchte eine Web-Fahrplanauskunft wiederbeleben, die ich vor vielen Jahren entwickelt habe. Dazu habe ich bereits Haltestellen mit "ref"-Attributen versehen und will vermeiden, daß diese aus Unkenntnis entfernt werden.
Ich liste zuerst meine Überlegungen auf und dann das Ergebnis, zu dem die Überlegungen geführt haben.
Randbedingungen
Die Haltestellen im Fahrplan und in den Kartendaten werden über eine gemeinsame ID einander zugeordnet. Die ID soll innerhalb der OSM-Daten im "ref"-Attribut gespeichert werden. Ich sehe folgende Randbedingungen:
- Fahrplan und Karte werden unabhängig voneinander dezentral entwickelt.
- Permanente IDs
- Menschenlesbare IDs
- Einfache Regeln
Fahrplan und Karte werden unabhängig voneinander dezentral entwickelt
Es kann Haltestellen in der Karte geben ohne zugeordneten Fahrplan, und ein Fahrplan kann Haltestellen enthalten, die noch nicht in der Karte erfaßt sind.
Fahrplaneingeber und Kartenbearbeiter erfassen unabhängig voneinander neue Haltestellen. Die dabei vergebenen IDs sollen mit einer sehr großen Wahrscheinlichkeit zusammen passen.
Anders als die großen Konsolidierer arbeiten wir dezentral und nicht zentral. Dennoch müssen wir Konflikte vermeiden. Das fordert ein hierarchisches System.
Wir brauchen einfache klare Regeln, die dazu führen, daß auch bei dezentraler Bearbeitung unterschiedliche Haltestellen auch unterschiedliche IDs bekommen und (in den meisten Fällen) die ID einer Haltestelle eindeutig ist, also auch von unterschiedlichen (dezentral arbeitenden) Bearbeitern gleich bestimmt wird.
Permanente IDs
Ich will Fahrplaninformationen als Antwort auf GET-Requests ausliefern, wobei die Parameter der Anfrage in der URL auftauchem:
- http://timetable.example.com/haltestellenplan/HSTID
- http://timetable.example.com/verbindung/VONID/NACHID
Damit ich ein Bookmark auf eine häufig genutzte Verbindung setzen kann, brauche ich langfristig gültige URLs. Und dazu müssen auch die Haltestellen-IDs langfristig gültig sein.
Menschenlesbare IDs
Wenn die IDs menschenlesbar ist und einen Bezug zur Realität hat, können sie während der normalen Bearbeitung auf Konsistenz geprüft werden. Das senkt die Fehlerrate und erhöht die Qualität des Datenbestandes.
Fortlaufende abstrakte Nummern haben diesen Vorteil nicht. Sie sind bei dezentraler Erfassung ohnehin problematisch.
Einfache Regeln
Die OSM Grundregel #2 lautet: "Spaß haben". Hier:
- Die Regeln sollen einfach sein und den Bearbeiter nicht belasten.
- Es sollen ausschließlich überall frei verfügbare externe Kataloge benutzt werden.
Ungeeignete IDs
Folgende IDs eignen sich nicht:
- Die Objekt-ID aus der OSM-Datenbank ist ungeeignet.
- Die IDs der kommerziellen Anbieter sind ungeeignet
Die Objekt-ID aus der OSM-Datenbank ist ungeeignet.
In der OSM-Datenbank hat jeder Punkt eine Nummer (Objekt-ID). Diese ist aus mehreren Gründe ungeeignet:
- eine Haltestelle kann mehrere Punkte umfassen
- die Nummer ändert sich bei einem Löschen und Neuanlegen
- eine Haltestelle kann auf einen neuen Punkt verlegt werden
- die Erfassung für den Fahrplan soll unabhängig von der OSM-Datenbank erfolgen.
Die IDs der kommerziellen Anbieter sind ungeeignet.
Fahrpläne werden dezentral von Verkehrsbetrieben erstellt: jeder Verkehrsbetrieb nummeriert in irgendeiner Form seine Haltestellen durch. Die Anbieter von Fahrplanauskunftsystemen (Hafas, Efa, Ass, ...) konsolidieren die Lieferungen der Verkehrsbetriebe und ordnen den Haltestellen IDs zu.
Leider jeder für sich: es gibt keine Beziehung zwischen den Haltestellen-IDs bei verschiedenen Anbietern. Die IDs ändert sich außerdem möglicherweise bei einer erneuten Konsolidierung.
- Das ist ohnehin dämlich, alldieweil dadurch Links auf einen Haltestellenaushang oder Links auf die nächste Verbindung zu einer Strecke unmöglich sind.
Während für den einzelnen Verkehrsbetrieb ist eine Zusammenarbeit mit OSM vorteilhaft ist, können die Anbieter der Fahrplanauskunftsysteme und die Verkehrsverbünde Konkurrenz sehen und - ob begründet oder nicht - gegen eine Nutzung ihrer Daten mit der Urheberrechtskeule vorgehen.
Das alles schließt die Übernahme der Haltestellen-IDs kommerzieller Anbieter vollständig aus.
Konzept für Haltestellen-IDs
- Hierarchische Struktur
- Einbeziehung der Gemeinde
- Normalisierung des Haltestellennamens
Hierarchische Struktur
Wie Domainnamen, aber von links nach rechts geschrieben in der natürlichen Reihenfolge. Also "de.xxxxx" für Deutschland. Damit können in verschiedenen Regionen unterschiedliche Systeme benutzt werden, ohne daß es zu Kollisionen kommt.
Einbeziehung der Gemeinde
Haltstellennamen alleine sind nicht eindeutig (Beispiel: "Hauptstraße"). Deshalb wird die Gemeinde einbezogen.
Der Gemeindename kann selbst mehrdeutig sein ("Neustadt"), es kann zweimal die Haltestelle "Hauptstraße" in "Neustadt" geben.
Die Nutzung des bundesweit eindeutigen Amtlichen Gemeindeschlüssels bietet sich an. Beispiel: "de.050111000.xxxxx" für Haltestellen in Düsseldorf.
Die Gemeindekennzahl selbst ist nicht direkt lesbar, läßt sich aber leicht beim statistischen Bundesamt oder in der Wikipedia nachschlagen. Da eine einzelne Route zumeist nur durch wenige Gemeinden verläuft, braucht man sich nicht viele Kennzahlen zu merken.
Normalisierung des Haltestellennamens
Der Haltestellen-Name wird vom Haltestellenschild übernommen, sodann normalisiert:
- alle Abkürzungen werden voll ausgeschrieben,
- Umlaute werden ersetzt: "ä"->"ae", "ö"-"oe", "ü"->"ue", "ß"->"ss" (möglicherweise zusätzliche Regeln für andere Regionen),
- weitere diakritische Zeichen werden entfernt: "â"->"a", "é"->"e", "ñ"->"n",
- Sonderzeichen und Leerzeichen werden getilgt,
- der Rest wird klein geschrieben.
Beispiel:
- "Uckerath Mitte", "Uckerath-Mitte", "Uckerath (Mitte)" => "uckerathmitte".
- "Dr.-Emil-Steinberger-Weg" => doktoremilsteinbergerweg
- "Hauptstr." -> hauptstrasse
- "Schloss-Straße", "Schloßstr" -> schlossstrasse
Durch diese Regeln werden häufig benutzte Variationen auf die gleiche Kennung abgebildet.
Beispiele:
- Haltestelle "Benrath Btf" -> de.05111000.benrathbetriebshof
- Haltestelle "Schloß Benrath" -> de.05111000.schlossbenrath
- Haltestelle "Horster Allee" -> de.05158016.horsterallee
- Haltestelle "Haus Bürgel" -> de.05158026.hausbuergel
Nachbemerkung und Bitte
Dieses Konzept ist für meinen Zweck brauchbar, muß aber natürlich nicht jedem gefallen.
Ich habe im Großraum Düsseldorf/Hilden/Solingen bereits die Haltestellen verschiedener Linien mit solchen IDs versehen:
- VRR Buslinie 730 VRR Buslinie 730
- VRR Buslinie 784 VRR Buslinie 784
Außerdem tragen auch die Linien selbst ein ähnlich gebildetes "ref"-Atrribut, bestehend aus einem "de."-Präfix, der Verkehrsverbundabkürzung und der Liniennummer ("de.vrr.730").
Ich brauche diese Angaben für die Arbeit an der Fahrplanauskunft. Deshalb bitte ich, diese Daten auch dann nicht zu löschen, wenn das Konzept selbst mißfällt.
Es dankt: Netzwolf 17:08, 17 March 2009 (UTC)