User:Hubert87/DoubleRepresentation

From OpenStreetMap Wiki
Jump to navigation Jump to search

Please feel free to add your idea and to correct any typos

On this page, I am trying to formalize my ideas for double representation of road adjacent foot ways and cycle ways. I will do both of them, because the problems are very similar. I am writing down some possibilities, which can be futher discussed and refined.

The Problem

The problem I am trying to solve here is, that a sidewalk can only be tagged as sidewalk=* on the street (e.g highway=residential) or as a separete OSM-way with highway=footway + footway=sidewalk at the moment. The same goes for cycleways. This holds some problems for mappers, renderes and router.

  • Mappers, because there is are two contradicting ways for mapping a foot way / cycle way
  • Renderes, because depending on the zoom level, it might be better to draw the way in regard to the main road way (lets say up to zoom level 16 ) or as a separed OSM-Way for a better representation of the foot ways position in regard to other object like trees, parking spaces, or on complicated junctions (lets say for zoom level 16 and higher). And in case of both schemes present, too many lines might be rendered.
  • Routers, positioning of the routing object on the street or foot way / cycle way might be complicated. In some cases it might be more useful to give routing instructions in a more general form (only directions along the main road way) or in a very detailed way, depending on the positioning accuracy. Also routing across a street might be more complicated, when using highway=footway instead of the main road.

