技术教程| 百度鹰眼历史轨迹查询:轨迹抽稀功能

本篇教程中,我们将详细地说明鹰眼历史轨迹查询(gettrack接口)中,如何通过vacuate_grade选项对轨迹进行抽稀,以及不同的抽稀力度对轨迹产生的影响。

 

上一篇教程中,我们介绍了鹰眼历史轨迹查询(gettrack接口)中process_option纠偏字段中的need_mapmatch选项开启之后,通过对轨迹点的绑路,使轨迹更平滑、更准确地还原出车辆真实的行驶路线。同时我们也注意到,绑路会增加很多道路的“形状点”作为补充。这些补充出来的点在“多多益善”的角度上看,应该是好事,轨迹点越多,对车辆行驶路线的还原越“精细”,对转弯、掉头等轨迹细节的刻画也更“准确”。然而过多的轨迹点,也会带来负担:网络传输的带宽异常珍贵,在某些对于精度要求不高的场合,过多的轨迹点对于稀缺的带宽资源来说,反而是一种浪费;前端在轨迹的绘制时,点越多绘制的开销也越大,在某些对绘制性能和出图速度要求较高的场景下,过多的轨迹点也显得“过犹不及”。

 

和纠偏选项类似,抽稀也可以指定不同的级别。抽稀力度由process_option字段中的vacuate_grade选项指定。

vacuate_grade=0时,代表不进行抽稀操作,vacuate_grade的值从1到5,抽稀的力度越来越大。也就是说vacuate_grade=1时,会对轨迹进行抽稀,这种抽稀力度最为保守,只会删除尽可能少的点;而vacuate_grade=5时,抽稀的力度最为激进,将会删除尽可能多的点,只保留最少量的轨迹点。

下面我们仍然以前两节教程中的那条轨迹为例,详细地演示一下,不同的抽稀力度对该轨迹的效果产生的影响,在此之前,在表1中,列出了各种抽稀力度下,保留的轨迹点个数,意图先从数字的角度给大家一个整体的印象,之后再分别演示每种抽稀力度的详细效果。

 

vacuate_grade=0

不进行抽稀的情况,如图1所示:

图1(不经过抽稀的轨迹)

 

我们看出,在没有经过抽稀的情况下,该段轨迹共有777个轨迹点。冗余是比较严重的。

vacuate_grade=1

  图2中展示了vacuate_grade=1时,对整条轨迹的抽稀效果。轨迹点从777个骤降到36个,且比较好地保留了轨迹的原貌。

图2(vacuate_grade=1时的轨迹整体图)

 

抽稀后的轨迹放大后(图3),可以看到在转弯和掉头等关键位置处的轨迹点,也很好地得到了保留,可以准确地还原车辆行驶路线的原貌。

 

图3(vacuate_grade=1时的轨迹局部放大图)

 

vacuate_grade=2

图4中展示了vacuate_grade=2时,对整条轨迹的抽稀效果。轨迹点从36个进一步缩减到27个。

 

图4(vacuate_grade=2时的轨迹整体图)

 

对于力度1和力度2的区别,我们找到整体图的右下角进行放大,详细对比:

 

 

通过图5和图6的对比,我们发现,抽稀力度为2时,相比力度1的抽稀幅度很有限,在尽可能保留轨迹原貌的情况下,竭尽全力做了进一步的精简。在绝大多数情况下,vacuate_grade=2已经是在不影响轨迹还原效果情况下的最强力度了,下文中我们可以看出,更大的轨迹力度将开始引起轨迹的准确性。所以vacuate_grade=2是鹰眼抽稀的默认力度。

 

vacuate_grade=3

图7展示了在vacuate_grade=3的力度下,对轨迹的抽稀效果。轨迹点数由27进一步缩减到了16。

 

图7(vacuate_grade=3时的轨迹整体图)

 

需要注意的是,虽然从整体图上看效果尚可,但局部放大后,我们将会发现,vacuate_grade=3的力度下,转弯和掉头的细节已经所剩无几,开始影响对原始轨迹的刻画了:

 

图8(vacuate_grade=3时的轨迹局部放大图)

 

vacuate_grade=4

图9展示了vacuate_grade=4的抽稀力度下的轨迹,细节进一步缺失,因此我们不再展示局部细节图了。除非该轨迹的目的是为了展示缩略图,否则不推荐这个抽稀力度。

 

图9(vacuate_grade=4时的轨迹整体图)

 

vacuate_grade=5

图10展示了抽稀力度为5的情况下,轨迹的整体图,可以看出这个力度已经丧心病狂到了连缩略图的效果都不能满足的地步。

 

图10(vacuate_grade=5时的轨迹整体图)

 

总结

通过上文略显繁琐的演示,我们对不同抽稀力度下对轨迹的影响有了一个较为全面的了解。最后我们给出一些建议:

 

绝大多数情况下,使用vacuate_grade=1或2就可以保证很好的效果,如果你希望比较准确地还原车辆行驶的原貌,并在放大后的局部也能保存轨迹中的关键细节,那么你应当只在1和2这两个力度中选择,由于力度1下已经大幅减少了轨迹点的数量,一般情况下设置vacuate_grade=1即可,如果你要查询很多量车的历史轨迹,或者对网络带宽的成本非常敏感,那么设置vacuate_grade=2也有不错的效果,是最高性价比的选择,因此也作为鹰眼抽稀的默认级别。

 

如果查询轨迹是为了绘制缩略图,那么设置vacuate_grade=3或4是个明智的选择,一般选择3就可以。在各种常见的场景下都不推荐vacuate_grade=5这种力度的抽稀。