Hallo,
Wie willst du etwas loswerden, wofür die keine Alternative hast? Das wird mir zur Zeit in der associatedStreet-Relation von Mappern/Diskussionsteilnehmern aus dem Ausland vorgeworfen.
Das Problem gibt es auch bei Eisenbahnsignalen, die genau wie Ampeln fast immer (es gibt wenige Ausnahmen) nur für eine Fahrtrichtung gelten. Dort sind das Tags railway:signal:direction=forward/backward/both in Gebrauch. Es gibt aber keine andere vernünftiger Lösung, Geltungsrichtungen zu erfassen.
Ansätze die Geltungsrichtung als Winkel in Grad anzugeben, sind Overkill und eine genauso große Quelle für falsche Daten.
(1) Der Mapper müsste dann nämlich den Winkel ermitteln. Mit den heutigen Editoren geht das nicht gut. Selbst wenn es einen Tags die Möglichkeit gäbe, in JOSM-Objektvorlagen einen Winkelmesser einzubauen, wäre das nicht der richtige Weg. Es gibt auch noch andere Editoren als JOSM. Sei es iD oder spezialisierte Editoren. Der erhöht für die Nutzer und die Editoren-Entwickler nur die Hürde beizutragen bzw. einen Editor zu programmieren. Bei OSM wollen wir jedoch die Schwelle niedrig halten (KISS), sonst würden wir heute schon die Signal- oder Ampelrichtung als Relation erfassen, die zwei Nodes referenziert – einen from-Node und einen signal-Node.
(2) Winkel sind als Einheit noch uneindeutiger als forward/backward/both. Ich wundere mich bis heute, wie gut das mit Längeneinheiten klappt und ob nicht doch in England ein Großteil der Längen- und Gewichtsangaben in OSM vom Mapper als britische Einheit eingegeben wurde, aber mangels Angabe der Einheit von allen Nutzern als metrisch interpretiert wird. [1] Es gibt zwei verschiedene Drehrichtungen, die der Mathematiker, Naturwissenschaftler und übrigen Ingenieure und die geodätische. Die Geodäten drehen im Uhrzeigersinn, der Rest gegen den Uhrzeigersinn. Dazu kommt die Frage, welche Achse den Winkel 0° hat. Ist es die Rechtsachse (mathematisch x-Achse, geodätisch y-Achse) oder die Hochachse (mathematisch y-Achse, geodätisch die x-Achse)? Und wenn das noch nicht genug wäre, gibt es noch einen dritten Fallstrick, die Einheit. Es gibt Altgrad (°), Neugrad (gon) und das Bogenmaß. Auswerter dürfen sich dann, als wenn das nicht genug wäre, auch noch mit verschiedenen Notationen herumärgern – Winkel in Grad, Minuten und Sekunden vs. dezimal.
(3) Wenn ich als Datennutzer von einer Routing-API den zubefahrenden Weg bekomme, möchte ich mich nicht noch mit der Geometrie herumärgern, wenn ich die Route nicht auf einer Karte zeichnen möchte. Nehmen wir das Beispiel eines Eisenbahnrouters. Er hat als Ausgabe einen tabellarischen Buchfahrplan. Das ist ein Tabelle mit Spalten für Höchstgeschwindigkeit, Signale und Kilometrierung. Wenn die Routing-API mir die befahrenen Wege und die Nodes mit ihren Tags zurückgibt, brauche ich nur auf die Reihenfolge der Nodes und railway:signal:direction=* achten, um festzustellen, ob das Signal für meinen Nutzer relevant ist oder nicht. Das spart Entwicklungsaufwand und Rechenzeit.
Ich bezweifle, dass die Bahn (und vermutlich ist es im Straßenwesen ähnlich [2]) die Signale mit Richtungswinkel in ihren Datenbanken speichert. Bahnstrecken und Straßen haben eine Kilometrierung (im Straßenbau kenne ich auch den Begriff der Stationierung). Von eine Ursprung aus wird aufsteigend die Entfernung gezählt. Ich brauche also nur speichern, ob das Schild/Signal in Kilometrierungsrichtung oder entgegen oder in beide gilt. KISS!
Klar, die von dir angesprochenen Probleme existieren. Die Lösung lautet bessere Editoren und bessere QA-Tools. JOSM (iD auch?) dreht automatisch alle Vorkommen von forward und backward, left und right in Keys (z.B. maxspeed:forward → maxspeed:backward), wenn der Way gedreht wird. Es ist egal, welches Tag das ist. Es fehlt nur noch die Unterstützung für ein Drehen der Values. Da sich die JOSM-Entwickler demgegenüber aber ablehnend zeigen, werde ich wohl selbst noch den Patch schreiben müssen. Ebenso müssen die Editoren das Splitten von Ways entweder verweigern oder beim Drehen oder Neuzeichnen von Ways alle Ways herunterladen, die den Node referenzieren. Das ist machbar.
Für dumme Editoren (Fingerzeig in den Javascript-Keller) braucht man wohl QA-Tools, die die Diffs nach entsprechenden gefährlichen Edits durchkämmen und Warnungen ausgeben.
Bitte bedenke, dass railway:signal:direction=* schon 19 303 Mal verwendet wird. traffic_signals:direction=* übrigens nur 9 782 Mal.
Viele Grüße
Michael
[1] Britische Einheiten sind ein großer Schxxx. Man muss sie beim Datenbankimport gesondert behandeln, weil man sie nicht einfach im Stylesheet mit <, > usw. abfragen kann.
[2] Falls überhaupt Datenbanken verwendet werden. Vieles gibt es bestimmt bloß als AutoCAD-DWG-Datei (also als Vektorgrafikzeichnung mit Layern).