Warum einfach, wenn's auch kompliziet geht? – Proposal Traffic Signals

Hallo,

Das ist ein Tag, der mich schon lange stört. Ich wollte dazu längst mal ein Proposal machen, um es loszuwerden bevor es sich zu sehr verbreitet (die - recht einfache - Idee dazu steht schon, ich schiebe es nur immer wieder vor mir her, daraus ein Proposal zu machen bzw. eine Diskussion anzustoßen).

Der Grund für meine Ablehnung ist folgender: Wir weisen hier einem node eine Richtung zu, das ist höchst unlogisch und hat auch Konsequenzen.

traffic_signals:direction=forward/backward funktioniert nur so lange, wie die Wegsegmente neben dem node in dieselbe Richtung weisen. An der Position der Ampel kann jedoch schnell mal ein Weg gesplittet und/oder umgedreht werden. Als Folge habe ich z.B. einen Ampel-Knoten zwischen zwei Wegen, die beide von der Ampel wegzeigen
→ traffic_signals:direction=forward/backward ist nicht mehr auswertbar!

Seoman

Danke, das brennt mir auch auf den Nägeln. Was ist deine einfache Lösung?

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).

Es geht in etwa in diese Richtung …

OK, da ich es ja nun selbst beschworen habe, muss ich mich wohl doch endlich mal aufraffen, das zusammenzuschreiben. Gibt es eigentlich so etwas wie “ungewollte Selbst-Motivation” …? :smiley:

Ich will hier nichts Unvollständiges posten, gebt mir daher bitte einen oder zwei Tage - ich weiß nicht, ob ich vor Donnerstag abend dazu kommen werde.

Seoman

Ich glaube, sowas nennt man Ehrgeiz :wink:

Gruss
walter

Also ich habe den Tag intensiv genutzt. Sicher kann das schnell von einem unwissenden umgedreht werden, aber wie bei vielen Tags nutzen (auch bei Abbiegebeschränkungen), geht schnell etwas schief, wenn man an Kreuzungen was ändert. Ich sehe hier genauso viel Pflegeaufwand, wie bei allen anderen Tags bei Kreuzungen und Einmündungen die Richtungsabhängig sind (u.a. turn:lanes, change:lanes, Abbiegebeschränkungen etc.).

Es könnte auch sein, dass sich die Straße am Ampelknoten verzweigt. Dann wäre “traffic_signals:direction” ebenfalls undefiniert.

Man könnte den durch Ampeln geregelten Bereich als Fläche erfassen (entlang der Haltelinien mit Fortsetzung auf der Gegenfahrbahn).
Eine Ampel würde nur für die ins innere führende Fahrtrichtung gelten.
Eine solche Fläche wäre mit jedem Editor zu erstellen und durch den Mapper einfach zu prüfen (im Gegensatz zu Relations- oder “traffic_signals:direction”-basierten Daten).
Man würde damit nebenbei die Zusammengehörigkeit der Ampeln erfassen und Aussagen zur Zahl der Ampelkreuzungen/-einmündungen in einer Gemeinde ermöglichen.

Das verstehe ich nicht. Ich setze traffic_signals als Node auf den highway (wo die Ampel bzw. die Haltelinie ist)- NICHT auf den Node der Kreuzung! Und dann habe ich bezgl. forward/backward keine Zweideutigkeiten mehr.

Der highway der

Der highway der zur Kreuzung hinführt ist durch change:lanes/turn:lanes unter Umständen stark fragmentiert. Jetzt soll man auf keinen Fall ein highway=traffic_signals auf einen Node zwischen zwei Ways setzen?

… und manche lanes haben noch eigene “Ampeln”.

