美文网首页
司机轨迹显示问题的思考与学习

司机轨迹显示问题的思考与学习

作者: GuangHui | 来源:发表于2022-07-01 10:51 被阅读0次

    司机每30s上报一次定位经纬度,当时间线拉长时,就会积累很多轨迹数据。查询司机经纬度信息时,若全量返回司机轨迹数据的话,就会导致报文过大。此时就会用到所谓的轨迹抽稀。

    原来我最初的想法是,司机是30s上报一次,而取值的时候,如果时间区间大,是否可以处理成每一个5分钟的窗口内只取其中的几个点。

    后来和同事沟通了解到,这样是一种方案,但效果会很差,因为对曲线连线的情况,在地图轨迹显示时,就会出现轨迹穿插建筑物的情况。

    而现在通用的做法一般是还是先把所有的轨迹点取出来,然后进行轨迹抽稀,比如对于直线而言,原本100个点,实际上就只取其中的10个点,但是弯道,抽稀力度就会进一步降低。

    此时我冒出来一个新的疑问点,如何判断司机轨迹点是直线还是曲线呢?

    通过度娘找到,可以根据运动方程判断运动轨迹是直线还是曲线,具体就是当运动方程是一次函数,就是直线;运动方程不是一次函数,就是曲线。

    但话是这样说了,具体如何将这个方法转化成代码呢,这真是有点难到我了。

    于是我又进一步请教大佬,原来对于轨迹数据抽稀,是有现成算法的,那就是道格拉斯-普克(Douglas-Peuker)算法。

    下面简单介绍一下,这个算法。

    道格拉斯-普克抽稀算法,是用来对大量冗余的图形数据点进行压缩以提取必要的数据点。

    该算法实现抽稀的过程是:先将一条曲线首尾点虚连一条直线,求其余各点到该直线的距离,取其最大者与规定的临界值相比较,若小于临界值,则将直线两端间各点全部舍去,否则将离该直线距离最大的点保留,并将原线条分成两部分,对每部分线条再实施该抽稀过程,直到结束。抽稀结果点数随选取限差临界值的增大而减少,应用时应根据精度来选取限差临界值,以获得最好的效果。

    关于这个算法的更多介绍和代码实现,可参考:http://t.csdn.cn/ie6Ku

    相关文章

      网友评论

          本文标题:司机轨迹显示问题的思考与学习

          本文链接:https://www.haomeiwen.com/subject/nqlcbrtx.html