Routing / Spurmapping

Da habe ich noch den Ansatz eines abgerüsteten Schemas für Anfänger anzubieten, das ist zwar dann nicht semantisch korrekt, aber da kommt dann hoffentlich ein erfahrenerer Mapper vorbei und setzt die passende Relation auf die Einzelobjekte. Gut, eine wirkliche Lösung ist das auch nicht, eher eine Übergangslösung, außerdem entstehen da evtl. widersprüchliche Redundanzen bzw. muß extra Aufwand zur Löschung an den Einzelobjekten betrieben werden.

Das funktioniert dann so, das der Anfänger-Mapper z.B. eine Brücke mit bridge=yes + layer=1 an jedem Weg mappt und dann mal jemand hoffentlich die betroffenen einzelnen Brückenteilwege in eine gemeinsame Relation, für die Darstellung, das das nur eine Brücke ist, packt.

Da die letzten Abschweifungen in Richtung Spuren-Als-Einzelne-Wege-Erfassen nichts neues zum Thema Routing erbracht haben, moechte ich noch mal die Variante Spuren-Als-Tags-Des-Weges-Erfassen hervorbringen.

Ein Punkt ist dabei, wie man die Verbindung der Spuren ueber eine Kreuzung hinweg am besten erfassen kann. Die meisten der letzten Vorschlaege (auch meiner) sehen vor, dass das ueber Tags geschehen soll aehnlich wie die Spurerfassung selber. Inzwischen bin ich der Meinung, dass dafuer doch Relationen das geeigentere Mittel sind:

  • Letztendlich will man diese Informationen ja erfassen, damit ein Router die auch verwenden kann. Und fuer die automatische Auswertung ist es halt deutlich einfacher, wenn direkt in den Daten drin steht, welche Wege betroffen sind, als dass die Auswertung sich das erst ueber irgendwelche Lagedaten selber heraussuchen muesste. (Eine Kreuzung wird eigentlich nur ein mal erfasst, aber die Daten werden dann wieder und wieder ausgewertet.)
  • Wirklich komplizierter ist die betreffende Relation ja auch nicht, vom Aufbau her entspricht sie ja einer Turn-Restriction., und da funktioniert es ja auch.
  • Wenn man die Verbindungen ueber Relationen erfasst, dann erledigt man an dieser Stelle auch die interpretationsmoeglichkeit, ob die Verbindung in Weg-Richtung oder in Fahrt-Richtung zu erfassen sind.

Die meisten der letzten Vorschlaege sehen fuer die Erfassung eine Listennotation vor, bei der die Spuren mittels eines definierten Trennzeichens aufgezahelt werden. Daneben gab es haeufig auch eine Notation, mit der man auch einzelen Werte nur fuer eine bestimmte Spur setzen konnte. Aufgrund meiner Erfahrung mit den Beispielen auf der Uebersichtseite denke ich nun, dass man dazwischen auch noch teilweise gefuellte Listen zulassen sollte. D.h., wenn man fuer eine Spur keinen entsprechenden Wert setzen will, dann folgt da einfach Trennzeichen auf Trennzeichen. (Dieser Vorschlag ist auch schon von anderen gekommen, nur habe ich das bislang noch nie irgendwo ausformuliert/angewendet gesehen).

Die meisten der letzten Vorschlaege sehen fuer die Listennotation ein einfaches Aufzaehlen der Spuren von links nach rechts vor. Im Moment denke ich, dass es besser waere, wenn man die (logische) Strassenmitte dabei besonders hervorhebt. Bei den allermeisten Strassen trennt diese logische Mitte die Fahrtrichtungen oder wird von einer Spur gebildet die die Fahrt in beide Richtungen erlaubt (z.B. auf einspurigen Strassen). Wenn man diese Mitte besonders betont, erleichtert sich erstens die Erfassung der Fahrtrichtung der einzelnen Spuren (fast alle Faelle sind per Default erledigt). Zum anderen duerfte das die Auswertung erleichtern, wenn man z.B. wissen will, ob eine Strasse einen rechtsseitigen Radweg hat. realisieren liesse sich so eine Betonung, indem man in der Listennotation ein weiteres Trennzeichen einfuehrt und bei der einzelnen Identifikation der Spuren mit Vorzeichen arbeitet: Spuren mit negativem Vorzeichen sind links der Mitte, Spuren mit positiven Vorzeichen sind rechts der Mitte.

