我需要使用OsmSharp实现自定义GPS路由引擎。我正在使用Dykstra路由引擎(在WinForm示例中)。该示例计算出最短的道路,但我想使掉头无法进行(例如,到达基准位置时)。
您将如何实现?我已经在代码中尝试了一些“技巧”,但似乎没有任何效果。
[编辑]
我在这里找到了答案的一些要素:https://github.com/OsmSharp/OsmSharp/issues/236
谢谢
最佳答案
那要看。
首先,OSM具有turn restrictions,可用于指定禁止掉头(类型=限制+限制= no_u_turn)。同样,它们用于仅允许某些转弯(restriction = only_right_turn等)。您的路由引擎必须支持relations才能支持OSM的转弯限制。
其次,您可以单独(或另外)通过避免在结点处形成锐角来避免急转弯。理想情况下,这是通过添加惩罚来完成的,这样,如果没有其他路由可用,路由器仍将采用此路由。