Proposed features/sidepath tagging scheme

From OpenStreetMap Wiki
Jump to: navigation, search
sidepath tagging scheme
Status: Proposed (under way)
Proposed by: Hubert87
Tagging: various=various
Applies to: Way
Definition: Looking for a possibility to tag a sidewalk/track/etc. as an adjacent way (Way) AND as a tag on the main road-Way, giving Routers, Renderer and Mappers the opportunity to choose what they like best. Simultaneously looking for options to connect stand-alone Way to the main road-Way,without breaking the tagging scheme.
Rendered as: Appearance will be up to the Renderer and possibly different for different zoom levels.
Drafted on: 2015-01-29

Proposal

This proposal is looking for a possibility to tag the information about a road adjacent sidepath (footway/cycleway/path) as data supplementing a main road (e.g. highway=residential + sidewalk=*) AND as a separate Way in the form of e.g highway=footway + footway=sidewalk. It also wants to find options for linking separate, stand-alone ways to the street and/or sidepath without breaking possible rendering and routing outputs or rather the tagging scheme witch this proposal wants to create.

Rationale

  • A sidewalk can be tagged as sidewalk=* on the street (e.g highway=residential) or as a separate OSM-way with highway=footway + footway=sidewalk at the moment. This also holds for cycleways in a similar way.
  • Mappers may have problems, because there is are two contradicting ways for mapping sidepaths
  • Renderer may have problems, 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 separated 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).
  • Routers may have problems, because positioning of the routing object on the street or footway / cycleway might be complicated or impossible due to imprecisions. 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.
  • As the use of OSM data is very wide spread, only entering data for one specific use is problematic.
  • Accepting a curb as a physical separation between a sidepath and the roadway is disputed. This has been the cause for many discussions and also edit wars, especially over road adjacent footways aka sidewalks.
  • Distinction between road adjacent footways that are separated form the road way only by a curb and others ways separated by a ditch, fence, etc. might be interesting for some data consumers , e.g. routing programs.
  • It is easier (at least in theory) to collapse multiple way onto a single one (as it's done by Skeletron than to guess the actual route of a sidepath (footway, cycleway) from thin air.

Status Quo

Right now, there are two contradicting ways of tagging a sidepath. The first one uses a tag on the main road to denote the sidepath ("near type"). This is most common when adding sidewalk to the database. The second one uses a new Way to denote the sidepath, mostly common when tagging cycle tracks ("far type").

The table below gives an example of the two tagging schemes. Please note that this also applies for different types of sidepaths (cycleways).

Type Sketch EITHER
highway=*
OR
highway=path/footway/cycleway
Near Cycle tracks sidewalks left right.svg Default?
cycleway=track
sidewalk=both
(footway=sidewalk)
foot=designated
bicycle=designated
segregated=yes
Far Cycle tracks left right footways.svg cycleway=track
(?) sidewalk=both
Default?
(?) (footway=sidewalk)
foot=designated
bicycle=designated
segregated=yes

Switching between the tagging schemes will only work when deleting one tag and adding the other. Also, as one may be aware, the tagging structure changes between different types of sidepaths (footway, cycleway) and in case of separately map ways also between differently tagged highway=path/footway/cycleway.


Relations

It is also common to collect all ways of a road, including possible separately drawn sidepaths, into a street-relation. In that case a sidepath could have the role "sidepath" to differentiate them from the central ways with the role "street".

This however doesn't derogate the need for an explicit tagging scheme as shown below, because adding/copying data for a sidepath to the central is at least very tricky, maybe even impossible. One would need to split a central way to match the length of a sidepath or copy the same data on multiple central ways. One would need to figure out on which side of the central way the sidepath is and how to handle dual carriage ways or multiple parallel sidepaths.

Some simple queries (like "show me all Streets in the street-Realtion the have a cycleway"):

Tagging

The following tags (prefixes and values) listed and described in the table below represents the core of this proposal. The definitions and tag-names are what will be voted on.

type name description alternative name
prefix adjacent:*=* Used on default sidepath tags (cycleway=*,sidewalk=*) on the central osm-way, when a sidepath (highway=cycleway,highway=footway,highway=path) is entered as a separately drawn osm-way (*=sidepath-type) sidepath:
value *=sidepath Used to denote separately drawn sidepaths, where the central carriageway has adjacent:*=*-sidepath tags or no sidepath tags at all. sideway, sidewalk, adjacent
prefix sidepath:*=* Used to denote separately drawn sidepaths, where the central carriageway has default sidepath tags (cycleway=*,sidewalk=*) on the central osm-way. sideway:, sidewalk:, adjacent:
value *=connector Denotes a connection (highway=cycleway/footway/path) between a sidepath:*=*-type sidepath and the carriageway (highway="roadtype"), where a stand-alone highway=*-way branches off and no crossing (*=crossing) is present link
prefix connector:*=* Denotes a connection between a *=sidepath-type sidepath and the carriageway (highway="roadtype"), where a stand-alone highway=*-way branches off from a *=sidepath-type sidepath and because of that doesn't have a direct connection to the carriageway (separated by grass, curb, fence, etc.) link:
value *=crossing Denotes a connecting way (highway=cycleway/footway/path between a *=sidepath-type sidepath and the carriageway that is part of a crossing.
prefix crossing:*=* Denotes a connecting way (highway=cycleway/footway/path between a sidepath:*=*-type sidepath and the carriageway (highway="roadtype"), that is part of a crossing and does not have a stand-alone way branching off from the carriageway

Nomenclature

To help describe different situations in the example part, the tagging possibilities and options are divided into 6 (8) segments with 4 (5) distinct tagging options.

  • near : Situation in which sidepaths are separated from the carriageway by a curb only.
  • far : Situation in which sidepaths are separated from the carriageway by a grass strip, ditch, etc.
  • compressed : Tags on a separately drawn osm ways are going to get a prefix. Tags on the main way will be the classic ones.
  • detailed : A separately drawn osm ways will get a classic tagging and an additional sidepath tag. Tags on the main way are going to get a prefix.
  • mixed: Uses both compressed and detailed tagging style. Tags for near sidepaths will be in the compressed style, Tags for a far sidepath will be in the far style.
Type Near Far
Sketch Cycle tracks sidewalks left right.svg Cycle tracks left right footways.svg
Compressed roadway cycleway:right/left/both=track
sidewalk=*
sidepath sidepath:highway=cycleway/footway/path
sidepath:bicycle=designated
sidepath:foot=designated
sidepath:segregated=yes
Mixed roadway cycleway:right/left/both=track
sidewalk=*
adjacent:cycleway:right/left/both=track
adjacent:sidewalk=*
sidepath sidepath:highway=cycleway/footway/path
sidepath:bicycle=designated
sidepath:foot=designated
sidepath:segregated=yes
highway=cycleway/footway/path
cycleway/footway/path=sidepath
bicycle=designated
foot=designated
segregated=yes
Detailed roadway adjacent:cycleway:right/left/both=track
adjacent:sidewalk=*
sidepath highway=cycleway/footway/path
cycleway/footway/path=sidepath
bicycle=designated
foot=designated
segregated=yes
Detailed,
footway and cycleway
mapped separately
roadway adjacent:cycleway:right/left/both=track
adjacent:sidewalk=*
sidepath - footway highway=footway
footway=sidepath
sidepath - cycleway highway=cycleway
cycleway=sidepath

Example

This example will use both types of tagging (compressed and detailed) on an imaginary landscape, that incorporated many different situations from which allot more can be derived hopefully. It's the more complicated type of tagging but allows for the most diverse tagging.

Example STS 1.png

Translated into osm-ways, this is how it would look like in JOSM Wireframe sketch up.

|STS JOSM Wireframe.png

As one can imagine, the tagging of the sidepaths itself is less problematic than handling the links between the sidepath and the street, and the crossings.

Example Tagging

Example Ref Near Type Combined Type (preferred) Far Type
STS Sidepaths.png red (1) sidepath:highway=footway sidepath:highway=footway highway=footway + footway=sidepath
blue (2) sidepath:highway=footway sidepath:highway=footway highway=footway + footway=sidepath
yellow (3) sidepath:highway=footway highway=footway + footway=sidepath highway=footway + footway=sidepath
gray (4) sidewalk=both sidewalk=right + adjacent:sidewalk=left adjacent:sidewalk=both
lime (5) sidewalk=both sidewalk=both adjacent:sidewalk=both
STS FCL.png blue (1) highway=footway highway=footway highway=footway
lime (2) crossing:highway=footway highway=footway + footway=crossing highway=footway + footway=crossing
orange (3) highway=footway + footway=connector connector:highway=footway connector:highway=footway
yellow (4) highway=footway + footway=connector highway=footway + footway=connector connector:highway=footway
red (5) crossing:highway=footway crossing:highway=footway highway=footway + footway=crossing
pink (6) Not tagged highway=footway + footway=sidepath + sidepath:highway=footway Not tagged

Using various combinations of sidepath:*=* , connector:*=* , crossing:*=* , *=sidepath , *=connector and *=crossing, allows for at least three different rendering styles as shown below.

Example Rendering

  • Styles are name with the default-osm-carto style and the opencyclemap-style in mind.
  • Detailed : Footways are rendered as separate osm-ways
  • Mixed : Near footways are rendered as part of the main road-way, while far footways are rendered as separate osm-ways.
  • Compressed : Road adjacent footways are rendered as part of the main road-way.

The above tagging scheme allows to render sidewalks in various ways as shown in the Query Table below:

Query Table
Style Rendering Near Type Combined Type Far Type
Compressed A Rendering No Sidepaths.png Default
sidewalk=*

highway=footway
sidewalk=* or adjacent:sidewalk=*

(highway=footway and not footway=sidepath) or connector:highway=footway
sidewalk=* or
adjacent:sidewalk=*

(highway=footway and not footway=sidepath) or connector:highway=footway
Mixed STS Rendering 3.png Not Possible Default
sidewalk=*

highway=footway
Not Possible
Detailed STS Rendering 1.png (highway=footway and not footway=connector) or (sidepath:highway=footway or crossing:highway=footway) (highway=footway and not (footway=connector or sidepath:highway=footway)) or (sidepath:highway=footway or crossing:highway=footway) Default
sidewalk=*

highway=footway

Related Proposals

Related Discussions

Sorry, but most of them are in German since I follow the German forum primarily.

Related Wiki Pages

Features/Pages affected

Comments

Please comment on the discussion page