Gruss
Torsten

Gut, ich halte diesen Ansatz derzeit mindestens kurz- bis mittelfristig für aussichtsreicher. Dass unter den tag-basierten Ansätzen die Listenvarianten am meisten versprechen, zeichnet sich allmählich auch ab.

Das ist eine naheliegende und sinnvolle Ergänzung.

Ja, es könnte wirklich vorteilhaft sein, die Straßenmitte gesondert zu betonen. Die Defaults für die Fahrtrichtungen und die bessere Auswertbarkeit für Datennutzer, die z.B. nur an Radwegen interessiert sind, sind sehr gute Argumente.

Ich möchte allerdings auf einen alternativen Vorschlag für die praktische Umsetzung hinweisen. In Mailinglisten-Diskussionen wurde vorgeschlagen, man könnte für die beiden Straßen"hälften" zwei getrennte Listen anlegen (also so etwas wie lanes:direction:right = … , … , …). Dadurch hätte man weiterhin nur eine Art von Trennzeichen und der Bedarf für “Vorzeichen” von Spuren würde ebenfalls wegfallen. Allerdings hat man dann doppelt so viele, wenn auch kürzere, Tags.

Das mit denn Zusatztags wird bestimmt interessant, bei teilweise markierten Radspuren zum Beispiel, wie dem separated=yes-Radweg, der dann als Radspur auf die Straße mündet und an der nächsten Einengung der Straße ganz aufhört… :wink:

Da hatte ich auch dran gedacht, auf die Art ist das auch machbar. Im Moment scheint mir das aber die schlechterer Loesung zu sein, da es ja doch genug Faelle gibt, wo die Aufteilung in Rechts und Links alleine nicht ausreichend ist (z.B. alle Strassen mit nur einer Fahrspur). Das koennte man dann allerdings ueber eine dritte Kategorie (wie in etwa lanes:direction:middle=…) erfassen, was aber zu einer noch groessere Zergliederung führt. Ich denke, da wäre eine einzelne Liste uebersichtlicher. Wobei uebersichtlich da allgemein sehr relativ ist, a schoensten ist natuerlich eine graphische Eingabehilfe, so dass der Mapper von den daunter liegenden Datenstrukturen gar nichts mitbekommt.

Das Thema, wie detailliert man mappen will, hat man immer, unabhaengig vom gewaehlten Tagging-Schema. Oben genanntes Beispiel wird bei kleinlichem Tagging zu einer extremen Zerstueckelung der Strasse fuehren. Aber was waere die Alternative? Wenn man das als einzelne Wege erfassen wuerde, dann muesste man das doch genauso zerstueckeln und dann die Einzelteile jedes Abschnittes jeweils in einer Relation wieder zusammen fassen.

Gruss
Torsten

Da Bilder mehr als 1000 Worte sagen habe ich zu meinem Lösungsansatz aus post http://forum.openstreetmap.org/viewtopic.php?pid=221552#p221552, den ich hier http://wiki.openstreetmap.org/w/images/e/eb/Lane-Tagging-L%C3%B6sungsansatz.pdf als Text beschrieben habe noch eine grafische Darstellung gebastelt:

http://wiki.openstreetmap.org/w/images/c/c0/Lane-Tagging-L%C3%B6sungsansatz-grafisch.pdf

Vielleicht wird zu meinem Ansatz so einiges klarer im Bezug auf die Verwendung/Auswertung zum routen. Ich halte nichts vom Aufzählungen/Listen in values wegen der Intransparenz und Nachbearbeitung. Nach wie vor ist mir nicht klar, wie das ein router verarbeiten soll.

Da der Mensch ein optisch orientiertes Wesen ist, halte ich das mappen einzelner Spuren für die bessere Lösung. Ich habe vesucht, ein Schema zu entwickeln, dass ähnlich arbeitet wie Relationen, aber noch ohne diese auskommt. Das Problem dabei sind die Linienbündel, für die man dann aber den (ungeliebten) Weg über Relationen verwenden könnte :confused:

