[Talk-de] Strassenbegleitende Wege aller Art
Sebastian Hohmann
mail at s-hohmann.de
Do Aug 28 22:58:21 UTC 2008
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ß
Mehr Informationen über die Mailingliste Talk-de