Osrm-backend: Car profile go over steps

Created on 12 Dec 2016  路  12Comments  路  Source: Project-OSRM/osrm-backend

When way are steps (highway=steps) and access tag whitelist (eg access=permissive) the router profile can use the steps.

http://map.project-osrm.org/?z=18&center=48.841233%2C2.318432&loc=48.841316%2C2.318099&loc=48.841030%2C2.318748&hl=en&alt=0

Bug Report

Most helpful comment

Back to the original issue - we shouldn't send cars down steps. Unless someone can come up with an actual example where this is physically possible, we should change the profile to throw out any highway=steps in the car profile, no matter what the other tags are.

Hasn't anyone seen the Italian Job?

Driving down steps is reserved for bank heist getaways, and route-planning for that should be limited to paper maps in criminal's basements.

All 12 comments

Way we route over: https://www.openstreetmap.org/way/30019448#map=19/48.84148/2.31917&layers=D

and nearby. Urgh this is bad. I'll dig in and investigate.

Thanks for reporting!

Here's the underlying issue: it's the access= tag overriding the allowed transportation mode. This is in line with the OSM Wiki page on access tags:

https://wiki.openstreetmap.org/wiki/Key:access#Transport_mode_restrictions

Use the access=* key to describe a general access restriction that applies to all transport modes. Note, that, for example, adding access=yes to highway=footway changes default restrictions (which usually are foot=yes and vehicle=no for highway=footway) to yes, highway=footway + access=yes means "road, which is open for all pedestrians and vehicles". Be very careful when adding general permitting tags access=yes and access=permissive, think about adding precise correct tags with concrete transport modes. If you want, for example, distingush footway with open access from footway with closed access, use tags like foot=yes and foot=private instead of access=yes and access=private.

Which means access=permissive + highway=* allows for _all transportation modes_ including cars to route over it if we strictly follow the definition in the Wiki. On the other hand sampling the data in Berlin this would also mean all highway=steps with an access tag we allow are now routable for cars:

map

Check the query: http://overpass-turbo.eu/s/kBa

highway=steps and access~"yes|permissive|designated|destination"

Most if not all of them should not be routed over with a car.
If we strictly follow the Wiki these are mis-tagged.

On the other hand decoupling access tags from highway tags is confusing at best.

cc @systemed let's continue the discussion from IRC here.

The question is not if it's allowed or not (according to the OSM tags). But since it's steps, you can't go through due to physical issues because we are using a car.

Interestingly enough here is the Wiki page for computing access restrictions:

http://wiki.openstreetmap.org/wiki/Computing_access_restrictions#A_few_worked-out_examples

Transport Mode Hierarchy

We then need a relationship between the above tags, that is we need to state which tag is more generic and which one is more specific. Technically speaking, we want to arrange our transport mode tags in a tree structure, where the tree root is the most generic tag and tags get more specific as we move away from the root.

This tree is derived from Key:access and is not complete: some transport modes are missing. Other trees are possible: each country, for instance, can have its country-specific hierarchy. For instance, horses are considered vehicles in some countries.

The question is not if it's allowed or not (according to the OSM tags). But since it's steps, you can't go through due to physical issues because we are using a car.

The question is: 1/ is it a tagging issue (we don't work around this) or 2/ is it a wrong access computation in the profiles (in which case we should fix the profiles).

Or put another way:

a. Follow wiki-defined tagging, in which access=yes overrides defaults for a highway type.
b. Follow real-world tagging, in which access=yes does not override defaults for a highway type.

I follow b) with cycle.travel, as my concern is "good routing" rather than "correct tagging". So, for example, routing over http://www.openstreetmap.org/way/184595087 gives http://cycle.travel/map?from=52.5319,13.4112&to=52.5314,13.412, where highway=footway, access=permissive is still treated as somewhere you have to push.

I'd suggest the same applies to the default car profile. If you follow a) then the routes will objectively be worse, but the tagging could be considered more correct and you may therefore encourage people to retag wrong/ambiguous examples. If you follow b) then the routes will be better, but the behaviour less correct according to the wiki.

So essentially this is the result of the wiki not reflecting a lot of real-world tagging practice. What OSRM should do - well, it depends whether you prefer getting angry complaints from people who were told to drive their truck down some steps, or from wiki users who want their tagging style to be followed. ;)

For me this is less of problem of wiki vs. real world but between having a well-defined behavior vs. what we come up with ourselves in each implementation. From our perspective it does not really matter what scheme is actually used for tagging _as long as it is well defined_.

We can come up with our own scheme that is an alternative to what is written in the OSM wiki but then we also have the responsibility of communicating it clearly. From past experience going against "official" definition is very difficult (:wave: roundabout).

Hence my first impulse would be to stick to the "official" definition and develop tools that detect common mistaggings and fix that in the data.

However this is not only a data problem, but also a tooling problem in my opinion. If JOSM and iD make it easy to use the access tag people will use it.

I already wrote a tool to fight against misuse of access tag:
http://osmose.openstreetmap.fr/en/map/#zoom=16&lat=52.53749&lon=13.4128&layer=Mapnik&overlays=FFFFFFFFFFFFFFFFFFFFT&item=3220&level=1%2C2%2C3&tags=&fixable=

It seems to me that access=yes mean that it's possible to go by car, while access=permissive merely means it's allowed, but not necessarily possible. Following this understanding it would make sense to blacklist certain way types when access=permissive.

Related issue I just stumbled upon: https://github.com/Project-OSRM/osrm-backend/issues/581.

barrier=* implies access=no. But we still route e.g. over barrier=gate without any further access tags.

That really is a case of the wiki over-reaching. There are thousands of cycleways with barrier=gate and no further access tags.

Back to the original issue - we shouldn't send cars down steps. Unless someone can come up with an actual example where this is physically possible, we should change the profile to throw out any highway=steps in the car profile, no matter what the other tags are.

Hasn't anyone seen the Italian Job?

Driving down steps is reserved for bank heist getaways, and route-planning for that should be limited to paper maps in criminal's basements.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

koussaimb picture koussaimb  路  4Comments

AliKarami picture AliKarami  路  3Comments

ryanbishop12 picture ryanbishop12  路  4Comments

davidbarre picture davidbarre  路  4Comments

ltsstar picture ltsstar  路  5Comments