Ich bitte um Meinungen zur Verwendbarkeit als Mapper und zum routing. Auch Änderungsvorschläge sind willkommen. Sollte sich herausstellen, dass das schon im Ansatz alles nur Mist ist, werde ich mich wohl von der Idee verabschieden.

wozu sind die lane_restrictions auf Seite 5 in der graphischen Darstellung, wenn Du auf Seite 6 das gleiche mit dem Spinnennetz im Kreuzungsbereich darstellst?

Ich weiß, dass ist doppelt gemoppelt. Aber einerseits dient es dem Renderer, um für das entsprechende lane die Richtungspfeile oder das entsprechende Verkehrschild einzublenden, andererseits denke ich, dass es für vorausschauendes routing Sinn macht. Weiterhin könnte eine automatisierte Qualitätskontrolle checken, ob die vom entsprechenden lane ausgehenden lane=junction vollständig und richtig sind. Ich befürchte nämlich, dass von den lane=junction je nach Komplexität schnell mal eins vergessen wird, weil die ja in der Realität nicht sichtbar sind und nur benötigt werden, weil routing über Flächen nicht möglich ist.
Ich hatte auch mal kurz daran gedacht, die lane=junction wegzulassen und dann dem router die Aufgabe zu überlassen, automatisiert die Möglichkeiten der Verbindungen über die lane_junction-Fläche zu generieren, was mapping natürlich vereinfachen würde. Aber dann habe ich mich entschlossen, dem router die Arbeit zu erleichtern.

ich sag mal so. Das ganze sieht ziemlich unübersichtlich aus, was aber wohl nicht zu vermeiden ist. Daher würde ich es gut finden, wenn alle nur für diesen Zweck benötigten Objekte einen identischen Tag haben. Damit kann man das auf Knopfdruck ausblenden wenns einen stört.

Als Extrembeispiel könntest Du ja das hier nehmen
https://maps.google.de/maps?q=Gro%C3%9Fer+Stern,+Berlin&hl=de&ie=UTF8&ll=52.514784,13.351597&spn=0.003317,0.009645&sll=51.151786,10.415039&sspn=14.021423,39.506836&oq=berlin+gro%C3%9Fer+stern&hnear=Gro%C3%9Fer+Stern&t=k&z=17

Mir gefällt Deine Art, die Dinge zu visualisieren :slight_smile: Da kann man sich gleich mehr drunter vorstellen als bei einem ellenlangen Text

