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

Avoid looping-back on roundabouts and islands #41

Open
adamfranco opened this issue May 25, 2016 · 2 comments
Open

Avoid looping-back on roundabouts and islands #41

adamfranco opened this issue May 25, 2016 · 2 comments
Assignees

Comments

@adamfranco
Copy link
Owner

When joining ways for routes that split and then re-join, there are many cases where the joining process will cause the resulting collection to spiral back on itself at a roundabout or divided highway merger rather than continuing along with the main length of highway.

Here are a few examples:

One potential way to fix this is that instead of ordering ways in a route solely by OSM-id before joining, instead the ways could be sorted such that two-way ways come first, followed by normal one-way ways, followed by roundabout ways, *_link ways, and other connectors. Within these groups, ways would be still ordered by OSM-id. This would allow the join process to always try to attach the two-way non-divided highway ways first when encountering a split/merge. Only if no two-way ways can be joined would the join continue on to the other-type ways.

adamfranco added a commit that referenced this issue May 26, 2016
…way and link ways.

This addresses the first example roundabout, but not the second example from #41.
@adamfranco
Copy link
Owner Author

Here's another case of staying in a roundabout too long, then making an impossible-to-drive split:
Carmel interchange roundabout
Curvature_-_Carmel interchange roundabout
It looks like this was caused by choosing the roundabout way rather than the entrance way or maybe the join process stepped into the roundabout through the exit way, then continued around the other direction.

One potential option would be to keep track of the direction of one-ways while joining (forward/backward), then not switch one-way directions. This should eliminate at least this particular untravelable case, but wouldn't actually solve the larger loop-back problem noted on US 202.

@adamfranco
Copy link
Owner Author

adamfranco commented Oct 26, 2020

Here's yet another case from Madrid:

Screen Shot 2020-10-26 at 1 38 57 PM

It looks like the splits are being followed in reverse-oneway directions. Maybe when joining and encountering a pair of one_way ways, I walk through them only in that direction and add up the distance traveled, then go back and try the other sequence and keep the one that is longer.

Also this one: https://roadcurvature.com/map/#map=16.469/0.0202/43.2181

Also the Picadilly underpass in London:
https://roadcurvature.com/map/?threshold=low#map=17.711/-0.1518/51.504
Screen Shot 2020-11-04 at 1 37 23 PM

@adamfranco adamfranco self-assigned this Nov 6, 2020
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

1 participant