如何通过OSRM使用按扣行驶功能?

时间:2019-07-11 14:54:01

标签: osrm

我目前正在使用OSRM,并使用了一些GPS数据进行测试,这些数据是我使用Google的Interactive Polyline Encoder Utility生成的 https://developers.google.com/maps/documentation/utilities/polylineutility

即时通讯的概念是,汽车沿着街道行驶,每20秒发送一次其GPS位置。我想显示行程结束时的路径和行驶的距离。

我用C#设置了一个客户端,该客户端使用match算法执行GET请求,以与开放的demoserver后端http://router.project-osrm.org上的api通信

问题是我无法使用匹配算法,因为它仅需要两个GPS点,而不是由多个GPS位置组成的折线。对我来说这没有意义。

我尝试了一下,但效果还不错,但是它失去了轨迹,并以某种方式结束了我未定义的点,这可能是因为两点之间的距离很长,但是我需要它能工作超过两个: 这是哪里出了问题的图片

enter image description here

http://router.project-osrm.org/match/v1/driving/13.682632,47.393753;13.6849281,47.3935649?overview=full&radiuses=49;49

我还发现一些不错的博客和网站告诉我,我应该将OSRM匹配算法用作“贴紧道路”工具。其中之一就是这个:https://www.jamesrcroft.com/2015/06/snapping-gps-tracks-to-roads/

我还尝试了一种路线方法,该路线方法根据OSRM Wiki在提供的顺序中找到了坐标之间最快的路线。那不是我想要的。至少它可能需要GPS定位的折线,但始终极其不准确和有缺陷。

这是我使用的方法路线的GET请求:

关于OSRM之前的外观,它有点不准确,所以我希望它紧贴市场发展:

enter image description here

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??

这是我通过谷歌折线编码器对其进行解码时得到的:一个完整​​的混乱。 enter image description here

有人可以解释我在做什么错吗?预先谢谢你!

1 个答案:

答案 0 :(得分:0)

我确定问题是您没有在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&timestamps=1563459949;1563460007