Deswegen habe ich für alle expliziten ways oder nodes als key “lane” gewählt ( siehe http://wiki.openstreetmap.org/w/images/e/eb/Lane-Tagging-L%C3%B6sungsansatz.pdf , Seite 3). Ausnahme ist lane_junction für die Kreuzungsfläche. Das dürfte aber auch kein Problem geben.

Gute Idee. Da lege ich dann aber ein bing-Bild in den Hintergrund. Irgendwo habe ich auch mal eine recht komplexe Kreuzung in Wien gesehen, die sich eignen könnte. Und ein Autobahnkreuz oder so will ich mir auch noch vornehmen, an dem man mit lane_direction probieren könnte.

Danke für das Kompliment. Macht zwar erst mal Arbeit, spart dann aber tausend Erklärungen.

die hier?
https://maps.google.de/maps?q=Praterstern,+Wien,+%C3%96sterreich&hl=de&ie=UTF8&ll=48.217968,16.392953&spn=0.003631,0.009645&sll=51.151786,10.415039&sspn=14.021423,39.506836&oq=wien+praterstern&hnear=Praterstern,+Leopoldstadt+1020+Wien,+%C3%96sterreich&t=k&z=17
bzw bei Bing
http://binged.it/yUyLUy

Da sieht man die Pfeile auf der Straße nicht so gut

In Wien dachte ich an :
http://www.bing.com/maps/?v=2&cp=48.21229742119521~16.378988290081914&lvl=16&dir=0&sty=a&where1=Schwedenbr%C3%BCcke%2C%201010%20Wien%2C%20%C3%96sterreich&obox=1
Da könnte man dann sogar die westlichen Brücken zu einem Rundkurs zusammenflicken. Dein Vorschlag ist auch eher ein Kreisverkehr :confused:
Wie gesagt: ich würde das Luftbild hinterlegen, was Arbeit spart, und da ist Google ja wohl außen vor :confused:

Die Lösung sieht einleuchtend aus. Auf die komplizierteren Beispiele bin ich gespannt, ich hoffe “dein” System schafft das.

Der vorgeschlagene Wiener Praterstern, sieht komplizierter aus, als er ist. Sind meistens 3-4 Fahrstreifen und 1-2 gehen davon seitlich ab, glaube ich ist nicht viel komplexer, als der Berliner Vorschlag. Die Frage ist nur, was man mit Busspuren und Bimgleisen macht? Vom System komplett ausnehmen, solange sie nicht parallel zur Straße verlaufen?

Das wäre bei unseren britischen Freunden doch schön :slight_smile:
http://www.bing.com/maps/?v=2&where1=Bruce%20Street%20Bridges%2C%20Swindon%20SN2%201&q=Bruce%20Street%20Bridges%20Swindon&form=LMLTSN&cp=51.568690164095656~-1.8009360000000085&lvl=18&sty=a&encType=1
und nebenan:
http://www.bing.com/maps/?v=2&cp=48.218938456559506~16.391283333301526&lvl=19&dir=0&sty=a&where1=Bahnhof%20Wien%20Praterstern,%20%C3%96sterreich&form=LMLTCC#JndoZXJlMT1UaGUrbWFnaWMrcm91bmRhYm91dCtTd2luZG9uJmJiPTUxLjU2MzY1NjI2NzMyMTklN2UtMS43NzA0MTM3NzIzOTc2MSU3ZTUxLjU2MjI1NzMxMjk3OTclN2UtMS43NzI5MDU1NDQ1NzI0NQ==

Separate Busspuren bekommen lane=psv. Bimgleise (Hochdeutsch=Straßenbahngleise) laufen unter “konkurrierender Verkehr”, den ich nicht mit lane=xy taggen will, da dies nichts mit dem ersten Ziel, das spurabhängige routing zu ermöglichen, zu tun hat. Straßenbahnen laufen als railway=tram wie bisher weiter. Wichtig erscheint mir dabei aber, die höhengleichen Kreuzungen auch auf lane=* zu markieren, damit sie als Hindernis ausgewertet werden können.

Der Ansatz ist absolut nicht Mist, sieht fast aus wie eine unötig komplizierte Version von meiner Grobidee, die ich schon hier und heute noch mal unter http://wiki.openstreetmap.org/wiki/Talk:Proposed_features/Lane_group#Separate_ways_for_the_lanes_would_be_better.2C_if_you_want_these_as_features beschrieben habe.

Weil wenn man an Spuren die wie in deinem Schema mit dem alten Highways verbunden sind und dann z.B. wie folgt getaggt werden:

lane=yes
foot:all=yes
bicycle:all=yes
motor_vehicle:forward=yes
motor_vehicle:backward=no
motor_vehicle:left=yes
motor_vehicle:right=no

…und die Lanes dann nur dort gemeinsame Knotenpunkte haben, wo auch ein Einbiegen auf die andere Spur möglich ist, hat sich das Abbiegebeschränkungsproblem und auch access-Problem dann hoffentlich in den meisten Fällen ganz schnell erledigt. :slight_smile:

Dann will der Autorouter ja bestimmt “seine Straße” haben, weshalb ich dann eine Relation für die Lanes machen würde, wo der alte highway=* mit passender Rolle, der Straßentyp entsprechend dem highway=* für die Lanes und die lane=yes-Objekte, die die Fahrbahn bilden, drin sind.

Dann braucht man ja noch die “Straße” für die “der Sidewalk gehört aber mit zur Straße”-Fraktion, wo dann alles drin sein kann, was zur “Straße” (im Sinne der Fahrbahn bzw. des jetzigen highway-Weges) gehört (“straßenbegleitende” Fuß-/Radwege (die auch nur lane=yes-Objekte mit anderem “access”-Tags nach obigem Schema sind), Laternen, Ampeln oder sonstwas…) und wo dann auch der name=* mit rein kommt.

Alte Anwendungen interessieren sich für die lane=yes-Wege und die Relationen dann hoffentlich nicht weiter und benutzen nur den (anfänglich redundanten) alten highway=*, womit das Rückwärtskompatibilitätsproblem gelöst wäre.

Noch 'ne Anmerkung: Es ist im Endeffekt doch egal, ob man als Autfahrer nicht nach links fahren kann, weil da eine Sperrlinie oder -fläche ist oder man sich bei einer einspurigen Straße dann im Straßengraben wiederfindet. Dann sollte man für bestimmte Objektypen evtl. noch sillvolle Defasultwerde definieren, damit man nicht so viel taggen muß und fertig!

Das ist dein Denkfehler: Dir als Mensch sagen die Bilder mehr, ein Router hat aber kein solches Sehverstaendnis. Fuer ihn sind solche visuellen Darstellungen komplett unbrauchbar. Wenn du nachvollziehen willst, mit welchen Daten ein Router zurechtkommen muss, dann mal deine Beispielkreuzung mal in JOSM auf, speicher die als OSM-Datei ab und schau dir dann diese OSM-Datei im Texteditor an. Du wirst sehen, dass du nichts siehst, und das wird einem Router genauso gehen.

Wenn man entsprechend deinem Vorschlag fleissig einzelne Wege fuer die Spuren eintraegt, und ist das eine reine Beschaeftigungstherapie fuer die Mapper (als ob du zuhause ein Puzzle machst): Du verbringst deine Freizeit damit und kannst es dir angucken und dich freuen, wie viel du geschafft hast. Aber irgendein Nutzen (Routing) wird daraus nicht erwachsen.

Solche Listen lassen sich ganz einfach visualisiseren, damit du als Mapper (als Mensch) sie leichter nachvollziehen kannst: Momentan zeichnet ein Mapping-Editor (z.B. JOSM) eine Linien fuer einen Weg und faerbt diese entsprechend der in den Tags enthaltenen Werte ein. Genauso wie das Einfaerben funktioeniert, kann entsprechend irgendwelcher Lane-Listen auch das Aussehen der Linie angepasst werden: Wenn da eine Lane enthalten ist, wird eine einfache Linie gemalt, bei zwei Lanes dann zwei Linien nebeneinender usw.
Aus den Tag-Listen eine Visualisierung zu bauen ist trivial. Aus einer visuellen Darstellung aber umgekehrt eine Tag-Liste zu generieren ist extrem aufwendig, in aller Allgemeinheit praktisch unmoeglich.

Gruss
Torsten

Da drehst du meine Aussage um. Die Bilder http://wiki.openstreetmap.org/w/images/c/c0/Lane-Tagging-L%C3%B6sungsansatz-grafisch.pdf dienen dazu, das von mir vorgeschlagene Schema für den Menschen verständlich optisch umzusetzen.

Meines Wissens bilden Router gerichtete Graphen über Knoten und Kanten. Diese stellt ihnen mein Vorschlag in den lane=* genau wie ansonsten highway=* zur Verfügung. Wo ist das Problem? Der Router muss doch lediglich eine Regel befolgen, die lane=* priorisiert, wenn als Alternative highway=* besteht.

Hast du dir die entsprechende mit JOSM erzeugte OSM-Datei auch mal im Texteditor angeschaut :wink:

Da es auf der Mailingliste gerade halbwegs aktiv ist das Thema, hier ein Link:
http://rfmtc.no-ip.org/osm/austrox/?zoom=17&lat=47.78819&lon=16.22064&layers=B

Irgendwie fehlt bei vielen Schemen, wie man es tagged, wenn sich von 3 Spuren die mittlere teilt und dann jeweils 2 Fahrstreifen in eine andere Richtung gehen. (siehe oben)
Ich fürchte, man kommt ohne gezeichnete Lanes auf einer Autobahn und bei größeren Kreuzungen nicht weiter.

@hurdygurdyman
Hast du schon erfolgreich versucht, dein Schema auf die großen Kreuzungen anzuwenden?