轨迹系列14——一条优美的轨迹线的诞生日记

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

此篇为跨度两年的轨迹系列文章总结之一。算法

1.轨迹,为何须要“装扮”

       得益于移动设备的普及性,在缺乏其余监管手段的状况下,城市管理中基于移动设备实现对人员、车辆的管理是十分行之有效的方法。其中轨迹的管理方案囊括了轨迹里程统计、工做状态监管、实时位置查看、历史轨迹回溯等等,而这一切方案可以真正的行之有效则必须依赖于一条足够“优美”的轨迹线。只有轨迹线“优美”,统计才会更精确、展现才会更直观。微信

      

       可是想把一条轨迹线处理到足够优美,并非一件容易的事情,它受到太多太多的外部影响。这里,我直接列出影响轨迹展现效果的主要因子,但愿你们可以带着这些问题一块儿探讨解决思路,了解原来一条优美的轨迹线后面有这么多的故事:大数据

       a.坐标采集频率问题:轨迹线是由轨迹点链接组成,而轨迹点必定都是离散的,离散程度取决于坐标获取的频率。频率高,设备耗电,轨迹存储增大,可是轨迹特征明显;频率低,轨迹线特征容易丢失。如何可以比较智能的调整坐标上报频率?优化

       b.坐标采集保活问题:移动设备广泛具备省电模式、息屏功能等,这些场景均容易致使GPS采集程序被系统清除,从而致使坐标在某段时间忽然没法采集、信号中断。而互联网APP却每每早已被设备添加至白名单(与厂商有合做关系等),并不会有此问题。动画

       c.轨迹坐标转换问题:GPS是WGS84坐标,北斗是CGCS2000坐标,而轨迹展现依托的地图每每是各类不一样坐标系的地图,二者直接须要进行坐标转换。并且不一样于互联网应用只采用一种地图,只需解决一种坐标类型的转换,城市管理中须要解决的坐标转换具备地图类型多、地图精度不可控(如脱密地图)等问题。而坐标转换的准确度将直接影响轨迹展现的效果。设计

       d.坐标准确度问题:卫星定位最少要求4颗星同时观测(因为其三球定位原理,再加上把时间做为变量,因此至少须要4颗星来观测),而在很多状况下,移动设备并不能知足同时接收到4颗以上卫星的信号(好比:室内、高层建筑遮挡等),这将致使此时的卫星定位偏差很大。如何能够提升卫星定位的准确度?blog

       e.轨迹坐标去噪问题:坐标准确度问题是一个不可避免的问题,在此状况下,须要一套能够对坐标异常点进行去除的方法,从而保证轨迹展现的效果不受异常点的影响。游戏

       f.轨迹线链接问题:轨迹线的逐点链接必然会致使线和线之间过渡不平滑,而且单纯的轨迹点直连,还容易出现轨迹线“穿墙”问题(A点和B点分别在十字路口不一样地方,AB直连将致使线条穿越中间的非路面建筑)。进程

       g.轨迹播放问题:轨迹自然是动态的,仅仅以轨迹线描述不能真实展示轨迹的时空特征。如何优美的展现轨迹动态,让用户具备看动画片同样的观感?

   

2.优化,从坐标采集开始

         在上述的各类轨迹展现影响因子中,GPS采集频率、GPS采集保活、GPS准确度优化均属于GPS获取环节需解决的问题,而且是影响权重最大的问题,如下对此三点的解决作一个简单的描述。

2.1坐标采集频率优化

        

       如前文所述,坐标采集频率直接关系到轨迹点的密度,理论上轨迹点是越密越好,可是实际中要考虑设备的耗电量、存储的大小和有效值。举以下几个例子,能够更好的理解轨迹采集频率的调整策略:

       a.某监督员在一条笔直的道路上缓行,此时轨迹每隔20秒采一个轨迹点和每隔60秒采一个轨迹点的效果是同样的,并不会对轨迹的展现有很大的影响。

       b.某监督员进入室内办公,此时的场景与笔直路上缓行是同样的。

       c.某监督员缓行时,忽然开始跑步,此时轨迹点每隔20秒与每隔60秒采集将有很大区别,由于此时间段内的直线距离会有较大区别,容易出现特征点遗漏。

       基于以上三种情形,坐标采集频率的自动调整方案即可以作一个简单的概括:

       a.系统有设置的默认采集频率,针对人员和车辆是不一样的。

       b.当连续多个采集点为静止或相差不大时(在阈值范围内),此时能够将坐标采集频率适当调慢。

       c.当连续多个采集点的距离大于阈值范围时,此时能够将坐标采集频率适当调快。

