Routing / Spurmapping

+10, dann wäre die Kreuzung wieder im KISS-Prinzip[1]. :slight_smile:

Chris

[1] Keep It Simpel, ihr lieben Spurmapper

Naja, der richtige Spurmapper würde die Kreuzung wahrscheinlich auch auf die T-Kreuzung reduzieren und den Rest mit Wegen mit lane-Tag machen. Leider ist das noch nicht standardisiert und deshalb kommt’s halt zu sowas.

Das geht sogar noch, was schwieriger ist, und was Leute hier ja schon mit abbilden wollten, ist es, wenn die Straßenbahn teilweise die Spuren mitbenutzt. Da kommt man um das Erfassen aller Spuren als Flächen nicht mehr herum, denn wie will man sonst genau releativ zu einer Linie angeben, wo jetzt die Straßenbahn gleise liegen?

Das Spurproblem ist, zumindest theoretisch, gar nicht so kompliziert:
Da sind zuerst die, noch zu mappenden, Pflastersteine, die bilden dann die Spur als logisches Gebiklde. Mehrere Spuren sind die Fahrbahn, was, soweit ich weiß, die urspründliche Bedeutung von highway=* ist. Zuletzt kommt dann evtl. noch die Straße als abstraktes Gebilde aus Fahrbahnen, Fuß- und Radwegen, Lampen, etc. Was mas man in dieser Struktur nicht aus liegt_in ermitteln kann, muß man mit Relationen abbilden.

Das Problem ist, das highway=* urspünglich als Fahrbahn definiert wurde und das auch bleiben sollte, und man damit wirklich nur echt baulich abgetrennte Fahrbahnen mappen sollte. Für Spuren sollte man zumindest Wege oder besser gleich Flächen (das wäre besser für die spätere Erfassung der Plastersteine und Staßenbahngleise) nehmen. Damit man nicht noch mehr schreit wegen dem Routing das ja dann über Flächen funktionieren müsste, nimmt man vielleicht doch erst mal Wege und akzeptiert, das man die genaue Lage der Straßenbahngleise dann nicht erfassen kann, aber dann muß man später alles umständlich ändern und umtaggen, wenn man das doch Erfassen will, was ja absehbar, nur eine Frage der Zeit und an sich auch gut und möglich sein sollte.

Wenn man als Kompromiß daraus erst mal die Spuren als Wege und weitere zusätzliche Detailstufe unterhalb der, dann durch eine Relation dargestellten Fahrbahn (wo zusätzlich noch der Weg des alten highway=* aus Rückwärtskompatibilitätsgründen mit drin ist), mit rein nimmt, dann braucht man natürlich die zusätzlichen Sachen, die auf der alten fahrbahnebene die Deatils der spuren darstellen sollten, wie z.B. Abbiegebeschränkungen, nicht mehr.

Im Grunde ist das, was jetzt ja schon mit dem highway=* + oneway=yes mapping gemacht wird, genau der Ansatz den ich erweitert, eben um alle vier (Fahr)richtungen pro Verkehrsteilnehmer, hier schon als Vorschlag gepostet habe. Nur das es schlecht ist, dafür highway=* Zweckzuentfremden und man da besser eben lane=yes + vehicle:forward=yes macht, was dem alten highway=* + oneway=yes entsprciht.

Nein, der richtige Spurmapper mappt jede lane einzeln und macht dann ein Relation für die Fahrbahn drauf.

Das geht auch ohne Flächen und wird auch bei highway praktiziert, indem der way highway=* und railway=tram erhält. Sobald die Straßenbahngleise auf der “Fläche” einer Spur liegen geht das mit lane genauso.

highway bedeutet Straße http://www.dict.cc/?s=highway
Fahrbahn wäre carriageway http://www.dict.cc/englisch-deutsch/carriageway.html

Da eine Spur in der Regel nur in einer Richtung nutzbar ist, kann man oneway inpliziert setzen und spart das “vehicle:forward”.

Carriageway ist meines Wissens britisch und damit der Tag kurz gehalten wird, würde ich das (auch für Fahrbahnen richtige) lane bevorzugen, da es pro Fahrbahn 7 Zeichen weniger wären und bei der Summe an Fahrbahnen die früher oder später zu erwarten wären, das eine ordentlich Menge an Speicher fressen würde.

Eine Fahrbahn besteht aus 1 bis x lanes, das ist also exta, die lane ist die logische (nur durch Markierungen getrennt) oder pysikalische (wirkliche Trennung wie z.b. der Bordstein) Fahrspur für alle denkbaren Verkehrsteilnehmer wie Fußgänger, Fahrräder, Autos, etc. Für die Fahrbahn würde ich dann 'ne type=carriageway Relation erstellen, die auch bei getrennten Fuß-/Radwegen benutzt werden könnte, denn das ist die gleiche Abstraktionstufe.

