我目前正在使用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位置组成的折线。对我来说这没有意义。
我尝试了一下,但效果还不错,但是它失去了轨迹,并以某种方式结束了我未定义的点,这可能是因为两点之间的距离很长,但是我需要它能工作超过两个: 这是哪里出了问题的图片
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之前的外观,它有点不准确,所以我希望它紧贴市场发展:
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??
这是我通过谷歌折线编码器对其进行解码时得到的:一个完整的混乱。
有人可以解释我在做什么错吗?预先谢谢你!
答案 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×tamps=1563459949;1563460007