2.2坐标采集程序保活优化

       咱们首先以研究“咕咚运动”的保活机制做为例子来讲明:

       (1)当"咕咚"处于中止状态时,一键清理和黑屏状态会被杀死,说明在没有进入运动界面以前,其保活机制没有被启动(即没有使运动界面切换到后台等)。

       (2)当“咕咚”处于运动状态时,一键清理和黑屏状态没有被杀死(滑动清理除外),说明已经启动保活机制:

       a."咕咚"禁止了返回键,以保证运动Activity不被销毁;

       b.不断更新通知栏计时,以保证APP始终在前台,防止被系统回收;

       c."咕咚"被清理后可以自动重启,通知被删除后自动弹出,说明可能有另一个东西(进程或Service)监听器运动Service(或进程)存活状态,当Service被销毁时,立马将其拉起来;

       d.“咕咚”被强制中止或清理杀死后,再次进入会直接显示运动界面且可以保持杀死以前的运动状态,说明其可能利用配置文件记录了相关状态;

       e.锁屏/解锁后,"咕咚"运动界面会自动弹出,说明其利用了广播机制对锁屏广播进行监听,弹出Activity以保证进程始终在前台;
       总结“咕咚运动”的保活机制为:常驻通知栏,双进程守护,广播锁屏,自定义锁屏。

       一样,咱们也分别研究了“悦动力”、“悦动圈”这类运动APP,其保活机制大同小异,因此最终咱们将坐标采集程序保活策略以如上分析进行了相关优化。

2.3坐标准确度优化

       坐标信号强度对定位准确度影响十分大,好比当设备在室内或者高楼下时,坐标信号是明显减弱的。此时咱们采用了以下优化策略:

       a.记录信号强弱做为后续轨迹奇异点(问题点)的筛选条件之一。

       b.当信号弱的超过必定阈值时,切换成百度定位方案。

3.拟合,让轨迹点更有质量

       说完坐标采集的系列优化方案,咱们接下来一块儿探讨从算法层面上对轨迹点进行优化的策略。依据实施条件不一样,展现要求不一样,这里咱们前后从三个不一样方向进行轨迹点拟合研究。

3.1 基于道路线的路网匹配拟合

         顾名思义,本方案必须有道路线数据,其原理为将各轨迹点匹配至与道路垂直距离最近的节点上,而且将先后两点沿道路顺势链接。

 

       优势:轨迹所有在道路上,展现美观。

       缺点:依赖于道路数据的完整性,而且展现有失真实。

3.2 基于时空聚类的去噪算法

       此算法的思路为在尽可能不改变轨迹点的特征状况下,经过轨迹的时空聚类,将某些特征类似的点聚在一处,从而减少因为轨迹点打结致使的轨迹杂乱。可是本算法并不只仅是常规的空间聚类算法,因为轨迹具备自然的时间属性,不考虑轨迹的时间属性进行聚类则会丢失轨迹的许多特征信息。例如,双行道道路,来回分别在不一样的行道路上,若是不考虑时间维度,则会出现将双行道上的轨迹点聚类到一个行道上。

       优势:解决了轨迹点打结展现问题。

       缺点:对于轨迹点之间的链接并无平滑处理。

3.3 基于卡尔曼滤波的轨迹优化方案

       卡尔曼滤波(Kalman filtering)一种利用线性系统状态方程,经过系统输入输出观测数据,对系统状态进行最优估计的算法。其在轨迹处理中,能够达到经过预测轨迹点与实际轨迹点之间的误差来进行轨迹位置的调整,实现轨迹的平滑。

 

       优势:轨迹线变的曲线平滑,更加美观。

       缺点:平滑度很难控制,致使轨迹有失真实,轨迹特征变模糊,而且轨迹噪声点对总体平滑效果影响很大。

3.4 最终拟合方案

         以上方案各有优劣,可是若是可以进行有效的综合,而且再加上其余的数据处理流程,轨迹点的质量将会提高更多。具体描述以下:

  1. 经过坐标的准确度参数,去除一部分偏差特别大的轨迹点。
  2. 经过计算轨迹点速率异常变化,去除一部分“飞点”。
  3. 基于时空聚类算法,进行轨迹点聚合。
  4. 经过卡尔曼滤波进行轨迹平滑美化,且控制平滑度过大。
  5. 针对车辆轨迹,在存在无缺的道路线数据时,采用路网匹配算法。

 

4.动效,让轨迹展现具备“观影”感觉

4.1 平滑动起来的人(车)

       静止的人(车)图标没法表示真实的变化,随着位置坐标的获取而跳跃变化的人(车)图标又颇显突兀,若是能实时的、平滑的显示人(车)位置变化将会使用户具备更强的“参与”感。咱们以人的展现为例,为实现该目标,咱们设计了16个方向的人员图标,根据坐标点之间的角度计算来选择不一样的人员图标,而且经过计算两点距离和播放速度来计算人员前进时的图标变化,最终实现诸如前进时人手的左右摇摆效果等。

                   

4.2 流动的轨迹箭头

       轨迹箭头的流动除了能够增长总体轨迹展现的动效,更可以表示出轨迹的方向特征。可是轨迹箭头过于密集,也会影响轨迹的美观。综合设计,当地图缩放到必定级别后,此时出现轨迹箭头流动特效。

 

4.3 类“滴滴”的多轨迹展现效果

       “滴滴”这类互联网轨迹展现方案已经愈来愈被大众所接受,尤为是多车辆(人员)的实时轨迹展现上。经过在轨迹大数据存储、轨迹信息流、前端展现算法的不断研究下,目前展现上基本可与之靠齐,而且也前后获得了实际项目的验证,其中某扬尘项目为监控整个城市1.6万辆车24小时的实时轨迹。

 

4.4二三维一体的轨迹展现特效

         在三维场景中实现对轨迹的展现,将更加具备视觉的直观性、冲击力。而且借助游戏场景展现的思路,将会让用户有更好的互动感。

 

 

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

                                                                           若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^