User:Pavvv/Sandbox/Highway v2

From OpenStreetMap Wiki
Jump to navigation Jump to search

The current highway=* key's usage is very inconsistent and confusing. It was based off UK's road classification which quickly caused problems when countries didn't have obvious equivalents for them. Misleading translations have also caused definitions to become further diverged, causing every country to develop its own definition for every category.

On this page you'll see my concept for using new tags for each of the interpretations of values.

Roads

I propose to use highway=road as the tag for all roads regardless of designation, similarly to railway=rail which means the service=* key would also be used a lot.

Old tag Importance interpretation (rural and in towns without bypass)[1] Importance interpretation (in cities without through-traffic) Functionality interpretation Official classification interpretation Parameter interpretation
highway=motorway Generally not used to signify importance. motorway=yes highway:category:<country code>=*, highway:class:<country code>=*,

zone:traffic=<country code>:*

Use adequate parameter tags such as maxspeed=*,surface=*, smoothness=*, tunnel=*, lanes=*, dual_carriageway=*, etc.
highway=trunk importance=supernational importance=superurban expressway=yes
highway=primary importance=national Generally not used to signify functionality. highway:category:<country code>=*, highway:class:<country code>=*
highway=secondary importance=regional
highway=tertiary importance=county importance=urban
highway=unclassified importance=rural importance=suburban abutters=industrial, etc.
highway=residential importance=local importance=local abutters=residential

The following tags are only used based on functionality.

Old tag New tag
highway=motorway_link motorway=ramp
highway=trunk_link expressway=ramp, service=ramp or service=slip[2]
highway=primary_link service=ramp or service=slip[2]
highway=secondary_link
highway=tertiary_link
highway=living_street zone:traffic=<country code>:living_street or living_street=yes
highway=service without service=* service=driveway (e.g. at a fuel station), service=pipestem or service=track + tracktype=grade1
highway=pedestrian service=pedestrian
highway=track service=track
highway=bus_guideway service=bus_guideway
highway=escape service=escape
highway=raceway leisure=raceway or something similar
highway=road highway=unknown if unknown whether a path or road, or lone highway=road when the importance is unknown
highway=busway service=busway
highway=emergency_bay service=emergency_bay

Paths

For paths I suggest tagging all of them as highway=path with respective access=* tags. These replacements might seem long which is why I really recommend utilising templates in editors such as iD and JOSM.

Old tagging New tagging
highway=footway highway=path + foot=designated + bicycle=no
highway=cycleway highway=path + bicycle=designated + foot=no
highway=bridleway highway=path + horse=designated
highway=steps highway=path + foot=designated + bicycle=no + steps=yes/<number of steps>
highway=corridor highway=path + foot=designated + bicycle=no + indoor=yes
highway=path +

foot=designated +bicycle=designated +

segregated=yes

highway=path + foot:lanes=no|designated + bicycle:lanes=designated|no or old tagging, if the sides are unknown
footway=sidewalk path=sidepath
cycleway=sidewalk
footway=crossing path=crossing
cycleway=crossing
footway=traffic_island path=traffic_island
cycleway=traffic_island
footway=link path=link
cycleway=link
footway=path path=path[3]
cycleway=path
  1. In some countries might be moved over by one i.e. trunk corresponds to supernational or national, primary corresponds to regional, etc.
  2. 2.0 2.1 Alternate value names include service=sliplane andservice=sliproad.
  3. Or path=trail, if it's appropriate in all of the use cases.