鹰眼ios sdk提供了一系列与轨迹相关的功能。通过调用 btktrackaction 类中相应的接口发起请求,响应通过 btktrackdelegate 协议中对应的方法回调给开发者。轨迹相关的功能主要包括:
在简介中,出现了轨迹纠偏、里程补偿、自定义轨迹点、缓存轨迹等概念,本节对这几个概念进行解释。
轨迹纠偏
各种定位方式或多或少都存在着一定的误差。如果是在室外,如果gps信号比较好,定位结果会比较准确。当gps信号不好的时候(例如高架桥下、隧道、高层建筑遮挡等),可能就会使用wifi或基站定位,特别是当周边wifi热点比较少的时候会使用基站定位,定位误差会有所加大,产生轨迹漂移的现象。
为了更好地帮助开发者管理轨迹和展现轨迹,鹰眼提供了轨迹纠偏功能,达到优化轨迹、校正里程等效果。(注:纠偏轨迹与原始轨迹数据相互独立,原始轨迹数据仍被保留并可查询。)
鹰眼轨迹纠偏包括以下步骤:
对于明显的噪点进行识别并去除
关于去噪的使用教程请见:
对于冗余的数据点进行去除,如一条直线上的多个轨迹点,减少数据量,提升展示效率
关于抽稀的使用教程请见:
将轨迹点绑定至道路,达到纠正偏移轨迹、补充中断轨迹点(如:轨迹不连续、进入隧道导致的丢点)、补充道路拐点等效果。
关于绑路的使用教程请见:
对于轨迹中前后轨迹点定位时间相差>5分钟,且距离大于300米地区间,鹰眼认定其为中断区间。对于中断区间,鹰眼支持根据对应地交通方式(驾车、骑行、步行)使用路线规划进行轨迹点和里程的补偿,实现轨迹的完整性。
关于中断区间补偿的使用教程请见:
中断区间补偿
对于轨迹中前后轨迹点定位时间相差>5分钟,且距离大于300米地区间,鹰眼认定其为中断区间。对于中断区间,鹰眼支持根据对应地交通方式(驾车、骑行、步行)使用路线规划进行轨迹点和里程的补偿,实现轨迹的完整性。
关于中断区间补偿的使用教程请见:
鹰眼ios sdk中使用 btkquerytrackprocessoption 类来设置轨迹纠偏选项:
纠偏选项的默认值为去噪、不绑路、不过滤噪点、交通方式为驾车。
里程补偿
在查询某时间段内的轨迹或里程时,除了指定纠偏选项外,还支持里程补偿。两个轨迹点定位时间间隔5分钟以上,被认为是中断,鹰眼支持对中断5分钟以上的轨迹区间进行里程补偿。里程补偿只是对里程数进行补偿纠正,并不会补充具体的轨迹点。
鹰眼ios sdk中使用 btktrackprocessoptionsupplementmode 枚举类型表示里程补偿的方式:
btk_track_process_option_no_supplement 代表不进行补充
btk_track_process_option_supplement_mode_straight 代表使用直线距离补充
btk_track_process_option_supplement_mode_driving 代表使用最短驾车路线距离补充
btk_track_process_option_supplement_mode_riding 代表使用最短骑行路线距离补充
btk_track_process_option_supplement_mode_walking 代表使用最短步行路线距离补充
里程补偿的默认值为不补充,中断两点间距离不记入里程。
纠偏选项中的交通方式和里程补偿中的交通方式并无关系,纠偏选项中交通方式只会影响纠偏策略;而里程补偿中的交通方式只有当轨迹点定位间隔超过5分钟时,才起作用。
通过 -(void)querytracklatestpointwith:(btkquerytracklatestpointrequest *)request delegate:(id
以下代码片段表示查询名称为 “entitya” 的终端,经过纠偏之后的实时位置,去噪、绑路、定位精度大于10米的点将被认为是噪点。
// 设置纠偏选项btkquerytrackprocessoption*option =[[btkquerytrackprocessoption alloc] init];option.denoise=true;option.mapmatch=true;option.radiusthreshold=10;// 构造请求对象btkquerytracklatestpointrequest*request =[[btkquerytracklatestpointrequest alloc] initwithentityname:@"entitya"processoption: option outputcootdtype:btk_coordtype_bd09llserviceid:100000tag:11];// 发起查询请求[[btktrackaction sharedinstance] querytracklatestpointwith:request delegate:self];
通过 -(void)queryhistorytrackwith:(btkqueryhistorytrackrequest *)request delegate:(id
以下代码片段表示查询名称为 “entitya” 的终端,在过去24小时内经过纠偏后的轨迹,纠偏选项采用默认值(去噪、不绑路、不过滤噪点、交通方式为驾车);选择最短步行路线距离进行里程补偿。如前文中的解释,纠偏选项中的驾车交通方式代表按照驾车的行驶行为进行纠偏,而对定位时间间隔大于5分钟的轨迹点间,采用最短步行路线距离进行里程补偿,正常的轨迹点不受里程补偿方案的影响。
// 构造请求对象nsuinteger endtime =[[nsdate date] timeintervalsince1970];btkqueryhistorytrackrequest*request =[[btkqueryhistorytrackrequest alloc] initwithentityname:@"entitya"starttime:endtime -84400endtime:endtime isprocessed:trueprocessoption:nil supplementmode:btk_track_process_option_supplement_mode_walkingoutputcoordtype:btk_coordtype_bd09llsorttype:btk_track_sort_type_descpageindex:1pagesize:10serviceid:103044tag:13];// 发起查询请求[[btktrackaction sharedinstance] queryhistorytrackwith:request delegate:self];
轨迹纠偏需要一定的上下文进行分析,为保证纠偏效果,尽量保证查询区间内有5个以上的轨迹点。
对于纠偏选项的使用,开发者可根据业务需要灵活使用,例如:
denoise=1,vacuate=0,mapmatch=0;
denoise=1,vacuate=1,mapmatch=0;
denoise=1,vacuate=1,mapmatch=1;
denoise=1,vacuate=1,mapmatch=1,transportmode=2;
查询获得历史轨迹后,可结合ios地图sdk绘制并展示轨迹。
上一篇
下一篇
本篇文章对您是否有帮助?