简介
各种定位方式或多或少都存在着一定的误差。如果是在室外,如果GPS信号比较好,定位结果会比较准确。当GPS信号不好的时候(例如高架桥下、隧道、高层建筑遮挡等),可能就会使用WIFI或基站定位,特别是当周边WIFI热点比较少的时候会使用基站定位,定位误差会有所加大,产生轨迹漂移的现象。
为了更好地帮助开发者管理轨迹和展现轨迹,鹰眼提供了轨迹纠偏功能,达到优化轨迹、校正里程等效果。(注:纠偏轨迹与原始轨迹数据相互独立,原始轨迹数据仍被保留并可查询。)
如何使用轨迹纠偏
在查询轨迹时设置是否纠偏(isProcessed)并设置纠偏选项(processOption)。
1. isProcessed=1设置需要纠偏,为0则返回原始轨迹
2. 设置processOption纠偏选项,纠偏选项有以下4种:
①need_denoise:去噪,默认为1
②need_vacuate:抽稀,默认为1
③need_mapmatch:绑路,之前未开通绑路的service,默认值为0;之前已开通绑路的service,默认值为1。
目前仅对驾车轨迹有效,会判断正逆行。绑路时会依据道路形状进行补点,例如:原始轨迹在道路拐弯处缺点,绑路将进行补充,补点的定位时间目前取的是前一个原始点的定位时间。
④radius:精度过滤,默认为0:不过滤。
每个轨迹点鹰眼都会记录它的定位精度,如设置该值,则会将定位精度radius大于该值的轨迹点过滤掉。目前各种定位方式的平均精度为:GPS:10米,WIFI定位:24米,基站定位:210米。
以上选项支持多选,设置时用英文逗号","分割,若不设置某选项则按默认值处理。
使用示例:
// 轨迹服务ID long serviceId = 10000; // entity标识 String entityName = "要查询的entity"; // 是否返回精简结果 int simpleReturn = 0; // 是否纠偏 int isProcessed = 0; // 纠偏选项 String processOption = null; // 开始时间 int startTime = (int)(System.currentTimeMillis()/1000); // 分页大小 int pageSize = 5000; // 分页索引 int pageIndex = 1; // 间隔打包周期,轮询调用queryHistoryTrack() private void queryHistoryTrack() { // 结束时间 int endTime = (int)(System.currentTimeMillis()/1000); client.queryHistoryTrack(serviceId , entityName, simpleReturn, isProcessed, processOption, startTime, endTime, pageSize, pageIndex, trackListener); //在OnTrackListener的onQueryHistoryTrackCallback()回调接口中,判断是否已查询完毕。 OnTrackListener trackListener = new OnTrackListener() { public void onQueryHistoryTrackCallback(String message) { JSONObject dataJson = new JSONObject(message); int total = dataJson.getInt("total"); if (total > (pageSize * pageIndex)) { queryHistoryTrack(++pageIndex); } // 解析并保存轨迹信息 } }
轨迹纠偏使用要点
轨迹纠偏需要一定的上下文进行分析,为保证纠偏效果,尽量保证查询区间内有5个以上的轨迹点。
对于纠偏选项的使用,开发者可根据业务需要灵活使用,例如:
- 若当前业务需求只要求去除噪点,尽量保留原始轨迹点,则可以将纠偏选项设置为:
need_denoise=1,need_vacuate=0,need_mapmatch=0;
- 若当前业务需求要求在保证轨迹正确性的前提下,尽量去掉重复或者不必要的轨迹点,减少点量,则可以将纠偏选项设置为:
need_denoise=1,need_vacuate=1,need_mapmatch=0;
-若当前业务需求绑路,可以将纠偏选项设置为:
need_denoise=1,need_vacuate=1,need_mapmatch=1;
注:绑路时建议同时选择去噪,否则噪点容易绑路失败
-若当前业务只关注定位精度较高的GPS数据,可以将纠偏选项设置为:
need_denoise=0,need_vacuate=0,need_mapmatch=0,radius=15;
轨迹纠正效果示意图