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

osrm-extract assert triggering on manoeuvre override relation #6126

Closed
mjjbell opened this issue Sep 16, 2021 · 1 comment · Fixed by #6215
Closed

osrm-extract assert triggering on manoeuvre override relation #6126

mjjbell opened this issue Sep 16, 2021 · 1 comment · Fixed by #6215

Comments

@mjjbell
Copy link
Member

mjjbell commented Sep 16, 2021

With the Kentucky OSM extract.

osrm-extract with the default bike profile triggers an assertion when compressing a manoeuvre override.

BOOST_ASSERT(ptr->via == to);

The override is applied at an intersection between a private and public road: https://www.openstreetmap.org/relation/10547836#map=16/39.0284/-84.5417
Screenshot 2021-09-16 at 14 53 51

The private road is not accessible to the bike profile, so the node has degree two, allowing it to be compressed.
The via node of manoeuvre overrides are not exempt from being compressed, although the code appears to expect this to be the case. This inconsistency leads to the triggering of the assertion.

Furthermore, manoeuvre overrides do not support non-compressible nodes as part of the paths, meaning many are skipped or ignored. This was fixed for turn restrictions, a similar change is required for manoeuvres.

Other than fixing debug builds, there are only ~100 overrides in OSM data, so the impact on routing will be low.

@danpat
Copy link
Member

danpat commented Sep 22, 2021

I would be tempted to drop support for the maneuver override tag completely. It was invented by us a while back as a way to influence the route guidance with data-driven properties, e.g. when the geometry/graph shape of an intersection can't capture how people experience an intersection in the real world, the maneuver override relation was supposed to allow users to explicitly map the type of instruction we should emit for a particular traversal.

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

Successfully merging a pull request may close this issue.

2 participants