Nach dem Überfliegen des Proposals komme ich zu dem Schluss, dass die relationale Erfassung vom Ampeln auf Spurebene mit deren Ampelphasen vollkommen überzogen und realitätsfremd ist. Ich kenne keine Ampel - und dazu gehören auch temporäre Baustellenampeln - die nicht mit irgendwelchen Sensoren ausgestattet ist, welche das Verkehrsaufkommen erfassen und die Ampalsteuerung davon abhängig variabel steuern. Allein vor diesem Hintergrund ist das Schema Blödsinn überflüssig.
Wenn ich einen Router programmieren würde und könnte, der zusätzliche Kosten für eine Ampel als Malus in die Berechnung einbezieht, wäre das ein wie auch immer pauschalierter Wert für die ganze Kreuzung vielleicht noch unter Berücksichtigung der verkehrlichen Bedeutung. Somit reicht ein als Ampel getaggter node am Kreuzungspunkt, wenn alle ankommenden ways betroffen sind und sonst ein entsprechender node auf dem oder den ankommenden ways mit Ampel.

Edit:
Viel Spaß damit bei Anwendung des Proposals
auch bei diesem Beispiel

Sollten Daten nicht einmal die Wirklichkeit wiedergeben?
Jetzt geht OSM dahin eine Straßen - Routing - Anwendung zu werden - alles wird “abstrahiert”.

Das finde ich ja schon lustig. Nach ein paar Tagen Pause schaue ich hier mal wieder rein und finde schon gleich wieder ein sehr schönes Beispiel warum man Spuren im Kreuzungsbereich trennen sollte. Damit wäre das Problem mit der Richtung erledigt. Die Ampel kommt genau da hin wo sie steht. Nämlich an der Haltelinie und die Richtung ist auch klar weil es halt eine definierte Spur für die Richtung gibt. Es könnte so einfach sein und mir fehlen noch immer echte Argumente die gegen die Spurtrennung sprechen.
Auf diese Weise kann man sich eine Menge backward/forward Tags sparen und somit gibt es auch damit keine Probleme.

Die Wirklichkeit wäre eine Ampel in 3D, die an einem Mast oder einer Traverse über oder neben der Straße befestigt ist. :roll_eyes: Jede Art von Kartographie ist eine Abstraktion und Generalisierung.
Und:
OSM heißt immer noch OpenStreetMap. Daraus leite ich ab, dass der ursprüngliche Zweck der Datenerfassung darin lag und für mich auch noch liegt, diese zur Orientierung bei der Straßennutzung zu verwenden. Das ist nun einmal routing.
Wenn es jemandem darum geht, die Realität möglichst original nachzubilden, sollte er sich dem Modellbau widmen.

An verschiedenen Stellen wurde versucht, auch dir die Konsequenzen und Probleme, welche die getrennte Erfassung von Spuren mit sich bringt, zu erläutern. Ich werde das nicht wiederholen.
Übrigens habe ich noch keine Ampel gesehen, die mitten auf der Spur steht…
Wie wäre es, wenn du alle deine Argumente, die für die Spurtrennung sprechen, mal zusammenfasst und dabei auch berücksichtigst, welche Nachteile dies mit sich bringt und welche neuen Probleme dadurch entstehen. Geeignet dazu und vorgesehen wäre ein Proposal, um deine Ideen und Lösungsansätze konstruktiv der Community nahe zu bringen, damit diese darüber befinden und entscheiden kann. Für das Etablierte und von dir kritisierte lanes-Schema gibt es das.

Zwischen zwei ways ist kein Problem, sofern es dieser Node nicht der Kreuzungspunkt von zwei Straßen (Achtung: Straße ist nicht identisch mit way!) ist.
Mir ist bisher noch keine Ampel untergekommen, die nur in der Mitte der Straße ist. Eine reine Linksabbiegerampel schon, an eine reine Rechtsabbiegerampel kann man sicher auch denken. Es ist zwar klar, dass die Realität mehr Möglichkeiten verbirgt als wir in der Abstraktion denken, trotzdem kommt man mit traffic_signals:direction=forward/backward in 99 % der Fälle hin. Wo es reine Linkabbiegerspuren gab, war bei mir auch eine bauliche Trennung der Gegenfahrbahn, so dass man die Ampel auf die “Stückchen” eigenen Way der Linkabbiegerspur setzen konnte.

Aber um auf den Thread zurück zu kommen: Abbiegerelationen und Grünphasen halte ich für übertrieben!