But the use of the OSM data is very wide spread and only entering data for one specific use is problematic. At the moment the only option to resolve the problem, is to enter the information about the foot way / cycle way in both forms. As data suplementing a main road highway=residential) + sidewalk=* and as a seperad OSM-Way in the form of highway=footway + {{tag|footway|sidewalk}. The problem is, that there has to be a posiblity for data consumers to seperate and fiter both types of information so that depending on their need, the data comsumer of use only information of the main road and ingnore the separet OSM-Way or vise versa.

An other problem which could incoporate into this concept is the distiction between road adjecend foot ways that are separeted form the road way only by a kerb and others. This might be interresting for some data consumers , e.g. routing programs.

Options

These are the in my oppionon most destinct Variations. The names of the new tags can be changed


Option A

The tagging scheme

  • is mostly symmetrical.
  • has tags that are rearanged or often new.
  • differtiates between near and far sidepaths on the roadway and sidepath
  • can cause double rendered lines on the map

New Tags:

Description Sketch EITHER
highway=*
OR
highway=path/footway/cycleway
BOTH
highway=*
AND
highway=path/footway/cycleway
near sidepath Cycle tracks sidewalks left right.svg cycleway:right/left/both=sidetrack
AND/OR
footway:right/left/both=sidewalk
OR
path:right/left/both=sideway
footway=sidewalk
AND/OR
cycleway=sidetrack
OR
path=sideway

foot=designated
bicycle=designated
segregated=yes
cycleway:right/left/both=sidetrack
cycleway:right/left/both:sidepath=yes
AND/OR
footway:right/left/both=sidewalk
footway:right/left/both:sidepath=yes
OR
path:right/left/both=sideway
path:right/left/both:sidepath=yes
footway=sidewalk
AND/OR
cycleway=sidetrack
OR
path=sideway

foot=designated
bicycle=designated
segregated=yes
sidepath=yes
far sidepath Cycle tracks left right footways.svg cycleway:right/left/both=track
AND/OR
footway:right/left/both=yes
OR
path:right/left/both=yes
foot=designated
bicycle=designated
segregated=yes
cycleway:right/left/both=track
cycleway:right/left/both:sidepath=yes
AND/OR
footway:right/left/both=yes
footway:right/left/both:sidepath=yes
OR
path:right/left/both=yes
path:right/left/both:sidepath=yes
foot=designated
bicycle=designated
segregated=yes
sidepath=yes

Option B

This tagging scheme

  • uses new values "sidepath","sidetrack","sideway"
  • assumes that "sidetrack", "sideway" and "sidewalk" are also to be considered "sidepaths"
  • differentiates between near and far sidepaths only with douple representation.
  • moves sidewalk=right/left/both (= sidewalk:right/left/both=yes) to footway:right/left/both=yes (= footway=right/left/both) for symetry reasons.
  • is safe for renderes. It will only show one line, unless they update thier rules.
  • uses the same values on the street and on the sidepath.
  • "favors" separate renderd sipdepath indirectly.
Description Sketch EITHER
highway=*
OR
highway=cycleway/footway/path
BOTH
highway=*
AND
highway=cycleway/footway/path
near sidepath Cycle tracks sidewalks left right.svg cycleway:right/left/both=track
AND/OR
footway:right/left/both=yes
OR
path:right/left/both=yes
bicycle=designated
foot=designated
segregated=yes
footway:right/left/both=sidewalk
AND/OR
cycleway:right/left/both=sidetrack
OR
path:right/left/both=sideway
footway=sidewalk
AND/OR
cycleway=sidetrack
OR
path=sideway

bicycle=designated
foot=designated
segregated=yes
far sidepath Cycle tracks left right footways.svg cycleway:right/left/both=sidepath
AND/OR
footway:right/left/both=sidepath
OR
path:right/left/both=sidepath
footway=sidepath
AND/OR
cycleway=sidepath
OR
path=sidepath

bicycle=designated
foot=designated
segregated=yes

sidewalk=* vs footway=*

Overpass-Querries as of 2015-01-14

Querry Count
[out:json][timeout:240];
(
way["footway"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
);
out count;
39,027
[out:json][timeout:240];
(
way["footway"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
way["footway:right"]["highway"!="footway"]"highway"!="cycleway"]["highway"!="path"];
way["footway:left"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
way["footway:both"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
);
out count;
40,245
[cout:json][timeout:240];
(
way["sidewalk"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
);
out count;
491,305,
[out:json][timeout:240];
(
way["sidewalk"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
way["sidewalk:right"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
way["sidewalk:left"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
way["sidewalk:both"]["highway"!="footway"]["highway"!="cycleway"]["highway"!="path"];
);
out count;
492,030

Variations

Variation 1: Relation

Use a steet-relation to combine the main road with the adjecend foot way. No distictions between only kerb seperated foot ways and other road adjacend foot ways possible. A lot of work to set a relation for every street. A data comsumer can not know, wether a road has an adjacent way by just checking whether a road is a member of a (street-)Relation . It must also check wether that relation also has a adjecent way as a member. This seems really difficult and is therfore not a workable solution to the problem.

How ever it does not mean the such a relation shouldn't be created. This way a "secure" link between the adjacent way and the road way is given.

Variation 2: Sidepath key

Adding a new key sidepath=yes to the OSM-ways using a appropriate namespace. No changes to existing tagging scheme. Does not consider the difference between near and far sidepaths. Simpler Version of the street-relation.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
*:sidepath=yes
highway=*
sidepath=yes
far sidepath Cycle tracks left right footways.svg highway=*
*:sidepath=yes
highway=*
sidepath=yes

Variation 3: Sidepath or sidewalk subvalues

Highly symetrical. Differentiates between near and far side ways. Uses "footway" instead of "sidewalk" and only one of "footway" or "cycleway" or "path". Uses the value *=sidepath for far sidepaths and *=sidewalk for near sidepaths. Wierd for cycleway=sidewalk

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
footway/cycleway/path=right/left/both
footway/cycleway/path:right/left/both=sidewalk
highway=footway/cycleway/path
footway/cycleway/path=sidewalk
far sidepath Cycle tracks left right footways.svg highway=*
footway/cycleway/path=right/left/both
footway/cycleway/path:right/left/both=sidepath
highway=footway/cycleway/path
footway/cycleway/path=sidepath

Variation 4: Differentiated cycleway and footway tagging

Symetrical. Differentiates between near and far side ways. Uses "footway" instead of "sidewalk". Uses the value *=sidepath for far sidepaths and footway=sidewalk / cycleway=track for near sidepaths. Need a new Key for road adjanced far cycle way for example cycleway=track, but the name can be different.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
footway=right/left/both
footway:right/left/both=sidewalk
cycleway=right/left/both
cycleway:right/left/both=track
highway=footway/cycleway/path
footway=sidewalk
cycleway=track
far sidepath Cycle tracks left right footways.svg highway=*
footway=right/left/both
footway:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidepath
cycleway=sidepath

Variation 5 : footway and sidewalk different

Differentiates between near and far side ways. Uses "sidewalk=*". Uses the value footway=sidewalk and cycleway=track for near sidepaths and *=sidepath for farsidepaths. Need a new Key for road adjanced far cycle way for example cycleway=track, but the name can be different.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidewalk
cycleway=right/left/both
cycleway:right/left/both=track
highway=footway/cycleway/path
footway=sidewalk
cycleway=track
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidepath
cycleway=sidepath

Variation 6 : Additional sidepath=*

Differentiates between near and far side ways. Uses "sidewalk=*". Uses footway=sidewalk and cycleway=track for near sidepaths and cycleway/footway=sidepath for far sidepaths. sidepath=* is added onto the seperate way/main road to denote that the way is also tagged.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidewalk
cycleway=right/left/both
cycleway:right/left/both=track
sidewalk:right/left/both:sidepath=yes
highway=footway/cycleway/path
footway=sidewalk
cycleway=track
sidepath=yes
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidewalk
sidewalk:right/left/both:sidepath=yes
cycleway=right/left/both
cycleway:right/left/both=track
cycleway:right/left/both:sidepath=yes
highway=footway/cycleway/path
footway=sidepath
cycleway=sidepath
sidepath=yes

Variation 7 : no *=sidepath for road adjacent far ways

Differentiates between near and far side ways. Uses "sidewalk=*". Uses footway=sidewalk and cycleway=track for near sidepaths. Far sidepath have no subkey. sidepath=* is added onto the seperate way/main road to denote that the way is also tagged.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidewalk
cycleway=right/left/both
cycleway:right/left/both=track
sidewalk:right/left/both:sidepath=yes
highway=footway/cycleway/path
footway=sidewalk
cycleway=track
sidepath=yes
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidewalk
sidewalk:right/left/both:sidepath=yes
cycleway=right/left/both
cycleway:right/left/both=track
cycleway:right/left/both:sidepath=yes
highway=footway/cycleway/path
sidepath=yes

Variation 8 : Mixes sidepath=* and *=sidepath

Differentiates between near and far side ways on the adjacent way only. Uses "sidewalk=*". Uses footway=sidewalk and cycleway=track for near sidepaths. Far sidepath have no subkey. Uses sidepath=* on the adjacend waay and *:right/left/both=sidepath on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidewalk
cycleway=track
sidepath=yes
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
sidepath=yes

Variation 8a : sidetrack instead of track

Differentiates between near and far side ways on the adjacent way only. Uses "sidewalk=*". Uses footway=sidewalk and cycleway=sidetrack for near sidepaths. Far sidepath have no subkey. Uses sidepath=* on the adjacend waay and *:right/left/both=sidepath on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidewalk
cycleway=sidetrack
sidepath=yes
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
sidepath=yes

Variation 9 : No sidepath=*

Differentiates between near and far side ways on the adjacent way only. Uses "sidewalk=*". Uses footway=sidewalk and cycleway=track for near sidepaths and footway/cycleway=sidepath for far sidepaths. Uses *:right/left/both=sidepath on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidewalk
cycleway=track
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidepath
cycleway=sidepath

Variation 10 : *=sidetrack on street and no sidepath=*

Differentiates between near and far side ways. Uses "footway=*" instead of "sidewalk=*". Uses footway=sidewalk and cycleway=sidetrack for near sidepaths and footway/cycleway=sidepath for far sidepaths. Uses *:right/left/both:sidepath=* on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
footway=right/left/both
footway:right/left/both=sidewalk
cycleway=right/left/both
cycleway:right/left/both=sidetrack
highway=footway/cycleway/path
footway=sidewalk
cycleway=sidetrack
far sidepath Cycle tracks left right footways.svg highway=*
footway=right/left/both
footway:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidepath
cycleway=sidepath

Variation 10a : track instead of sidetrack on adjacent way

Differentiates between near and far side ways on the adjacent way only. Uses "footway=*" instead of "sidewalk=*". Uses footway=sidewalk and cycleway=track for near sidepaths and footway/cycleway=sidepath for far sidepaths. Uses *:right/left/both=sidepath on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
footway=right/left/both
footway:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidewalk
cycleway=track
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidepath
cycleway=sidepath

Variation 10b : *=sidepath in both cases

Differentiates between near and far side ways on the adjacent way only. Uses "footway=*" instead of "sidewalk=*". Uses footway=sidewalk and cycleway=sidetrack for near sidepaths and footway/cycleway=sidepath for far sidepaths. Uses *:right/left/both=sidepath on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
footway=right/left/both
footway:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidewalk
cycleway=sidetrack
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidepath
cycleway=sidepath

Variation 10c : c/f/p=sidepath on far sidepath

Differentiates between near and far side ways on the adjacent way only. Uses "footway=*" instead of "sidewalk=*". Uses footway=sidewalk and cycleway=sidetrack for near sidepaths and footway/cycleway=sidepath for far sidepaths. Uses *:right/left/both=sidepath on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
footway=right/left/both
footway:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway=sidewalk
cycleway=sidetrack
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway/cycleway/path=sidepath

Variation 12 : decrepates footway=sidewalk

Also possible but not desirable in my opinion.

Does not differentiate between near and far side ways. Uses "footway=*" instead of "sidewalk=*". Decrepates footway=sidewalk and uses footway/cycleway/path=sidepath on all sidepaths. Uses *:right/left/both=sidepath on the main road to denote that the way is double represented.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=*
footway=right/left/both
footway:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway/cycleway/path=sidepath
far sidepath Cycle tracks left right footways.svg highway=*
sidewalk=right/left/both
sidewalk:right/left/both=sidepath
cycleway=right/left/both
cycleway:right/left/both=sidepath
highway=footway/cycleway/path
footway/cycleway/path=sidepath

Comments

Why not use the access tag bicycle=use_sidepath? This key is already more or less established (over 8000 usages), and means there's a separated sidepath mapped that should be used for routing instead of the main way. Direction and side can be included in the tag. F.e.:

Currently, bicycle=use_sidepath is only meant for separated cycleways. For adjacent, but separatedly mapped lanes, you could use bicycle=use_sidelane.

As for the tags on the side ways themselves, it's tempting to use cycleway=*, but this tag is already used to mark the presence of a cycleway on the main way, so shouldn't be double used. In that view, I guess sidepath=yes/no and sidelane=yes/no would work the best.

Sidetrack instead of sidepath (in all occurences above) might also be more clear to mappers. As it conforms to the cycleway=track tag. But sidepath is more established already.

Description sketch tags on main road tags on adjacent way
near sidepath Cycle tracks sidewalks left right.svg highway=primary/secondary/...
foot=use_sidelane
bicycle=use_sidelane
highway=footway/cycleway/path
sidelane=yes
far sidepath Cycle tracks left right footways.svg highway=primary/secondary/...
foot=use_sidepath OR foot=use_sidetrack
bicycle=use_sidepath OR bicycle=use_sidetrack
highway=footway/cycleway/path
sidepath=yes OR sidetrack=yes

I tried to made sure that no keys had colliding meanings, and I tried to follow well-established conventions in the above schema, while trying to keep it simple for the mapper and the data user. I hope this is a valid proposal. --Sanderd17 (talk) 12:51, 20 December 2014 (UTC)

  • Thanks for your addition.
  • use_sidepath: This would work with foot=use_sidepath, but the problem is with bicycle=use_sidepath. It would conflict with routers, since the tag is only to be used when there is a compulsory cycle way present( and mapped separately). But in Germany, at least, there are also "other, not compulsory" cycleways where you can also ride on the street ff you like.
  • cycle lanes: I am not sure this is desirable, since there is no hard separetion (a kerb) and this would conflict with principle only mapping physical seperated way as a seperate way?
  • sidetrack: In addition to finding a way to double represention, I want to integrate the distinction between near and far sidepath, which makes it a lot more complicated, then adding a simple (*:)sidepath=yes. But if done right it could offere a very flexible way of tagging.
  • sidepath: I my understanding a sidepath is a road adjacent footway/cycleway/path.
  • cycleway: If I'm not mistaken, it's ok to tag highway=cycleway + cycleway=crossing [1]. But I understand what you want to say. I personly also like to go back and use footway=* on a street again, since this would be a lot more symetrical. --Hubert87 (talk) 17:51, 21 December 2014 (UTC)