zoukankan      html  css  js  c++  java
  • 轨迹系列3——通过时间及距离维度进行轨迹聚类平滑的一种方案

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

    1.背景

    最近项目需求,对轨迹的纠正、信息挖掘、展示等做了一系列的探索性研究。在前面的博客中,写到了基于中值滤波的轨迹纠正(http://www.cnblogs.com/naaoveGIS/p/6492889.html),实际运用中,我们是把卡尔曼滤波算法与实际场景结合(加上一些性能和各细节优化)来进行的轨迹纠正,在以后的博客中我将和大家一起分享。这里我要和大家一起探讨的是在前端如何对轨迹进行平滑的展示。

    以下是未经处理过的原始轨迹:

     

    明显可以看到,当人员在某个地方来回走动时,纠缠在一起的轨迹线会特别的多。普通的轨迹平滑,是指将直线连接以bezel曲线进行平滑,但是对于这种打结的现象,则无法单纯以曲线拟合来解决。这里,我们讨论一种以聚类算法来让局部打结点整合成一个点从而实现平滑的方案。

    2.思路详解

    2.1一般聚类方法

     

    普通聚类一般有网格聚类法、K中值聚类法等,这些聚类方法一般是仅从地理维度出发来进行聚类,但是在我们轨迹的实际情况中我们必须将时间这个维度考虑进去才是更合理的,否则整个轨迹图很容易丢失一些重要的节点信息。所以,这里我们以距离、时间两个维度来进行聚类。

    2.2加入时间维度的聚类方法

    这里我们必须考虑这样几个影响因子:

    GPS是很容易漂移的,如果某几个点出现畸变,它同样应该归纳为聚类点中。

    时间维度和空间维度的结合,可以解释为在某个时间段内,连续移动的空间位置与聚类点之间的聚类均没有超过阈值,则归纳为同一点。

    于是我们这个聚类方法可以描述为:在规定时间及以上,某物体连续移动的距离没有超过聚类点的距离阈值,期间允许出现某几次阈值距离外的畸变点,那么这样的一些点统一可以聚类为一个点。

    具体聚类步骤为:

     

    3.结果展示

    3.1原始数据聚类展示

     

    3.2.加上卡尔曼滤波后的结果展示

     

    可以看见,卡尔滤波对轨迹的平滑效果很明显。

    3.3进一步优化后的展示

                  

    图中因为有部分轨迹数据有明显信号丢失,导致轨迹的连线出现了穿墙的问题,这里对轨迹信号丢失处进行打断处理,如图:

     

    4.优缺点讨论

    优点:将没有太大意义的轨迹点聚类成一个点,可以实现很好的平滑效果,并且可以突出逗留位置。

    缺点:参数设置的不同会严重影响展示结果,并且可能会导致某些特征点的丢失。

    5.进一步设想

    在通过大量轨迹数据实现路网自建后,结合自建路网进行轨迹纠正应该效果会更加逼真。

                                   

                                                                        -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                               如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                                                                                

  • 相关阅读:
    记录PHP的执行时间
    Mysql数据字典导出
    PHP用post来进行Soap请求
    laravel(lumen)配置读写分离后,强制读主(写)库数据库,解决主从延迟问题
    使用vagrant构建你们团队的开发环境
    Lumen框架使用Redis与框架Cache压测比较
    使用php-cs-fixer格式化你的代码
    Javascript下拉导航
    jsf2.0视频
    jsf2入门视频 教程
  • 原文地址:https://www.cnblogs.com/naaoveGIS/p/6653907.html
Copyright © 2011-2022 走看看