轨迹纠偏

简介

各种定位方式或多或少都存在着一定的误差。如果是在室外,如果GPS信号比较好,定位结果会比较准确。当GPS信号不好的时候(例如高架桥下、隧道、高层建筑遮挡等),可能就会使用WIFI或基站定位,特别是当周边WIFI热点比较少的时候会使用基站定位,定位误差会有所加大,产生轨迹漂移的现象。


为了更好地帮助开发者管理轨迹和展现轨迹,鹰眼提供了轨迹纠偏功能,达到优化轨迹、校正里程等效果。(注:纠偏轨迹与原始轨迹数据相互独立,原始轨迹数据仍被保留并可查询。)

坐标系说明

目前中国主要有以下三种坐标系:


WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。


GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。


BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标


非中国地区地图,统一使用WGS84坐标


鹰眼 Web服务API v3.0的默认输入输出坐标为百度经纬度坐标系(bd09ll),同时可通过"coordType" ,"coordTypeInput","coordTypeOutput"(以各方法参数介绍为准)控制输入输出的坐标类型,鹰眼将自动完成转换。

如何使用轨迹纠偏

在查询轨迹时设置是否纠偏(isProcessed)并设置纠偏选项(processOption)。鹰眼在 processOption 中开放了多种纠偏选项供开发者设置,包括:

1. 去噪:可设置是否需要去除角度、速度和方向异常的轨迹点

2. 绑路:设置是否将轨迹点绑定至路网道路

3. 抽稀:设置是否进行抽稀处理,对冗余的轨迹点进行抽稀去除处理,如一条直线上除起终点外的多个轨迹点

4. 定位精度过滤:设置定位精度过滤阈值,用于过滤掉定位精度较差的轨迹点。

5. 交通方式:可指名轨迹对应交通方式,鹰眼纠偏模块将根据不同的交通方式采用不同的轨迹纠偏处理。


同时,鹰眼支持对中断5分钟以上的轨迹区间进行里程补偿,支持使用直线/驾车/骑行/步行这几种方式补偿中断区间的里程。轨迹纠偏服务将根据开发者的以上设置来进行轨迹纠偏。

示例代码

// 请求标识
int tag = 1;
// 轨迹服务ID
long serviceId = 0;
// 设备标识
String entityName = "myTrace";
// 创建历史轨迹请求实例
HistoryTrackRequest historyTrackRequest = new HistoryTrackRequest(tag, serviceId, entityName);
 
// 开始时间2017-4-17 0:0:0的UNIX 时间戳
long startTime = 1492358400;
// 结束时间2017-4-17 23:59:59的UNIX 时间戳
long endTime = 1492444799;
// 设置开始时间
historyTrackRequest.setStartTime(startTime);
// 设置结束时间
historyTrackRequest.setEndTime(endTime);
 
 
// 设置需要纠偏
historyTrackRequest.setProcessed(true);
 
 
// 创建纠偏选项实例
ProcessOption processOption = new ProcessOption();
// 设置需要去噪
processOption.setNeedDenoise(true);
// 设置需要抽稀
processOption.setNeedVacuate(true);
// 设置需要绑路
processOption.setNeedMapMatch(true);
// 设置精度过滤值(定位精度大于100米的过滤掉)
processOption.setRadiusThreshold(100);
// 设置交通方式为驾车
processOption.setTransportMode(TransportMode.driving);
// 设置纠偏选项
historyTrackRequest.setProcessOption(processOption);
 
 
// 设置里程填充方式为驾车
historyTrackRequest.setSupplementMode(SupplementMode.driving);
 
 
// 初始化轨迹监听器
OnTrackListener mTrackListener = new OnTrackListener() {
    // 历史轨迹回调
    @Override
    public void onHistoryTrackCallback(HistoryTrackResponse response) {}
};
 
 
// 查询轨迹
mTraceClient.queryHistoryTrack(historyTrackRequest, mTrackListener);

轨迹纠正效果示意图

trackprocess.png