< DE:User:Ömmes

DE:User:Ömmes/Wayparts


please change curb to kerb

and remove this afterwards. Curb is American English, we agreed to use British English for ease of editing (not having to wonder which way it is).


Ziel von Wayparts

Wayparts sollen es ermöglichen, einen Weg nicht nur anhand der Position, Funktion etc. zu definieren, sondern auch dessen Unterteilung zu erfassen. Diese Teile sind ein normaler Fahrstreifen, Fahrradweg, Fußweg/Bürgersteig, Parkstreifen usw. Jedem Weg können so viele Teile hinzugefügt werden wie nötig. Jeder waypart kann anhand bekannter Tags genauer beschrieben werden: access, width, divider usw.

Um wayparts flexibel zuweisen zu können, werden diese als Relationen angelegt. Es gibt Relationen vom Typ "waypart" für einen einzelnen Teil und "wayparts", um mehrere Teile in 1 Relation gesammelt zu definieren.

Jede Relation benötigt mindestens ein Mitglied, nämlich den Weg, zu dem sie gehört. Zusätzlich kann ein Start- und Endpunkt (Node) angegeben werden. Damit besteht die Möglichkeit, einen Weg in mehrere Bereiche zu teilen, ohne diesen in 2 Wege trennen zu müssen; so kann ein Weg z. B. mit 2 Teilen starten, aber der Mitte dann mit 3 fortgeführt werden. Ebenso können mehrere aneinanderhängende Wege einer Relation zugewiesen werden, deren Startpunkt ein Node des ersten Wegs und der Endpunkt im letzten Weg liegt. Wayparts sind also nicht auf Beginn und Ende eines Weges begrenzt.

Wayparts erfassen

Jeder Teil eines Weges - ein waypart - erhält eine Nummer, die die Position angibt. Positivie Zahlen stehen für vorwärts, negative für rückwärts gerichtete Teile.

Eine wayparts-Relation wird verwendet, um die Hauptspuren/-wegteile anzugeben, also i. d. R. Teile, die über eine größere Entfernung bestehen. Ein einzelner waypart kann weitere, zusätzliche Teile ergänzen.

Beispiel: Eine Autobahn mit 2 Fahrstreifen und einigen Ausfahrten. Die beiden Hauptspuren werden in einer wayparts-Relation angegeben, jede Verzögerungs- oder Beschleunigungsspur als waypart unter Angabe des Start- und Endpunkts.

waypart-Relation (einzelner Teil)

Eigenschaften/Tags

Schlüssel Erforderlich Wert Erklärung
typejawaypartImmer "waypart"
partjaNummer/TextPositive (vorwärts) oder negative (rückwärts) Number. Die Nummer kann durch Buchstaben oder Dezimalstellen ergänzt werden, z. B. 1, 1.2, -1, -1b.
parttypeneinTextIn der Regel ein Wert wie beim highway-Tag, z. B. cycleway, footway. Wenn nicht angegeben, sollte der highway-Wert des Weges übernommen werden. Es sind auch andere Werte möglich wie etwa "gras_strip" für einen Gras-/Grünstreifen.
dividerneinTextTrenner des Teils; zur Mitte des Weges hin. Beispiele: line, doubbleline, dash, doubbledash, curb, none
outer_dividerneinTextWie divider, aber zur äußeren Seite des Weges hin.
(outer_)divider:widthneinTextBreite des Trenners in Metern
(outer_)divider:crossableneinTextyes, no oder Liste von access-Angaben (z. B. "foot;bicycle"). Für gebräuchliche Trenner wie z. B. eine durchgezogene Linie sollte ein Wert implizit vorgegeben sein, sodass dieser nicht jedes Mal angegben werden muss (es sei denn, er weicht ab).
directionneinTextAngabe der Richtung: oneway, opposite, both, variable. Standard ist "oneway" außer für Fußwege.

Die Richtung ist relativ zur Angabe von Start- und Endpunkt (siehe unten). Vorwärts-Teile zeigen also vom Start- zum Endpunkt, Rückwärts-Teile vom End- zum Startpunkt, standardmäßig als "Einbahnweg" (oneway). Ein rückwärtiger Gegenrichtungs-Teil ("opposite backward part") kann z. B. vom Start- zum Endpunkt befahren werden.