EDIT: Ja, carriageway ist laut OALD britisch und steht für Fahrbahn im Sinne von Teil der Straße der für die Autos gedacht ist und für das Gesamtgebilde aus mehreren Spuren wie die Richtungsfahrbahnen bei Autobahnen.

Was ich meine ist der, von viv im Posting #203, aufgezeigte Fall, das läßt sich nicht ohne Flachenmapping lösen. Weil da ist die relative Lage auf der Spur und die Anzahl an Straßenbahngleisen nämlich mehr als interessant. Aus sicht der Zunkuftsfähigkeit müßte man da also alles als Flächen eintragen, weil wir sind ja keine reiner Autoroutinganbieter, die es da einfacher haben und mit so einem Linienmodell arbeiten können, da bei denen die Straßenbahn und deren Auswirkungen auf die Gesamtstraße nicht vor kommt. Das ist also bestenfalls eine Übergangslöung, wobei man es vielleicht besser gleich richtig machen sollte.

Ich meinte da die Bedutung nach OSM-Wiki, aber da ist das nicht genauer definiert als “Haupttag für Straßen und Wege aller Art” wobei da außer der Bedeutung von Spur, Fahrbahn und Straße dann auch noch Sachen wie z.B. highway=elevator und das alte highway=bus_stop wären.

Implizites setzen von Tags ist nicht sinnvoll und macht das allgemeine Konzept nur unötig kompiziert, besser ist es da Shortcuts für alle üblichen Fälle (Fahrspur, Fahrspur am Rad, Fußweg, Radweg, etc.) zu machen.

Hatte ich falsch verstanden…
Da könnte man ja auf das “klassische” Street oder Road zurückgreifen, ist ja beides glaube ich ja noch nicht genutzt.

Selbst wenn…
Ein Tagging-Schema sollte nicht scheitern müssen, wenns dann doch mal vorkommt.

sorry,gut 2 Seiten Diskussion übersehen… :expressionless:

Nachdem damals glaube kein Beispiel kam, durchaus noch aktuell.

In Österreich ist es bei Autobahnkreuzungen absolut üblich: http://binged.it/wNeNwC (in der näheren Umgebung noch 3 mal)

Und wer über die Straßenbahngleise nachdenken möchte: http://binged.it/zoxanG

Nein :smiley:
Wenn du mal das Shape-Format vom großen Kartenhersteller gesehen hast, weißt du das alles über Relationen läuft :sunglasses:
Aber das ist ja nicht gewünscht :rage:

Man kann aber nicht Objekte auf Relationen reduzieren, wo die Abbildung der Geometrie und relativen Lage zu anderen Objekten unbedingt nötig ist. Die Geometrie bildet man meiner Meinung nach am besten mit Flächen ab, die ganzen restlichen Eigenschaften dann über Relationen.

Edit: Ach ja, und nachsehen können ersetzt nicht das selbst nachdenken und heißt auch noch lange nicht, das so ein Modell auch gut für OSM sein muß.

Für das rendering mag das stimmen. Hier geht es aber primär um routing. Und solange noch keine Möglichkeit in Sicht ist, die routing über Flächen ermöglicht, bringt ein Flächenmodell zu diesem Problemkreis nichts. Somit ist es hier auch müßig, über den Sinn zu diskutieren, Straßen usw. als Fläche abzubilden. Da beißen sich nun mal zwei Ansprüche an OSM. :confused:

Das verstehe ich nicht. Es ist doch bei einfachen Flächen kein Problem eine Mittelline zu finden. Da nimmt man sich einfach die beiden Seiten und teilt den Abstand zwischen ihnen durch zwei. Schwierig ist das nur bei komischen Flächengebilden, wo die rechte und Linke Seite mit Oben und Unten verwechselbar ist. Und fürs Routing braucht es dann einen Vorverabrbeitungsschritt.
Aber 3D Grafik in Spielen sind ja auch nicht auf dem C64 entstanden.

Klar geht das irgendwie mit entsprechendem preprocessing. Die Frage ist nur wann. Und wie soll man der Fläche etwa bei oneway eine Richtung geben?

