【问题标题】:How do I use the snap to road function using OSRM?如何使用 OSRM 使用 snap to road 功能?
【发布时间】:2019-07-18 22:39:21
【问题描述】:

我目前正在使用 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??

这是我通过谷歌折线编码器解码时得到的:一团糟..

有人可以解释我做错了什么吗?提前谢谢!

【问题讨论】:

    标签: osrm


    【解决方案1】:

    我确定问题在于您没有以 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-31
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多