osmandapp / OsmAnd

OsmAnd
https://osmand.net
Other
4.63k stars 1.01k forks source link

Incorrect routing through streets, marked with tag motor_vehicle=destination #6280

Open Prusaker opened 5 years ago

Prusaker commented 5 years ago

OsmAnd build a route through the streets, marked with the tag motor_vehicle=destination, although the this tag prohibits transit traffic of cars.

screenshot1

Link to street: http://www.openstreetmap.org/way/508791434

Thanks in advance.

Prusaker commented 5 years ago

As a temporary solution, I resolved the issue by setting a speed limit of 20 km/h along this street and nearby street (most likely the correct speed limit on this street will be 20 km/h as on a living_street.). But if remove the restriction, the program makes the route along this street. Perhaps a penalty is not enough to build a route avoid this street?

If I right understand the contents of the file routing.xml, the ability to move on the streets marked with "destination" tag depends only on the penalty value?

scaidermern commented 5 years ago

As a temporary solution, I resolved the issue by setting a speed limit of 20 km/h along this street and nearby street

Is maxspeed=20 really correct for this street? If not please revert it. Don't add invalid map data just to "fix" an end-user application.

Prusaker commented 5 years ago

No problem, speed limits already fixed. I hope that rhis problem of routing will be solved in a future.

Zero3 commented 3 years ago

I checked, and motor_vehicle=destination roads are already penalized in two places in routing.xml, so that the routing engine will attempt to avoid them:

1) Their speed is multiplied with 0.15 by this priority declaration:

<select t="motor_vehicle" v="destination" value="0.15"/>

2) Entering them causes a 60 second penalty because of this obstacle declaration:

<select value="60"  t="motor_vehicle" v="destination"/>

Apparently this is not sufficient in the presented case. Increasing the priority penalty is probably not gonna do much, since the road is so short. Increasing the obstacle penalty should fix the issue though. That value should probably be much higher than 60 anyway, since motor_vehicle=destination means that you are only allowed to enter if your destination is on it. So a higher obstacle penalty would penalize transit routes but have no effect on routes that need to enter it to reach the destination (the only potential issue I can foresee is how OsmAnd handles corner cases related to multiple motor_vehicle=destination OSM ways connected to each other. So maybe this value should not be set crazy high, but just doubled or tripled or something).