direction_hintneinTextHinweis auf die Richtung des Fahrstreifens/Teils: left, right, straight on, half left, half right etc. Könnte zum Beispiel als Pfeil angezeigt werden.
destinationneinTextZielangabe(n) der Spur (was auf dem zugehörigen Straßenschild als Ziel(e) angegeben ist).
widthneinNummerBreite des Teils in Metern
andere Tags für Wegeneinaccess, surface usw.

Mitglieder

Rolle Erforderlich Mehrfach Wert Erklärung
wayjaja wayWege, die zur Relation gehören. Mehrere Wege müssen korrekt in eine Richtung sortiert sein.
startneinnein node
endneinno node
vianeinja nodeFür geschlossene Wege (Weg im Kreis) muss ein Zwischenpunkt angegeben, um die Richtung der Relation anzugeben
toneinja waypart, wayDer Weg oder waypart (die Relation) auf den man von diesem Teil aus gelangt. Zum Beispiel die nach rechts führende Straße bei einer Rechtsabbiegerspur.


wayparts-Relation (ein oder mehrere Teile)

In einer wayparts-Relation werden ein oder mehrere Teile für einen Weg angegeben. Die einfachste Verwendung ist, eine Zahl für den Tag parts anzugeben.

Einzelne Teile können mit partX und part-X angegeben werden, wobei X die Nummer des Teils ist. Weitere Eigenschaften/Tags können als partX:key und part-X:key angegeben werden.

Eigenschaften/Tags

Schlüssel Erforderlich Mehrfach Wert Erklärung
typejaneinwaypartsImmer "wayparts"
partsja, wenn keine Teile einzeln definiert sindneinNummerAnzahl automatisch generierter Teile. Hilfreich, um Teile mit gleichen Eigenschaften anzugeben. Die Anzahl wird in Vorwärts- und Rückwärts-Teile getrennt. Bei gerader Anzahl, gibt es gleich viele Vorwärts- und Rückwärts-Teile, bei ungerader Anzahl 1 Vorwärts-Teil mehr.
parts:forwardneinneinNummerAnzahl auomatisch generierter Vorwärts-Teile. (Überschreibt den aus parts errechneten Wert.)
parts:backwardneinneinNummerAnzahl auomatisch generierter Rückwärts-Teile. (Überschreibt den aus parts errechneten Wert.)
keys...neinjaTextWeitere (Standard-)Eigenschaften/Tags für alle Teile.

Mögliche sind die gleichen Angaben wir bei einem einzelnen waypart (divider, direction, direction_hint, destination) und alle anderen Tags für Wege.

partXneinjaTextDie Art des Vorwärts-Teils Nummer X. In der Regel ein Wert wie beim highway-Tag, z. B. cycleway, footway. Wenn nicht angegeben, sollte der highway-Wert des Weges übernommen werden. Es sind auch andere Werte möglich wie etwa "gras_strip" für einen Gras-/Grünstreifen.
part-XneinjaTextDie Art des Rückwärts-Teils Nummer X. In der Regel ein Wert wie beim highway-Tag, z. B. cycleway, footway. Wenn nicht angegeben, sollte der highway-Wert des Weges übernommen werden. Es sind auch andere Werte möglich wie etwa "gras_strip" für einen Gras-/Grünstreifen.
partX:keys...neinjaTextWeitere (Standard-)Eigenschaften/Tags für Vorwärts-Teil Nummer X.

Mögliche sind die gleichen Angaben wir bei einem einzelnen waypart (divider, direction, direction_hint, destination) und alle anderen Tags für Wege.

part-X:keys...neinjaTextWeitere (Standard-)Eigenschaften/Tags für Rückwärts-Teil Nummer X.

Mögliche sind die gleichen Angaben wir bei einem einzelnen waypart (divider, direction, direction_hint, destination) und alle anderen Tags für Wege.

Mitglieder

Rolle Erforderlich Mehrfach Wert Erklärung
wayjaja wayWege, die zur Relation gehören. Mehrere Wege müssen korrekt in eine Richtung sortiert sein.
startneinnein node
endneinnein node
vianeinja nodeFür geschlossene Wege (Weg im Kreis) muss ein Zwischenpunkt angegeben, um die Richtung der Relation anzugeben
toneinja waypart, wayDer Weg oder waypart (die Relation) auf den man von diesem Teil aus gelangt. Zum Beispiel die nach rechts führende Straße bei einer Rechtsabbiegerspur.
partX:toneinja waypart, wayDer Weg oder waypart (die Relation) auf den man vom Vorwärts-Teil X aus gelangt. Zum Beispiel die nach rechts führende Straße bei einer Rechtsabbiegerspur.
part-X:toneinja waypart, wayDer Weg oder waypart (die Relation) auf den man vom Rückwärts-Teil X aus gelangt. Zum Beispiel die nach rechts führende Straße bei einer Rechtsabbiegerspur.


