一种基于二分法的历史轨迹快速检索方法
【专利摘要】本发明公开了一种基于二分法的历史轨迹快速检索方法,将整个存储区域分成两段,第一段是起始扇区到当前扇区,第二段是时间最老扇区到结束扇区,检索时先判断给定时间T属于哪个段,然后用二分法确定给定时间T属于哪个扇区,最后对该扇区再次使用二分法确定给定时间T所在的具体步数。本发明基于二分法的历史轨迹快速检索方法极大地减少了检索次数,缩短了检索时间,能够快速准确的读取指定时间的历史轨迹,提高了GPS车载终端实时响应能力。
【专利说明】一种基于二分法的历史轨迹快速检索方法
【技术领域】
[0001]本发明涉及具有历史轨迹记录功能的GPS车载终端,特别是一种基于二分法的历史轨迹快速检索方法。
【背景技术】
[0002]随着全球卫星定位系统的快速发展,GPS车载终端已广泛应用于私家车、物流车、客运车、货运车、危险品运输车、出租车等各类车辆的定位追踪或监控报警系统中。GPS车载终端通过GPRS无线网络传输将收到的卫星定位信息上传给监控中心,由监控中心统一监控所有在线车辆的运行情况。然而当GPRS连接不上或SIM卡余额不足时,车辆的行驶轨迹将不能传输给监控中心,从而产生监控盲区。
[0003]为了弥补这种不足,现在大部分的GPS车载终端都具有历史轨迹记录功能,即可将车辆最近一段时间的行驶轨迹记录在车载终端中,记录的历史轨迹通常在I万条以上。当发生紧急事件或交通事故时,监控中心可发指令给GPS车载终端检索指定时间的历史轨迹,以确定车辆过去某个时间的位置和状态。目前常用的历史轨迹检索方法有:(I)按扇区顺序检索,即从存储区域开始扇区的第I步开始,一步一步往下找,直到找到给定时间的那条历史轨迹;(2)按最老时间顺序检索,即从时间最老扇区的第I步开始,一步一步往下找,直到找到给定时间的那条历史轨迹;(3)按最近时间顺序检索,即从当前扇区的最新时间开始,一步一步往回找,直到找到给定时间的那条历史轨迹。
[0004]但是以上几种方法检索次数较多,且对于不同的给定时间检索次数相差很大,当所给定的时间与检索的起始步时间比较接近时,就能较快检索到;当所给定的时间远离检索的起始步时间时,就需要很长时间才能检索到。综上所述,这几种方法的缺点是:平均检索次数都随记录的历史轨迹条数的增大成比例增加。
【发明内容】
[0005]为此,本发明的目的在于提供一种基于二分法的历史轨迹快速检索方法,以减少了检索次数,降低检索时间,能够快速准确的找到指定时间的车辆历史轨迹,确定车辆位置和车辆状态信息。
[0006]本发明的目的是通过以下技术方案实现的。
[0007]一种基于二分法的历史轨迹快速检索方法,包括:
[0008]A、对车辆的行驶历史轨迹进行存储,包括:
[0009]al、系统上电后初始化,自检历史轨迹存储区域,确定最老扇区、当前扇区、当前步数、起始扇区和结束扇区;
[0010]a2、设定历史轨迹记录的时间间隔,开启定时器;
[0011]a3、判断定时时间是否到,如是,则进入步骤a4 ;如否,则退出,等待下一次;
[0012]a4、判断当前是否导航,如是,则进入步骤a5 ;如否,则退出,等待下一次;
[0013]a5、将车辆行驶轨迹信息写入到当前步数,当前步数加1,定时计数清O ;[0014]a6、判断当前步数是否等于扇区最大步数,如是,则进入步骤a7,如否,则退出,等待下一次;
[0015]a7、当前扇区加I,当前步数等于I ;
[0016]a8、判断当前扇区是否大于结束扇区,如是,则进入步骤a9 ;如否,则退出,等待下一次;
[0017]a9、当前扇区等于起始扇区,退出,等待下一次;
[0018]B、对上述存储的车辆行驶历史轨迹进行检索,包括:
[0019]bl、取起始扇区最老时间和当前扇区最新时间;
[0020]b2、判断给定时间T是否在起始扇区最老时间和当前扇区最新时间内,如果是,则进入步骤b3,如果否,则进入步骤blO ;
[0021]b3、顺序取起始扇区到当前扇区中每个扇区的第I步时间值,组成一维数组;
[0022]b4、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的扇区;
[0023]b5、判断上述元素是否等于T,如果是,则进入步骤b9,如果否,则进入步骤b6 ;
[0024]b6、顺序取上述扇区中所有步数的时间,组成一维数组;
[0025]b7、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的步数;
[0026]b8、得到给定时间T对应的那条历史轨迹所在的扇区数和步数,至此检索结束;
[0027]b9、得到给定时间T对应的那条历史轨迹所在的扇区(所在步数为I),至此检索结束;
[0028]blO、顺序取最老扇区至结束扇区中每个扇区的第I步时间值,组成一维数组;
[0029]bll、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的扇区;
[0030]bl2、判断上述元素是否等于T,如果是,则进入步骤bl6,如果否,则进入步骤bl3 ;
[0031]bl3、顺序取上述扇区中所有步数的时间,组成一维数组;
[0032]bl4、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的步数;
[0033]bl5、得到给定时间T对应的那条历史轨迹所在的扇区数和步数,至此检索结束;
[0034]bl6、得到给定时间T对应的那条历史轨迹所在的扇区(所在步数为I),至此检索结束。
[0035]优先地,B之前包括:
[0036]将存储区域分成两段,第一段是起始扇区到当前扇区,第二段是时间最老扇区到结束扇区。
[0037]本发明与现有技术相比,有益效果在于:本发明提供的基于二分法的历史轨迹快速检索方法,将整个存储区域分成两段,第一段是起始扇区到当前扇区,第二段是时间最老扇区到结束扇区,检索时先判断给定时间T属于哪个段,然后用二分法确定给定时间T属于哪个扇区,最后对该扇区再次使用二分法确定给定时间T所在的具体步数。本发明二分法检索方法极大地减少了检索次数,降低了检索时间,能够快速准确的找到指定时间的车辆历史轨迹,确定车辆位置和车辆状态信息。【专利附图】
【附图说明】
[0038]图1为本发明的历史轨迹存储流程图。
[0039]图2为本发明的历史轨迹存储示意图。
[0040]图3为本发明的历史轨迹检索流程图。
【具体实施方式】
[0041]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0042]请参阅图1、图2、图3所示,图1为本发明的历史轨迹存储流程图;图2为本发明的历史轨迹存储示意图;图3为本发明的历史轨迹检索流程图。本发明提供的是一种基于二分法的历史轨迹快速检索方法,其主要用于解决目前对车辆历史轨迹检索所存在的平均检索次数都随记录的历史轨迹条数的增大成比例增加,无法快速准确确定指定时间的车辆位置和车辆状态信息问题。
[0043]其中本发明基于二分法的历史轨迹快速检索方法主要包括有历史轨迹存储和历史轨迹检索两个部分。
[0044]由于历史轨迹是按时间发生的先后顺序定长存储的,因此可采用二分法检索,但是应用二分法检索有一个前提条件:要求后面的时间总是要比前面的时间大(新),因此需要将整个存储区域分成两段。第一段是起始扇区到当前扇区,第二段是时间最老扇区到结束扇区。检索时先判断给定时间T属于哪个段,然后用二分法确定给定时间T属于哪个扇区,最后对该扇区再次使用二分法确定给定时间T所在的具体步数。假设历史轨迹总条数为N,每个扇区存储的条数为S,则可预估出最大检索次数为1g2 (N/S)+1g2S,可见二分法检索方法极大地减少了检索次数。
[0045]见图1、图2所示,本发明对车辆的行驶历史轨迹进行存储,主要包括:
[0046]al、系统上电后初始化,自检历史轨迹存储区域,确定时间最老扇区OldestSector>当前扇区CurrentSector、当前步数CurrentStep、起始扇区和结束扇区;
[0047]起始扇区和结束扇区为常量,分别取值为I和η。当前步数CurrentStep为下一条车辆行驶轨迹即将存储的那一步;
[0048]a2、设定历史轨迹记录的时间间隔,开启定时器;
[0049]通常取GPS位置信息自动上传给监控中心的时间间隔作为历史轨迹记录的时间间隔;
[0050]a3、判断定时时间是否到,如是,则进入步骤a4 ;如否,则退出,等待下一次;
[0051]a4、判断当前是否导航,如是,则进入步骤a5 ;如否,则退出,等待下一次;
[0052]a5、将车辆行驶轨迹信息写入到当前步数,当前步数加1,定时计数清O ;
[0053]车辆行驶轨迹信息即历史轨迹信息,包括时间、经度、纬度、速度、高程、车辆状态等;
[0054]a6、判断当前步数是否等于扇区最大步数,如是,则进入步骤a7,如否,则退出,等待下一次;[0055]步长指每一步的长度,是个常量,取值为L。扇区最大步数等于一个扇区的字节数(M)除以步长,即M/L;
[0056] a7、当前扇区加I,当前步数等于I ;
[0057]a8、判断当前扇区是否大于结束扇区,如是,则进入步骤a9 ;如否,则退出,等待下一次;
[0058]a9、当前扇区等于起始扇区,退出,等待下一次;
[0059]经过以上al~a9的步骤,一段时间之后,历史轨迹的存储结构则如附图2所示。
[0060]见图3所示,本发明对上述存储的车辆行驶历史轨迹进行检索,主要包括:
[0061]bl、取起始扇区最老时间和当前扇区最新时间;
[0062]取扇区I第I步时间值,记为Ta,取当前扇区当前步数的上一步时间值,记为Tb ;
[0063]b2、判断给定时间T是否在起始扇区最老时间和当前扇区最新时间内,如果是,则进入步骤b3,如果否,则进入步骤blO ;
[0064]判断给定时间T是否在区间[Ta,Tb]内,如果是,则进入步骤b3,如果否,则进入步骤blO ;
[0065]b3、顺序取起始扇区到当前扇区中每个扇区的第I步时间值,组成一维数组;
[0066]顺序取起始扇区I到当前扇区k中每个扇区的第I步时间值,组成一维数组Sectorl [Tl,T2,....,Tk],其中Sectorl表示数组名,Tl~Tk表示数组中的元素。Tl表示扇区I第I步的时间值,T2表示扇区2第I步的时间值,以此类推,Tk表示第k扇区第I步的时间值。
[0067]b4、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的扇区;
[0068]用二分法查找数组Sectorl,获得与给定时间T最接近的元素,假设为Ti ;
[0069]b5、判断上述元素是否等于T,如果是,则进入步骤b9,如果否,则进入步骤b6 ;
[0070]判断Ti是否等于T,如果是,则进入步骤b9,如果否,则进入步骤b6 ;
[0071]b6、顺序取上述扇区中所有步数的时间,组成一维数组;
[0072]顺序取扇区i中所有步数的时间,组成一维数组Stepl [tl, t2, tx]。当i为当前扇区时,X取值为当前步数的上一步;当i不等于当前扇区时,X取值为扇区最大步数;
[0073]b7、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的步数;
[0074]用二分法查找数组St印1,获得与给定时间T最接近的元素,假设为tj ;
[0075]b8、得到给定时间T对应的那条历史轨迹所在的扇区数和步数,至此检索结束;
[0076]得到给定时间T对应的那条历史轨迹为第i扇区的第j步,至此检索结束;
[0077]b9、得到给定时间T对应的那条历史轨迹所在的扇区(所在步数为I),至此检索结束;
[0078]得到给定时间T对应的那条历史轨迹为第i扇区的第I步,至此检索结束;
[0079]blO、顺序取最老扇区至结束扇区中每个扇区的第I步时间值,组成一维数组;
[0080]顺序取最老扇区k+Ι至结束扇区η中每个扇区的第I步时间值,组成一维数组Sector2 [T (k+1),T (k+2),…,Τη],其中Sector2表示数组名,T (k+1)~Tn表示数组中的兀素。T (k+Ι)表不扇区k+Ι第I步的时间值,T (k+2)表不扇区k+2第I步的时间值,以此类推,Tn表示第η扇区第I步的时间值;
[0081]bll、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的扇区;
[0082]用二分法查找数组Sectorf,获得与给定时间T最接近的元素,假设为Tp ;
[0083]bl2、判断上述元素是否等于T,如果是,则进入步骤bl6,如果否,则进入步骤bl3 ;
[0084]判断Tp是否等于T,如果是,则进入步骤bl6,否进入步骤bl3 ;
[0085]bl3、顺序取上述扇区中所有步数的时间,组成一维数组;
[0086]顺序取扇区P中所有步数的时间,组成一维数组Step2[tl, t2, , tx]。x取值为扇区最大步数;
[0087]bl4、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的步数;
[0088]用二分法查找数组St印2,获得与给定时间T最接近的元素,假设为tq ;
[0089]bl5、得到给定时间T对应的那条历史轨迹所在的扇区数和步数,至此检索结束;
[0090]得到给定时间T对应的那条历史轨迹为第P扇区的第q步,至此检索结束;
[0091]bl6、得到给定时间T对应的那条历史轨迹所在的扇区(所在步数为I),至此检索结束。
[0092]得到给定时间T对应的那条历史轨迹为第P扇区的第I步,至此检索结束。
[0093]采用本发明所述方法,假定历史轨迹记录的总条数为N,每个扇区存储的条数为S,则常规检索方法的平均检索次数为N/2,基于二分法的快速检索方法平均检索次数为1g2 (N/S)+1g2S0很明显采用本发明后,系统检索时间将明显缩短,提高了 GPS车载终端性能,较好地满足了实时性要求,尤其是在历史轨迹条数越多时则越明显。
[0094]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于二分法的历史轨迹快速检索方法,其特征在于包括: A、对车辆的行驶历史轨迹进行存储,包括: al、系统上电后初始化,自检历史轨迹存储区域,确定最老扇区、当前扇区、当前步数,起始扇区和结束扇区; a2、设定历史轨迹记录的时间间隔,开启定时器; a3、判断定时时间是否到,如是,则进入步骤a4 ;如否,则退出,等待下一次;a4、判断当前是否导航,如是,则进入步骤a5 ;如否,则退出,等待下一次;a5、将车辆行驶轨迹信息写入到当前步数,当前步数加1,定时计数清O ;a6、判断当前步数是否等于扇区最大步数,如是,则进入步骤a7,如否,则退出,等待下一次; a7、当前扇区加I,当前步数等于I ; a8、判断当前扇区是否大于结束扇区,如是,则进入步骤a9 ;如否,则退出,等待下一次; a9、当前扇区等于起始扇区,退出,等待下一次; B、对上述存储的车辆行驶历史轨迹进行检索,包括: bl、取起始扇区最老时间和当前扇区最新时间; b2、判断给定时间T是否在起始扇区最老时间和当前扇区最新时间内,如果是,则进入步骤b3,如果否,则进入步骤b 10 ; b3、顺序取起始扇区到当前扇区中每个扇区的第I步时间值,组成一维数组; b4、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的扇区; b5、判断上述元素是否等于T,如果是,则进入步骤b9,如果否,则进入步骤b6 ; b6、顺序取上述扇区中所有步数的时间,组成一维数组; b7、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的步数; b8、得到给定时间T对应的那条历史轨迹所在的扇区数和步数,至此检索结束; b9、得到给定时间T对应的那条历史轨迹所在的扇区(所在步数为I),至此检索结束; blO、顺序取最老扇区至结束扇区中每个扇区的第I步时间值,组成一维数组; bll、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的扇区; bl2、判断上述元素是否等于T,如果是,则进入步骤bl6,如果否,则进入步骤bl3 ; bl3、顺序取上述扇区中所有步数的时间,组成一维数组; bl4、用二分法查找上述一维数组,获得与给定时间T最接近的元素及其所在的步数; bl5、得到给定时间T对应的那条历史轨迹所在的扇区数和步数,至此检索结束; bl6、得到给定时间T对应的那条历史轨迹所在的扇区(所在步数为I),至此检索结束。
2.根据权利要求1所述的基于二分法的历史轨迹快速检索方法,其特征在于B之前包括: 将存储区域分成两段,第一段是起始扇区到当前扇区,第二段是时间最老扇区到结束扇区。
【文档编号】G06F17/30GK103927311SQ201310013455
【公开日】2014年7月16日 申请日期:2013年1月11日 优先权日:2013年1月11日
【发明者】董显林, 杨忠义, 梁毛鹞 申请人:深圳市伊爱高新技术开发有限公司