我如何使用 OSRM 使用道路捕捉功能?
How do I use the snap to road function using OSRM?
我目前正在使用 OSRM 并使用一些 GPS 数据进行测试,这些数据是我使用 googles Interactive Polyline Encoder Utility 生成的
https://developers.google.com/maps/documentation/utilities/polylineutility
我想要的概念是汽车沿着街道行驶,每 20 秒发送一次 GPS 位置。我想在行程结束时显示路径和行驶的公里数。
我在 C# 中设置了一个客户端,使用匹配算法执行 GET 请求,以便与开放演示服务器后端 http://router.project-osrm.org
上的 api 进行通信
问题是我无法使用匹配算法,因为它只需要两个 GPS 点,而不是一条由多个 GPS 位置组成的折线。对我来说这没有意义。
我试过了,效果还不错,但它迷路了,不知何故在我没有定义的点结束,可能是因为两点之间的距离很长,但我需要它工作超过两个虽然:
这是它出错的地方的照片
http://router.project-osrm.org/match/v1/driving/13.682632,47.393753;13.6849281,47.3935649?overview=full&radiuses=49;49
我还发现一些不错的博客和网站告诉我应该使用 OSRM 匹配算法作为 Snap to road 工具。其中之一是这个:https://www.jamesrcroft.com/2015/06/snapping-gps-tracks-to-roads/
我还尝试了根据 OSRM wiki 的路线方法,该方法在提供的顺序中找到坐标之间的最快路线。那不是我想要的。至少它可以采用 GPS 位置的折线,但它总是非常不准确和错误。
这是我使用的方法路由的 GET 请求:
它在 OSRM 之前的样子,有点不准确,所以我想把它拍到路上:
string polyline = @"kz~dHclrbBbAfAn@iBb@{Cf@aBXkA_@s@m@i@_A}@c@c@Fu@Tq@ZWXT";
string.Format("http://router.project-osrm.org/route/v1/driving/polyline({0})?overview=full", polyline);
作为回应,我在几何属性中得到了这条折线:
mz~dHalrbB`@b@XZFFFHBK@CBI@E\uA\mA?[?SH[Ru@Nm@XkAFOg@a@m@g@AA}@_Ac@c@IIPk@Tq@Nc@?A??
这是我通过 google 折线编码器解码时得到的结果:一团糟..
有人可以解释一下我做错了什么吗?提前致谢!
我确定问题是您没有以 unix 时间发送每个地理位置的时间戳。
看看官方文档:http://project-osrm.org/docs/v5.5.1/api/#match-service
您的请求应该是这样的:
http://router.project-osrm.org/match/v1/driving/13.682632,47.393753;13.6849281,47.3935649?overview=full&radiuses=49;49×tamps=1563459949;1563460007
我目前正在使用 OSRM 并使用一些 GPS 数据进行测试,这些数据是我使用 googles Interactive Polyline Encoder Utility 生成的 https://developers.google.com/maps/documentation/utilities/polylineutility
我想要的概念是汽车沿着街道行驶,每 20 秒发送一次 GPS 位置。我想在行程结束时显示路径和行驶的公里数。
我在 C# 中设置了一个客户端,使用匹配算法执行 GET 请求,以便与开放演示服务器后端 http://router.project-osrm.org
上的 api 进行通信问题是我无法使用匹配算法,因为它只需要两个 GPS 点,而不是一条由多个 GPS 位置组成的折线。对我来说这没有意义。
我试过了,效果还不错,但它迷路了,不知何故在我没有定义的点结束,可能是因为两点之间的距离很长,但我需要它工作超过两个虽然: 这是它出错的地方的照片
http://router.project-osrm.org/match/v1/driving/13.682632,47.393753;13.6849281,47.3935649?overview=full&radiuses=49;49
我还发现一些不错的博客和网站告诉我应该使用 OSRM 匹配算法作为 Snap to road 工具。其中之一是这个:https://www.jamesrcroft.com/2015/06/snapping-gps-tracks-to-roads/
我还尝试了根据 OSRM wiki 的路线方法,该方法在提供的顺序中找到坐标之间的最快路线。那不是我想要的。至少它可以采用 GPS 位置的折线,但它总是非常不准确和错误。
这是我使用的方法路由的 GET 请求:
它在 OSRM 之前的样子,有点不准确,所以我想把它拍到路上:
string polyline = @"kz~dHclrbBbAfAn@iBb@{Cf@aBXkA_@s@m@i@_A}@c@c@Fu@Tq@ZWXT";
string.Format("http://router.project-osrm.org/route/v1/driving/polyline({0})?overview=full", polyline);
作为回应,我在几何属性中得到了这条折线:
mz~dHalrbB`@b@XZFFFHBK@CBI@E\uA\mA?[?SH[Ru@Nm@XkAFOg@a@m@g@AA}@_Ac@c@IIPk@Tq@Nc@?A??
这是我通过 google 折线编码器解码时得到的结果:一团糟..
有人可以解释一下我做错了什么吗?提前致谢!
我确定问题是您没有以 unix 时间发送每个地理位置的时间戳。
看看官方文档:http://project-osrm.org/docs/v5.5.1/api/#match-service
您的请求应该是这样的:
http://router.project-osrm.org/match/v1/driving/13.682632,47.393753;13.6849281,47.3935649?overview=full&radiuses=49;49×tamps=1563459949;1563460007