我需要使用OsmSharp实现自定义GPS路由引擎。我正在使用Dykstra路由引擎(在WinForm示例中)。该示例计算出最短的道路,但我想使掉头无法进行(例如,到达基准位置时)。

您将如何实现?我已经在代码中尝试了一些“技巧”,但似乎没有任何效果。

[编辑]

我在这里找到了答案的一些要素:https://github.com/OsmSharp/OsmSharp/issues/236

谢谢

最佳答案

那要看。

首先,OSM具有turn restrictions,可用于指定禁止掉头(类型=限制+限制= no_u_turn)。同样,它们用于仅允许某些转弯(restriction = only_right_turn等)。您的路由引擎必须支持relations才能支持OSM的转弯限制。

其次,您可以单独(或另外)通过避免在结点处形成锐角来避免急转弯。理想情况下,这是通过添加惩罚来完成的,这样,如果没有其他路由可用,路由器仍将采用此路由。

10-07 23:38