osmandapp / OsmAnd

OsmAnd
https://osmand.net
Other
4.67k stars 1.02k forks source link

OsmAnd Router Tells Driver to Exit to a Different Motorway at a a Node Instead of Staying on the Current Motorway #13848

Open Zian opened 2 years ago

Zian commented 2 years ago

🐞 routing report

Routing engine

Routing Profile

car

Start and end points

From: https://www.openstreetmap.org/node/2245212431 To: https://www.openstreetmap.org/way/33071120

Actual and expected routes

I expected to be routed through the local bypass (https://www.openstreetmap.org/way/32131714) to Interstate 5 (https://www.openstreetmap.org/way/25901157). I anticipated that once OsmAnd instructed me to enter the local bypass lanes, it would not tell me to exit until I got close to Manchester.

In reality, the application told me to take exit 33A to I 5 even though exit 33A goes to CA 56.

The application appears to have trouble with the exit node (https://www.openstreetmap.org/node/252357189) that leads to 2 motorways. The node is marked with ref=33A and CA 56's way (https://www.openstreetmap.org/way/44037210) has a matching junction:ref=33A. The I 5 way (https://www.openstreetmap.org/way/25901157) does not have any tags with a value of "33A".

Screenshots:

1 2

Is this a regression?

Uncertain

🌍 Your Environment

OsmAnd Version:



OsmAnd+ 4.1.11

Device and Android/iOS version: OnePlus 5 (cheeseburger) Android 9 16.0-20201026-NIGHTLY-cheeseburger (LineageOS Version)

Maps used (online or offline):

Anything else relevant?

Lee-Carre commented 2 years ago

A bunch of concerns to address.

Firstly, to save others the headache of parsing the description to figure out the general route:

Meta: clearly, the template needs to be updated; I'll work on that & submit a PR.

TTS

TTS is dependent on the underlying route calculation. So, if the route is wrong, then the directions spoken by TTS will match.

I suggest giving this issue a more generic title.

the application told me to take exit 33A to I 5 even though exit 33A goes to CA 56.

Display-captures (β€˜screenshots’) would help. Following your descriptions (of an area unfamiliar to me) was difficult.

Where did it suggest you go after that? Why was the suggestion problematic (other than it wasn't expected)?

CA 56 has a matching junction:ref=33A. The I 5 does not have any tags with a value of "33A".

Sounds like a problem with the map data. Did you check relevant relations, too?

Having examined each a little (as best I can, being completely unfamiliar with the area), I'm suspicious of the destination:ref tags in each case. I believe that OsmAnd uses these for routing (see #13493).

Any routing algorithm is dependent on accurate map data. It's only an OsmAnd bug if the data is sound but the calculated route is grossly erroneous.

There are also multiple factors which go into suggesting a route. Different algorithms may yield different suggestions.

What makes you think that OsmAnd was trying to follow the route you expected it to suggest? It is not clear to me, from reading your descriptions (multiple times) what the expected route was, let alone what was suggested instead.

Be wary of The XY Problem.

vshcherb commented 2 years ago

@Lee-Carre - url is not correct with 'www' doesn't work yet - https://osmand.net/map/?start=32.919760%2C-117.233100&end=33.016750%2C-117.257930&mode=car#12/32.9522/-117.1525

vshcherb commented 2 years ago

By description is not clear what's the issue "Incorrect route" ? Please make screenshots correct incorrect by using tools. "Incorrect description" please also make screenshot.

Textual description unfortunately is hard to understand

vshcherb commented 2 years ago

2 roads are motorway - https://www.openstreetmap.org/way/44037210. So if motorway exit is related only to 1 way (https://www.openstreetmap.org/node/252357189#map=17/32.92861/-117.23902) how are we going to distinguish it?

mattmccutchen commented 2 years ago

I noticed a few examples of the same problem near where I live, so I'm joining in this issue:

So if motorway exit is related only to 1 way (https://www.openstreetmap.org/node/252357189#map=17/32.92861/-117.23902) how are we going to distinguish it?

Use the junction:ref tag. The motorway with the junction:ref tag is the exit, while the motorway without junction:ref is the through road.

If OsmAnd is not going to use the junction:ref tag to break the ambiguity (either because the tag is not present at a given junction or because OsmAnd doesn't want to support junction:ref for some reason), then probably the best approach is to just announce "keep left" or "keep right" and not use the exit number for either motorway. This is the same thing OsmAnd does if the junction is not tagged as a highway=motorway_junction at all. "Keep left" or "keep right" with any available destination information is probably enough for the user to find the correct road in most cases. It's better overall than OsmAnd's current behavior of announcing the exit number for both motorways, which is slightly more helpful when the route takes the exit but contradictory and confusing when the route takes the through road.

Based on a few tests I did, it seems that the OSRM service on openstreetmap.org does not support junction:ref, and at a junction with two outgoing ways tagged highway=motorway, it says "keep left" or "keep right" without an exit number. It would be good to bring OsmAnd at least to parity with OSRM here; I'd think that should be an easy change. Support for junction:ref could be a further enhancement.

Zian commented 2 years ago

@Lee-Carre

more generic title

Done.

screenshots

Done.

where did it suggest you go after that?

After the node, the route showed that I should continue driving on Interstate 5. However, if I had obeyed the command to exit there, then I would've ended up driving on California State Highway 56.

map data problem?

No, the map data is correct.

@vshcherb

how to distinguish?

Use junction:ref.

@mattmccutchen I agree with everything you said.

vshcherb commented 2 years ago

junction:ref is used it's printed on top and even could be turn on for voice announcement

Zian commented 2 years ago

When I wrote "use junction:ref", I meant that it should be used in the manner described by @mattmccutchen, who wrote:

Use the junction:ref tag. The motorway with the junction:ref tag is the exit, while the motorway without junction:ref is the through road.

when he was asked how OsmAnd should decide what to announce verbally.