Zumndest ist es leichter ein paar einfache Richtungen für den Router als Metadaten anzugeben, als wie bisher oft versucht wurde, eine komplexe Objektgeometrie in ein paar Tags zu fassen.
Man kann ja zum Beispiel eine Relation type=oneway mit den Rollen from und to an die passenden Punkte der Fläche taggen, dann geht das Routing auch mit Fläche. Zusätzlich würde ich es auch so machen, das die Relation für die Fahrbahn (z.B. type=carriageway), sowohl flächige als auch Linienobjekte als generische Spur (Spurobjekt für alle Fahr-/Gehwege, von mir bisher mit lane=yes vorgeschlagen) enthalten kann, so kann man je nach Datenlage wie z.B. Luftbilder, die Spuren als Linen oder als Flächen taggen. Aus Rückwärtskompatibilitätsgründen kann man dann noch (vielleicht als Rolle highway) den alten highway=, da wo er noch, an Stelle der Einzelspuren, existiert, mit in die Relation für die Fahrbahn packen und die neuen Spuren an evtl. vorhandenen highwy=-Reste anschließen. Das nur mal so als schnelle Idee.

Es ginge beispielsweise so: Man definiere die Fläche als Menge ihrer Kanten. Dann definiere man für jede Kante, ob man die Fläche über diese Kante betreten kann oder nicht und ob man die Fläche über diese Kante verlassen kann oder nicht. Mit zusätzlichen Relationen könnte man eventuell noch Dinge ausdrücken wie ‘wenn man die Fläche durch Kante A betreten hat, kann man sie durch Kante B nicht verlassen’, aber theoretisch sollte das durch Aufbrechen der Fläche auch direkt möglich sein. Routing würde dann im Prinzip wie jetzt erfolgen, nur dass statt Knoten Flächen genommen werden (was aber keinerlei Unterschied macht) und die Kanten zwischen den Knoten der Beziehung ‘die Flächen teilen sich mindestens eine Kante von der aus man die erste Fläche verlassen und die zweite betreten kann’ (was ohne Preprocessing aufwendig ist - mit Preprocessing kann man daraus aber einen Routinggraphen erstellen, der dem jetzigen absolut identisch ist).

Ja, mir ist klar, das so ein System absolut unerfassbar wäre. Es geht nur um die grundsätzliche Möglichkeit, das durch Flächen auszudrücken. In dem Fall sogar mit dem angenehmen Nebeneffekt, dass der Oneway nur der Spezialfall ist, dass man durch die Ausgangskanten nicht rein kommt (und theoretisch durch die Eingangskanten nicht raus).

Das scheint mir soweit ich das sehe die einzig sinnvolle Lösung zu sein. Weil meine schenlle Idee scheitert ja schon am nächsten Kreisverkehr. Durch Auftrennen der Flächen kann man kein oneway=yes darstellen, da braucht man immer eine Relation. Die Routingleute müssen ja eh eine Vorverarbeitung machen, sei es weil sie maxspeed=, surface= oder die Zahl der Spuren/Ampeln in eine passende Metrik für die Kante umrechenen müssen. Von daher kann vorher auch noch der Routinggraph mit erstellt werden.

So unerfassbar ist das gar nicht, mal abgesehen vom allgemeinen Problem, wie man die ganze Komplexität durch Software ein passende Daten und am besten noch Wizards vom Durchschnittsmapper abschirmt.
Das automatische Erstellen der Realtionen sollte im Normalfall kein großes Problem darstellen. Spontan fallen mir da folgende Fälle ein:

  1. Die Flächen können beidseitig betreten oder verlassen werden, dieser Fall sollte der angenommene Standardfall sein und tritt üblicherweise auf wenn zum Beispiel landuse=grass an einen Fußweg angrenzt.
  2. Ein building=* grenzt an die Spur an, dann kann automatisch eine Relation erstellt werden, das man die Fläche nicht in das Haus building=* verlassen kann erstellt werden. Außerdem müßte man aber noch zusätzlich eine Relation dafür erstellen, daß man üeber den Eingang (building=entrance mit auf der Schnittlinie) doch ins Haus kommt.
  3. Spur A grenzt an Spur B. Da Fragt man den Mapper, ob man nur von A nach B oder nur von B nach A kommt, oder ob beides möglicht ist und erstellt automatisch eine Relation.

Ja, ich habe auch nochmal drüber nachgedacht und bin zu dem Schluss gekommen, dass es durchaus erfassbar wäre (ohne zusätzliche Editorunterstützung nur mit heutigen Mitteln allerdings schwer). Theoretisch bräuchte man übrigens keine Relation für den building=entrance. Denn eigentlich gehört der in einer Flächendarstellung als Linie und nicht als Punkt repräsentiert und schon ist das Problem gelöst (Alternativ kann man für bestimmte Dinge wie building=entrance auch einfach direkt festlegen, dass das auch als node wie eine Zu- und Ausgangskante gilt zu allen Flächen die den Punkt enthalten). Problematischer ist, dass man den Punkt über die Flächenrelation der Fläche zwangsweise zuordnen muss, denn er wird theoretisch ja in den Außenlinien von mindestens zwei Flächen liegen, gehört logisch aber nur zu einer.