Da hatte ich aber OpenStreetmap in der Tat anders verstanden. Ich dachte immer Routing eher eins von vielen Anwendungsmöglichkeiten und es geht hauptsächlich darum möglichst viele nützliche Daten in der Karte unterzubringen. Dazu gehört dann natürlich auch das diese Daten möglichst in der Karte dargestellt werden und das auch möglichst nah daran wie es in der Realität aussieht. Wenn es nur um Routing geht, können wir uns Gebäude, Bäume, Parkbänke, Doggingstations usw ja schenken. Dann reicht es wirklich ein paar Linien durch die Gegend zu ziehen und die dann mit 30 Tags vollzupumpen die dann irgendeine Routingsoftware hoffentlich verarbeiten kann.
Irgendwo habe ich mal gelesen “Wie mappen was wir sehen” und ich sehe eine ganze Menge was in der OSM Karte noch nicht sichtbar ist. Z.B. Verkehrsinseln, Sperrflächen und halt auch Ampeln die nicht dort stehen wo sie in Realität stehen und das wird man auch mit den schönsten Tags nicht schaffen darzustellen.

Ein paar Versuche gab es aber leider hat mich davon nichts überzeugen könne. Alles war bisher widerlegbar.
Ich bin darüber auch selbst verwundert, da die Befürworter einer Spurtrennung ja wirklich selten zu sein scheinen und ich deshalb auch erwartet hätte das es dafür einschlägige Gründe gibt.
Aber das weicht so langsam doch etwas zu viel vom Thema hier ab.

Na so ein Glück. Dank baulicher Trennung konnte die Spur aufgetrennt werden und das ganze vernünftig getagt werden.
Soll ich vielleicht demnächst mit ein paar Backsteinen und einem Eimer Speis los ziehen und erst mal ein kleines Mäuerchen auf die durchgezogene Linie bauen damit ich dann auch die Spuren trennen kann :roll_eyes:

So ich hau mir jetzt auf die Finger und höre auf. Kann mir schon vorstellen das es nervt wenn man zu 100% einer anderen Meinung ist wie das wohl die Meisten sind.
Leider geht meine Engagement (noch) nicht so weit das ich das versuchen werden die ganze Community aufzumischen mit irgendwelchen Proposals

Ich habe übrigens schon munter angefangen Ampeln von der Kreuzungsmitte auf die Fahrspuren zu verlagern und dann mangels Spurtrennung mit traffic_signals:direction zu taggen.
Aber das lasse ich dann wohl auch erst mal wieder bleiben. Scheint ja auch nicht wirklich beliebt zu sein diese Lösung.

Eigentlich habe ich auch nichts gegen das lanes Schema. Ich mag nur forward/backward und direction in allen Varianten nicht. Ich würde das lieber mit entsprechenden Spuren darstellen wo es sinnvoll ist, was auch nicht immer der Fall ist. Aber forward/backward wird aus meiner Sicht viel zu häufig verwendet und sorgt nicht gerade für Übersichtlichkeit.

… und auch ich verwende OSM natürlich gerne fürs Routing und OSMAND kann halt mit forward/backward nicht umgehen. Ist also auch ein Stück weit eigennutzen dabei.

Naja, sieh es einfach demokratisch, Du hast mit Deinen Argumenten ja auch niemanden überzeugen können.

Ich habe nirgends gesehen, dass es unbeliebt ist. Und unbeliebt heißt nicht, dass man das nicht so taggen darf/soll, solange es im Wiki steht und nicht auf gemeinschaftlichem Wege rausgeworfen wird, kann man es so taggen. Ich habe mich damit angefreundet und nutze traffic_signals:direction ausschließlich. Immerhin kann man so auch an Kreuzungen Ampeln taggen, an denen es unterschiedliche Querungsmöglichkeiten für Fußgänger gibt. Es gibt ja auch Einmündungen, an denen Fußgänger nicht queren dürfen.

NOCH nicht!, man kann dies ja bei OSM anregen.
Es kann nicht sein, dass wir die Karte für eine bestimmte Software mappen. Der eine Router wertet es so aus, der andere so. Nur weil ich OSMAnd nutze, kann ich nicht für mich beanspruchen, nur mein Tagging ist korrekt!

genau das wird aber gemacht, indem alles an eine “Linie” (way) getaggt wird (weil parallele way Navis “stören” - wegen gps- Ungenauigkeit)