OSM tags for routing
Actual usage
Several routing engines use, or can be used with, OpenStreetMap data. They may choose to provide details about specific tags and OpenStreetMap conventions they use.
See this list of tags and conventions used for Scout.
Proposed usage
This section does not reflect real-world usage by popular routing software and should be taken with a very large pinch of salt. The tags used by routers are at the discretion of the software's authors and will vary from use to use. |
What Map Features are stored in OpenStreetMap that you can use when routing?
This page gives a guideline to what existing and regularly and consistently used tags should be interpreted for routing and how they are to be interpreted. If any meaning of a tag is added that affects routing then that tag and its meaning shall be added here.
Roads
- Main article: Highways
Only ways marked with the key highway=* or junction=*, and areas marked by highway=* and area=yes or type=multipolygon, are a road that a car, bike or pedestrian can navigate on.
When creating routes for motor-vehicles beware for the values "footway", "pedestrian", "steps", "gate", "stile", "cattle_grid", "viaduct" and limit the usage of "ford", "service". Also notice that highway=services does not represent a road.
Oneway
A way is oneway if and only if it has:
- oneway=yes or
- oneway=-1 (denotes opposite direction to node order) or
- junction=roundabout or
- highway=motorway or
highway=motorway_link
and
- oneway ≠ no
(the tag oneway=no has precedence over highway=motorway)
Roads which are one-way and change direction depending on time (eg: flyover in direction of rush-hour traffic flow) are tagged with oneway=reversible and should probably be treated as no access.
Name
The following tags may contain the name of a street:
See: naming
There is also an external XML web service that can do searches for you.
Is inside/outside
The following tries to give a definite algorithm for resolving +
- if a location is inside a given settlement, country, or postal code +
- what settlement, country, postal code a given location is in +
We are trying to cover all currently approved and used taggings for this and rate them in a deterministic order of importance. So you need not search everything to implement your algorithm.
Settlement
A way is in a city, suburb, postal code/... if and only if:
- a) It is individually tagged as is_in=*.
- b1) It is inside an area tagged as place=*
- b2) It is inside an area tagged as boundary=administrative and admin_level=8
- c) It is not inside such an area but a node tagged as place=* is inside an area with landuse=* with a value other than "farm", "quarry", "forest" or "water" and the way is inside the combination of that polygon and all intersected or "nearby" polygons of this kind (difficult to implement but a good autotetection.).
- d) None of these but the nearest point tagged as "place"= is less then XX km away.
For case (d) sensible values are:
- is tagged the radius is given by a radius tag in meters or kilometers.
- if not tagged, these are sensible default values:
Tag | Element | Radius |
---|---|---|
place=continent | n/a, continents must have borders | |
place=country | n/a, countries must have a defined border polygon | |
place=state | n/a, states of countries must have a defined border polygon | |
place=region | 500 km | |
place=county | 200 km | |
place=city | 10 km | |
place=town | 5 km | |
place=village | 1 km | |
place=hamlet | 300 m | |
place=suburb | 300 m | |
place=island | n/a, islands must have a defined coastline polygon |
Postal codes
Country
This topic is currently for debate on the OSM-Dev mailing list.
The current progress is documented in Tagging Country Borders.
Traffic signals
You should limit the expected speed when crossing nodes tagged highway=traffic_signals, highway=stop or barrier=toll_booth as well as traffic_calming=*.
Access restrictions
Access restrictions are documented on Key:access, and Conditional restrictions for more advanced cases.
The default access restrictions for each vehicle and highway type are documented in /Access restrictions.
To compute access restrictions in the presence both of default values and explicit values, see Computing access restrictions.
Turn restrictions
Restrictions to prohibit certain kinds of turns at intersections are documented in Relation:restriction.
Max speed
The default maximum speed if not given by maxspeed=* is now documented on on this page.
Routing to postal addresses
See addr:*=* for details on addresses.
Specialist routing data
- incline=*
Further Links
- project on WheelChair Routing (in German)
- project on routing for blind persons: LoroDux