Beispiele

Schnellstraßenabfahrt

                 |
                 E
                 |
 <==============]|[========     a, b, c, d: Nodes
                ]D[
 ==a=====b== A =]|[=======>     A, B, C, D, E: Ways
         \_____  |
             B \ C
                \|
                 c
                 |
                 d
                 |
                 |


Way A highway=trunk, oneway=yes

Way B highway=trunk_link, oneway=yes

Way C highway=primary

Way D highway=primary, bridge=yes, layer=1

Way E highway=primary


Relation 1

type=wayparts

parts:forward=2

divider=dash

Rolle Element
way Way A

Relation 2

type=waypart

part=3

divider=doubbledash

direction_hint=right

Rolle Element
start Node a
way Way A
end Node b
to Relation 3 (or Way B)

Relation 3

type=wayparts

parts=1

Rolle Element
way Way B
to Relation 5

Relation 4

type=wayparts

parts=2

divider=dash

Rolle Element
way Way C
way Way D
way Way E

Relation 5

type=waypart

part=2

divider=doubbledash

Rolle Element
start Node c
way Way C
end Node d

Autobahnabfahrt (Live-Beispiel)

An der Autobahnabfahrt A 2/B 239 "Herford/Bad Salzuflen" habe ich wayparts eingetragen, diese sind im Changeset 3125502 zu finden.

http://www.openstreetmap.org/?lat=52.0914&lon=8.6951&zoom=13


Wenn dieser Bereich in JOSM geladen wird, sollte er mit dem Wayparts plugin etwa so aussehen:

JOSM-Plugin

Das JOSM-Plugin für Wayparts ist noch in einem sehr frühen Entwicklungsstadium, es darf aber gerne ausprobiert werden.

Download: http://www.ömmes.de/osm/wayparts.jar

Das JAR-Archiv muss im JOSM-Plugin-Ordner abgespeichert werden: siehe http://wiki.openstreetmap.org/wiki/JOSM/Plugins#Manually

Für das Plugin bitte die "JOSM latest"-Version benutzen. Da die aktuelle Latest-Version anscheinend fehlerhaft ist, bitte dieses Build benutzen: http://josm.openstreetmap.de/download/josm-snapshot-2447.jar --Ömmes 18:50, 15 November 2009 (UTC)

Benutzung

Das Plugin fügt einen Layer ein, der die Wayparts des aktiven OSM-Layers darstellt. Der Wayparts-Layer kann entfernt werden, derzeit aber nicht manuell wieder hinzugefügt werden. Lädt man neue Daten, ist er aber automatisch wieder da...

Bekannte Probleme

  • Wayparts über geschlossene Wege werden nicht erkannt und könnten in einem Fehler enden
  • Lücken in den Wegen einer Relation (wenn zwei Wege nicht aneinander hängen), werden gerendert, als gäbe es einen Weg zwischen diesen
  • Überlappende Waypart-Relationen in Gegenrichtung werden auf der falschen Seite gerendert --Ömmes 18:50, 16 November 2009 (UTC)
  • Überlappende Waypart-Relationen haben u. U. keinen Trenner --Ömmes 18:50, 16 November 2009 (UTC)
  • Wenn man etwas löscht oder hinzufügt, werden alle Wayparts neu eingelesen. Das könnte sehr langsam sein...
  • Nur cycleway, footway und grass_strip werden anders als Fahrstreifen gerendert
  • Nur dash, doubbledash, line, grass_strip und curb werden als Trenner gerendert
  • "to"-Mitglieder einer Waypart-Relation werden beim Rendern nicht beachtet. Die Fahrspuren/Teile können also falsch "verbunden" sein
  • Das Konzept ist nicht routbar.

Todo

  • Farben und Linien in einer XML-Datei definieren
  • Performance verbessern
  • Bekannte Probleme lösen
  • Editor zum Anlegen von Wayparts integrieren
This article is issued from Openstreetmap. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.