Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Car profile go over steps #3435

Closed
frodrigo opened this issue Dec 12, 2016 · 12 comments
Closed

Car profile go over steps #3435

frodrigo opened this issue Dec 12, 2016 · 12 comments
Milestone

Comments

@frodrigo
Copy link
Member

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

@daniel-j-h
Copy link
Member

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!

@daniel-j-h
Copy link
Member

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.

@frodrigo
Copy link
Member Author

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.

@daniel-j-h
Copy link
Member

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.

@daniel-j-h
Copy link
Member

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).

@systemed
Copy link
Member

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. ;)

@TheMarex
Copy link
Member

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.

@frodrigo
Copy link
Member Author

@emiltin
Copy link
Contributor

emiltin commented Dec 12, 2016

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.

@daniel-j-h
Copy link
Member

Related issue I just stumbled upon: #581.

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

@systemed
Copy link
Member

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

@danpat
Copy link
Member

danpat commented Jan 12, 2017

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants