Good example of how we shouldn't map for navigation device

Posted by BushmanK on 4 February 2016 in English (English)

Recent question of some person, who uses maps for Garmin navigation devices, derived from OSM data, brought up a good example of tagging for navigator. He was dissatisfied by his Garmin navigator (actually, BMW branded Nav V) making straight routes instead of turn-by-turn ones in case, when destination is somewhere in the end of private road, tagged with access=private. He acknowledged, that Garmin Basecamp software works okay with the same map. Then he asked about proper way to tag roads, say, in suburban residential areas, where access is limited by locked lift gate, and where only residents have a key.

Several OSM contributors told him, that it is enough to put a barrier=lift_gate node on that way and to tag this node with access=private. Wiki suggests this as some sort of “intermediate” or “minimal” tagging method too (and obviously, it doesn’t call it a “bad practice”). And it will help to avoid that issue of Garmin routing. But is it right and consistent?

First, access= key is intended to tell us, that access to tagged object is limited (or, otherwise, granted). So, tagging a lift gate with access=private literally means “this is a private lift gate”, which only partially makes sense, since you still can approach it, but you can’t operate (open) it.

Second, access regime of road is not necessarily created by physical barrier such as lift gate. It could have a sign. Or just a note. Or it could be limited by law. It means, we can’t eliminate adding limited access tag to highway-tagged way itself completely, in any situation. Therefore, it makes that scheme with access=* on a barrier node obviously inconsistent.

Third, having some limited amount of data in bounding box around the point with access=*, it is impossible (without any additional tag, which should store the direction of propagation for this access rule along the way it belongs to) to find out, in which direction does this rule propagate. Another argument is that access rules for roads should be inherited from an enclosing territory, where this rule applies. But it’s completely wrong, because there are access rules applied directly to roads, not to a territory, where this road is situated.

Indeed, it could be hard to tag every road behind the barrier with access=*. But that’s another question - question of data completeness. Situation of incomplete tagging is normal for OSM, and it doesn’t create any issue. But removal of access=* tags from roads does, because it increases an incompleteness.

So, that’s why we should, ideally, tag roads with limited access tags and avoid relying on barrier node. Especially, if this tagging method is inspired by an attempt to compensate bugs of certain navigation system by changing data for it.

Comment from Warin61 on 4 February 2016 at 03:56

It may not be the fault of the navigation system … it could be that of the rendering into the navigation map.

Comment from BushmanK on 4 February 2016 at 04:05


Since Garmin format is undocumented, we can only speculate about that (however, Basecamp works well with it), but it’s not the main point of this diary entry - it’s about not making a workaround for particular device/converter by tailoring OSM data.

Comment from flohoff on 5 February 2016 at 17:10

access=* is in 90% of all times broken and wrong. Most of the time it SHOULD be motor_vehicle= or vehicle= .. There is no possibility at least in Germany to sign a public road beeing inaccessible to ANY mode of mobility (Which access=* means). At least you are allowed to walk there.

So when you see a public road e.g. not highway=service with a access=private or access=destination its wrong in 90% of the cases.

For the special routing case - For ANY routing device all restrictions whatever they mean should be treated as “access=destination” - The tail end or the front end of your route may ALWAYS be in an access restricted part of the road network and its the only way to reach your destination so in the end - you guide your user towards the destination and you need to announce once the restricted part of the tail end comes up. ( Mercedes build in dashboard navigational systems exactly do this - Warning - Access restricted road )

When you do it really correct its getting even much more complicated. Today all routing engines simply increase the graphs cost on the parts of the road network with access restrictions which typically causes the route to avoid those parts of the road network. The problem here is that it sometimes causes VERY strange routes trying to avoid some more meters on restricted surface. This is broken. The edges of the graph in your route do not get more expensive. You have a ONE TIME cost entering the restricted subgraph in your road network. Once you are on a motor_vehicle=destination based subgraph there is no point in leaving it again to avoid parts of the road network beeing restricted.


Comment from BushmanK on 5 February 2016 at 17:50


I’m always quite skeptical towards statements referring to statistics without any links to description of data collection and assessment method (such as “in 90% of all times…”), but here I agree with you in aspect of common misuse of access tags by different reasons. However, in different countries laws are also different, so what’s impossible in Germany is completely possible in the United States, for example.

Some people are really concerned about navigation systems leading map users to certain places with restricted access, but for me it seems like an obsessive idea: if navigator can’t handle different levels of access in form of warnings or destination-only, it’s not a problem of OSM data, any workarounds should be built into converters or data processors, not OSM database itself.

Comment from mtc on 11 August 2016 at 02:23

access= is another tag that could use some reconsideration… what is trying to be expressed here?

Seems to me that access levels are a gradient, with a scale going from strongly encouraged (sign outside saying Public Welcome!) to the other end strongly discouraged (sign saying Tresspassers will be Procecuted!) and in the middle is access=yes

Trying to figure out whether each dark and lonely road allows only deliveries or just transport to destinations is nuts. That will change depending on who you ask. The map should reflect what is visible on the ground, and not some subjective interpretation of debatable legal status.

I would like to see this tag given a comprehensive scale for keys, with additional information (such as access=private) supplimenting the simple scale. Well, I can dream, at least.

Login to leave a comment