Sascha Silbe schrieb:
> 2. Repräsentation eines "zusammengesetzten" Wegs:
>    - Es gibt verschiedenartige Teile: Fahrbahn, Bürgersteig, Radweg (auf
>      Fahrbahn oder Bürgersteig).
>    - Anordnung der Teile ist potentiell beliebig, wobei die Fahrbahn bei 
> OSM
>      derzeit die Mitte eines Weges darstellt.
>    - Wenn wir schon dabei sind, können wir auch gleich die Fahrbahn in 
> Spuren
>      aufteilen.
>      Gibt es eigentlich irgendwo Straßen, die z.B. einen Bürgersteig in der
>      Mitte haben? Der Fall wäre dann als Nebeneffekt auch abbildbar. :)
>    - "Normalfall" für die Anordnung der Teile ist abhängig vom Straßentyp:
>      - außerorts: nur Fahrbahn
>      - residential: Bürgersteig+Fahrbahn+Bürgersteig
>      ...
>    - Die Teile/Spuren haben unterschiedlichen Breiten, Straßenbeläge,
>      Einschränkungen (z.B. Mindestgeschwindigkeit 80/60/keine
>      links/mitte/rechts).
>    - Unterschiedliche Spuren führen ggf. zu unterschiedlichen Wegen, das
>      sollte auch irgendwie repräsentiert werden (Stichwort: Spurassistent
>      vom Navi).
>    - Tagging wie üblich nur von Sonderfällen bzw. wo genauere Infos bekannt
>      sind (siehe auch "Normalfall"-Abschnitt) - eigentlich klar, aber um 
> Dich
>      (Frederik) zu beruhigen schreib ichs lieber nochmal explizit auf :)


Also mir fallen jetzt zwei Möglichkeiten ein, quasi den Straßenaufbau zu
mappen.


a) Tags wie cycleway/footway/path mit left/right/both Angabe.

Dazu nimmt man erstmal an, dass in der Mitte immer die Fahrbahn verläuft
und sich an den Seiten ein Fußweg, Fahrradweg oder beides befindet, die
man mit cycleway=.. oder footway=.. angibt. Das kann man natürlich noch
weiter verfeinern, indem man noch Eigenschaften für die einzelnen Seiten
angibt.

Beispiel 1:

  highway=residential
  footway=right (nur auf der rechten Seite ein Fußweg)
  footway.surface=cobblestone (der Fußweg hat Kopfsteinpflaster als Belag)

Der Punkt '.' gibt also eine weitere Eigenschaft für einen Tag an, in
diesem Fall die Oberfläche des Fußwegs.

Beispiel 2:

  highway=residential
  footway=both (auf beiden Seiten ein Fußweg)
  footway:left.surface=cobblestone (die linke Seite mit Kopfsteinpflaster)
  footway:right.surface=unpaved (die rechte Seite ist nicht versiegelt)

Der Punkt '.' gibt also wieder eine weitere Eigenschaft an, diesmal
allerdings nicht für den Fußweg allgemein, sondern speziell für den
rechten bzw. linken Fußweg. Der Doppelpunkt gibt also ein Attribut für
den Tag an, in diesem Fall welchen der beiden Fußwege man meint.
Natürlich könnte man für beides auch die gleiche Notation verwenden und
je nach Key entscheiden was es bedeutet.


b) Die Anzahl der Wege angeben und denn einfach von links nach rechts
durchnummieren.

Dazu ist eine Straße erstmal ein neutrales Objekt, das unterschiedlich
aufgebaut sein kann. Man gibt die Anzahl der Wege an und gibt dann für
jeden einzelnen an, was es ist.

Beispiel 1:

  highway=residential
  ways=2
  way:1=residential (auf der linken Seite die Fahrbahn)
  way:2=footway (rechts ein Fußweg)
  way:2.surface=cobblestone (der Fußweg hat Kopfsteinpflaster als Belag)

Beispiel 2:

  highway=residential
  ways=3
  way:1=footway
  way:1.surface=cobblestone (die linke Seite mit Kopfsteinpflaster)
  way:3=footway
  way:3.surface=unpaved (die rechte Seite ist nicht versiegelt)
  way:2=residential (in der Mitte die Fahrbahn)


Natürlich müsste man das nicht für alle Straßen angeben, es würden
natürlich je nach Straßentyp bestimmte Werte impliziert.

highway=residential impliziert dann z.B.:

a)
  footway=both

b)
  ways=3
  way:1=footway
  way:2=residential
  way:3=footway


Und highway=primary (außerorts):

a)
  footway=none

b)
  ways=1
  way:1=primary


Die Spuren der Fahrbahn könnten davon seperat abgelegt werden, falls man
sowas überhaupt will. Eine normale zweispurige Straße sähe dann so aus
(natürlich für die meisten Straßen wieder automatisch je nach Straßentyp):

  lanes=2
  lane:1.oneway=-1
  lane:2.oneway=yes



Größeres Beispiel:

footway
  |cycleway (lane auf der Straße)
  | | lane1
  | |  | lane2
  | |  |  |footway/cycleway (gemischt)
  | |  |  | |
|#| |  '  |#|
|#| |  '  |#|
|#| |  '  |#|   ^
|#| |  '  |#|  /|\
|#| |  '  |#|   |
|#| |  '  |#|   |
|#| |  '  |#|   |
|#| |  '  |#|
|#| |  '  |#|
  1 2   3   4

a)

  highway=tertiary
  footway=left
  cycleway=left
  cycleway.type=lane
  path=right
  path:right.bicycle=designated
  path:right.foot=designated

b)

  highway=tertiary
  ways=4
  way:1=footway
  way:2=cycleway
  way:2.type=lane
  way:3=tertiary
  way:4=path
  way:4.bicycle=designated
  way:4.foot=designated


Wenn der Weg jetzt aus irgendeinem Grund umgedreht werden sollte:

|#|  '  | |#|
|#|  '  | |#|
|#|  '  | |#|
|#|  '  | |#|
|#|  '  | |#|
|#|  '  | |#|
|#|  '  | |#|
|#|  '  | |#|
|#|  '  | |#|
  4   3   2 1 (vorher)
  1   2   3 4 (danach)

a) right und left tauschen
b) Anzahl der Ways - Weg Nummer + 1 (aus der Fahrbahn 3 oben wird dann
also 4-3+1=2)

Das sollte beides der Editor automatisch machen können.

Die Methode a) dürfte für Mapper vielleicht etwas leichter zu handhaben
sein, meistens ist es ja auch kürzer. Allerdings ist Methode b)
natürlich variabler und wenn es im Editor z.B. ein extra Tool dafür gäbe
um sowas aufzubauen, wäre es sicher auch nicht schwer zu handhaben.
Beide Methoden lassen jedenfalls immernoch das bisherige Tagging zu und
erweitern es bloss um mehr Informationen. Allerdings kann ich nicht
beurteilen, ob Renderer oder Router sich damit under Umständen schwer
tun würden.

Gruß

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an