DE:User:Ömmes/Wayparts

From OpenStreetMap Wiki
Jump to navigation Jump to search


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.

Relation waypart-Relation (einzelner Teil)

Eigenschaften/Tags

Schlüssel Erforderlich Wert Erklärung
type ja waypart Immer "waypart"
part ja Nummer/Text Positive (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.
parttype nein Text 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.
divider nein Text Trenner des Teils; zur Mitte des Weges hin. Beispiele: line, doubbleline, dash, doubbledash, curb, none
outer_divider nein Text Wie divider, aber zur äußeren Seite des Weges hin.
(outer_)divider:width nein Text Breite des Trenners in Metern
(outer_)divider:crossable nein Text yes, 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).
direction nein Text Angabe 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_hint nein Text Hinweis auf die Richtung des Fahrstreifens/Teils: left, right, straight on, half left, half right etc. Könnte zum Beispiel als Pfeil angezeigt werden.
destination nein Text Zielangabe(n) der Spur (was auf dem zugehörigen Straßenschild als Ziel(e) angegeben ist).
width nein Nummer Breite des Teils in Metern
andere Tags für Wege nein access, surface usw.

Mitglieder

Rolle Erforderlich Mehrfach Wert Erklärung
way ja ja Linienzug way Wege, die zur Relation gehören. Mehrere Wege müssen korrekt in eine Richtung sortiert sein.
start nein nein Knoten oder Punkt node
end nein no Knoten oder Punkt node
via nein ja Knoten oder Punkt node Für geschlossene Wege (Weg im Kreis) muss ein Zwischenpunkt angegeben, um die Richtung der Relation anzugeben
to nein ja Relation waypart, Linienzug way Der 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.


Relation 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
type ja nein wayparts Immer "wayparts"
parts ja, wenn keine Teile einzeln definiert sind nein Nummer Anzahl 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:forward nein nein Nummer Anzahl auomatisch generierter Vorwärts-Teile. (Überschreibt den aus parts errechneten Wert.)
parts:backward nein nein Nummer Anzahl auomatisch generierter Rückwärts-Teile. (Überschreibt den aus parts errechneten Wert.)
keys... nein ja Text Weitere (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.

partX nein ja Text Die 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-X nein ja Text Die 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... nein ja Text Weitere (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... nein ja Text Weitere (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
way ja ja Linienzug way Wege, die zur Relation gehören. Mehrere Wege müssen korrekt in eine Richtung sortiert sein.
start nein nein Knoten oder Punkt node
end nein nein Knoten oder Punkt node
via nein ja Knoten oder Punkt node Für geschlossene Wege (Weg im Kreis) muss ein Zwischenpunkt angegeben, um die Richtung der Relation anzugeben
to nein ja Relation waypart, Linienzug way Der 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:to nein ja Relation waypart, Linienzug way Der 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:to nein ja Relation waypart, Linienzug way Der 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
                 |
                 |


Linienzug Way A highway=trunk, oneway=yes

Linienzug Way B highway=trunk_link, oneway=yes

Linienzug Way C highway=primary

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

Linienzug Way E highway=primary


Relation Relation 1

type=wayparts

parts:forward=2

divider=dash

Rolle Element
way Linienzug Way A

Relation Relation 2

type=waypart

part=3

divider=doubbledash

direction_hint=right

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

Relation Relation 3

type=wayparts

parts=1

Rolle Element
way Linienzug Way B
to Relation Relation 5

Relation Relation 4

type=wayparts

parts=2

divider=dash

Rolle Element
way Linienzug Way C
way Linienzug Way D
way Linienzug Way E

Relation Relation 5

type=waypart

part=2

divider=doubbledash

Rolle Element
start Knoten oder Punkt Node c
way Linienzug Way C
end Knoten oder Punkt 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:

Beispiel A 2/B 239 "Herford/Bad Salzuflen"

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

Links zu anderen relevanten Seiten im Wiki