Proposal:Worldwide road classification (physical)

From OpenStreetMap Wiki
Jump to navigation Jump to search
Worldwide road classification (physical)
Proposal status: Abandoned (inactive)
Proposed by: Wollschaf
Applies to: way
Definition: collect and invent tags that are able to describe all relevant physical properties of roads
Draft started: 2006-09-05

This page is an attempt to collect and invent tags that are able to describe all relevant physical properties of roads.

To achieve worldwide coverage, different kinds of roads have to be found, listed and described.

After a comprehensive list of road types and tags is collected, common sets of tags can be combined into a single classification scheme. This scheme facilitates tagging and improves readability for humans. As only default values for other tags are defined, those can be overridden. The use of the classification scheme is optional, and uncommon roads can be described by just using single tags.

Example: The key for that scheme is named roadtype, and has the value C (see outdated proposal at Proposed_features/Way_Type) The value C could imply the tags nlanes="2", roadsurface="tarmac", lane_layout="CC". That should be a common case for many countries. If a road uses concrete as paving, the road could be tagged with two keys: roadtype=C;surface=concrete. It doesn't make much sense in this special case, though. ;)

For backwards compatibility, equivalent tags for the current highway tagging schemes have to be defined.

List of needed tags and values

Still incomplete, and not at all a final draft. key already exists, key is a new proposal.

  • surface = tarmac / concrete / paving / gravel / soil / sand
    • concrete being cheap roads made out of premanufactured, mostly poorly aligned blocks.
  • width = x.x m
    • for measured and well known values, width of road
  • approx_width = x.x m
    • for estimated values
  • An easy scheme to classify road width that works using vehicle units (two cars fit...) is hard to find; See below.
  • lanes = x
    • Number of travel lanes in each (or only permitted) direction for segment (without breakdown lane)
  • nlanes = x
    • Complete number of lanes, i.e: oneway=yes lanes=2 -> motorway; lanes=2 -> normal road, one lane in each direction
      • There are roads with three lanes... the old lanes key can not cope with that.
  • breakdown_lane = left / right / both
    • regarding segment direction
  • tunnel = yes
  • embankment = yes
  • cutting = yes
  • bridge = yes
  • sidewalk = left / right / both / no

List of common roads

from smallest to biggest; Later to be fit in a scheme (A-Z, or different numbering)


A road too small for a normal car, which can still be used by motorbike and bicycle. Anything smaller is not a road and should be tagged using a different scheme. Tags:

  • surface = tarmac
  • lane_layout = "B"

Equivalent highway values:

  • cycleway

(the cycleway key is not obsolete, though).


Roads for agricultural use, ways in the forest. Tags:

  • surface = gravel
  • nlanes = 1
  • lane_layout = "C"

Equivalent highway value:

  • track

Small one-lane roads around towns and in the country. Tags:

  • surface = tarmac
  • nlanes = 1
  • lane_layout = "t"

Equivalent highway value:

  • minor
  • unclassified

Roads in residential areas. Tags:

  • surface = tarmac
  • nlanes = 1
  • lane_layout = "C"

Equivalent highway value:

  • residential

Roads linking motorways. Tags:

  • surface = tarmac
  • nlanes = 1
  • lane_layout = "T"

Equivalent highway value:

  • motorway_link
  • trunk_link
  • primary_link

"Secondary" roads. Tags:

  • surface = tarmac
  • nlanes = 2
  • lane_layout = "tt"

Equivalent highway value:

  • secondary

"Primary" roads. Tags:

  • surface = tarmac
  • nlanes = 2
  • lane_layout = "TT"

Equivalent highway value:

  • secondary

Motorway without breakdown lane. Tags:

  • surface = tarmac
  • nlanes = 2
  • lane_layout = "TT"
  • oneway = yes

Equivalent highway value:

  • motorway

Motorway with breakdown lane. Tags:

  • surface = tarmac
  • nlanes = 2
  • lane_layout = "TT"
  • oneway = yes
  • breakdown_lane = right

Alternative tags and values; Old approaches.

  • roadtype = A / B / C / D / E / F / G
    • Approximate width of the road in vehicle units; Examles for up to two lanes. For more lanes, this scheme is not really necessary. A-E -> lanes=2; F-J -> lanes = 1; Could also be implemented using fractions of lanes. The important thing about this key is: How many vehicles fit on a road concurrently?
      • A: Two (big) trucks fit side by side without difficulty (lots of space)
      • B: Two trucks fit side by side
      • C: A car and a truck
      • D: Two cars
      • E: Two cars can pass at slow speeds
      • F: One truck
      • G: One car
      • H: Two motorbikes can pass
      • I: One motorbike / two bikes
      • J: One bike
  • lane_layout = [cCtTbB]
    • Defines how many vehicles of which type fit on the whole road cuncurrently (not what is allowed), thus approximately defining the road width. Approximate road with can be calculated by using to be defined default width for b,B,c,C,t and T. Symmetry is not necessary; Segment direction defines left and right. Main purpose of this tag is to define the road width in a comprehensive way.
    • b: bicycle fits barely
    • B: bicycle fits
    • m: motorbike fits barely
    • M: motorbike fits
    • c: car fits barely
    • C: car fits
    • t: truck fits barely
    • T: truck fits
      • lane_layout="b" One lane; bicycle fits, has to be slow
      • lane_layout="B" One lane; bicylce fits without problems
      • lane_layout="c" One lane; car fits on road, has to be slow
      • lane_layout="C" One lane; car fits, enough space to open the doors ;)
      • lane_layout="cc" Two lanes; a road where two cars can pass slowly
      • lane_layout="CC" Two lanes; a road where two cars can pass without problems
      • lane_layout="tt" Two lanes; two small trucks fit side by side, are able to pass slowly
      • lane_layout="TT" Two lanes; two trucks can pass, enough space.
      • lane_layout="ccT" Three lanes; two cars barely and a truck (road works perhaps)
      • lane_layout="TTT" Three lanes; big enough for three trucks. It does not include permission for trucks to use all lanes, but the road is big enough that this is possible.
        • Suggestion from Sven Anders:
        • . for the middle of the way
        • f and F: footway on this side of the way
        • b and B: for bycycle lanes (breaks Motorbike above)
        • m and M: for motorbike
        • Example: FbTT.TTb means Footway on the left hand side, then a bicycle lane, two Trucks ; in the other direction: Two Trucks an a bicycle lane, no footway Sven Anders 09:52, 1 Sep 2006 (BST)
          • A good idea. Perhaps the key name should be road_layout in this case. This approach makes tagging hard and creates a lot of data that is perhaps not really needed (or could be implemented using separate tags) Wollschaf 21:04, 5 September 2006 (BST)
  • lane_width = x.x m
    • mean width of the lanes in meters
      • Problem: hard to apply for roads with differing lane widths.