一種基于二分法的歷史軌跡快速檢索方法
【專利摘要】本發(fā)明公開了一種基于二分法的歷史軌跡快速檢索方法,將整個存儲區(qū)域分成兩段,第一段是起始扇區(qū)到當前扇區(qū),第二段是時間最老扇區(qū)到結(jié)束扇區(qū),檢索時先判斷給定時間T屬于哪個段,然后用二分法確定給定時間T屬于哪個扇區(qū),最后對該扇區(qū)再次使用二分法確定給定時間T所在的具體步數(shù)。本發(fā)明基于二分法的歷史軌跡快速檢索方法極大地減少了檢索次數(shù),縮短了檢索時間,能夠快速準確的讀取指定時間的歷史軌跡,提高了GPS車載終端實時響應(yīng)能力。
【專利說明】一種基于二分法的歷史軌跡快速檢索方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及具有歷史軌跡記錄功能的GPS車載終端,特別是一種基于二分法的歷史軌跡快速檢索方法。
【背景技術(shù)】
[0002]隨著全球衛(wèi)星定位系統(tǒng)的快速發(fā)展,GPS車載終端已廣泛應(yīng)用于私家車、物流車、客運車、貨運車、危險品運輸車、出租車等各類車輛的定位追蹤或監(jiān)控報警系統(tǒng)中。GPS車載終端通過GPRS無線網(wǎng)絡(luò)傳輸將收到的衛(wèi)星定位信息上傳給監(jiān)控中心,由監(jiān)控中心統(tǒng)一監(jiān)控所有在線車輛的運行情況。然而當GPRS連接不上或SIM卡余額不足時,車輛的行駛軌跡將不能傳輸給監(jiān)控中心,從而產(chǎn)生監(jiān)控盲區(qū)。
[0003]為了彌補這種不足,現(xiàn)在大部分的GPS車載終端都具有歷史軌跡記錄功能,即可將車輛最近一段時間的行駛軌跡記錄在車載終端中,記錄的歷史軌跡通常在I萬條以上。當發(fā)生緊急事件或交通事故時,監(jiān)控中心可發(fā)指令給GPS車載終端檢索指定時間的歷史軌跡,以確定車輛過去某個時間的位置和狀態(tài)。目前常用的歷史軌跡檢索方法有:(I)按扇區(qū)順序檢索,即從存儲區(qū)域開始扇區(qū)的第I步開始,一步一步往下找,直到找到給定時間的那條歷史軌跡;(2)按最老時間順序檢索,即從時間最老扇區(qū)的第I步開始,一步一步往下找,直到找到給定時間的那條歷史軌跡;(3)按最近時間順序檢索,即從當前扇區(qū)的最新時間開始,一步一步往回找,直到找到給定時間的那條歷史軌跡。
[0004]但是以上幾種方法檢索次數(shù)較多,且對于不同的給定時間檢索次數(shù)相差很大,當所給定的時間與檢索的起始步時間比較接近時,就能較快檢索到;當所給定的時間遠離檢索的起始步時間時,就需要很長時間才能檢索到。綜上所述,這幾種方法的缺點是:平均檢索次數(shù)都隨記錄的歷史軌跡條數(shù)的增大成比例增加。
【發(fā)明內(nèi)容】
[0005]為此,本發(fā)明的目的在于提供一種基于二分法的歷史軌跡快速檢索方法,以減少了檢索次數(shù),降低檢索時間,能夠快速準確的找到指定時間的車輛歷史軌跡,確定車輛位置和車輛狀態(tài)信息。
[0006]本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的。
[0007]一種基于二分法的歷史軌跡快速檢索方法,包括:
[0008]A、對車輛的行駛歷史軌跡進行存儲,包括:
[0009]al、系統(tǒng)上電后初始化,自檢歷史軌跡存儲區(qū)域,確定最老扇區(qū)、當前扇區(qū)、當前步數(shù)、起始扇區(qū)和結(jié)束扇區(qū);
[0010]a2、設(shè)定歷史軌跡記錄的時間間隔,開啟定時器;
[0011]a3、判斷定時時間是否到,如是,則進入步驟a4 ;如否,則退出,等待下一次;
[0012]a4、判斷當前是否導(dǎo)航,如是,則進入步驟a5 ;如否,則退出,等待下一次;
[0013]a5、將車輛行駛軌跡信息寫入到當前步數(shù),當前步數(shù)加1,定時計數(shù)清O ;[0014]a6、判斷當前步數(shù)是否等于扇區(qū)最大步數(shù),如是,則進入步驟a7,如否,則退出,等待下一次;
[0015]a7、當前扇區(qū)加I,當前步數(shù)等于I ;
[0016]a8、判斷當前扇區(qū)是否大于結(jié)束扇區(qū),如是,則進入步驟a9 ;如否,則退出,等待下一次;
[0017]a9、當前扇區(qū)等于起始扇區(qū),退出,等待下一次;
[0018]B、對上述存儲的車輛行駛歷史軌跡進行檢索,包括:
[0019]bl、取起始扇區(qū)最老時間和當前扇區(qū)最新時間;
[0020]b2、判斷給定時間T是否在起始扇區(qū)最老時間和當前扇區(qū)最新時間內(nèi),如果是,則進入步驟b3,如果否,則進入步驟blO ;
[0021]b3、順序取起始扇區(qū)到當前扇區(qū)中每個扇區(qū)的第I步時間值,組成一維數(shù)組;
[0022]b4、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的扇區(qū);
[0023]b5、判斷上述元素是否等于T,如果是,則進入步驟b9,如果否,則進入步驟b6 ;
[0024]b6、順序取上述扇區(qū)中所有步數(shù)的時間,組成一維數(shù)組;
[0025]b7、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的步數(shù);
[0026]b8、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)數(shù)和步數(shù),至此檢索結(jié)束;
[0027]b9、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)(所在步數(shù)為I),至此檢索結(jié)束;
[0028]blO、順序取最老扇區(qū)至結(jié)束扇區(qū)中每個扇區(qū)的第I步時間值,組成一維數(shù)組;
[0029]bll、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的扇區(qū);
[0030]bl2、判斷上述元素是否等于T,如果是,則進入步驟bl6,如果否,則進入步驟bl3 ;
[0031]bl3、順序取上述扇區(qū)中所有步數(shù)的時間,組成一維數(shù)組;
[0032]bl4、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的步數(shù);
[0033]bl5、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)數(shù)和步數(shù),至此檢索結(jié)束;
[0034]bl6、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)(所在步數(shù)為I),至此檢索結(jié)束。
[0035]優(yōu)先地,B之前包括:
[0036]將存儲區(qū)域分成兩段,第一段是起始扇區(qū)到當前扇區(qū),第二段是時間最老扇區(qū)到結(jié)束扇區(qū)。
[0037]本發(fā)明與現(xiàn)有技術(shù)相比,有益效果在于:本發(fā)明提供的基于二分法的歷史軌跡快速檢索方法,將整個存儲區(qū)域分成兩段,第一段是起始扇區(qū)到當前扇區(qū),第二段是時間最老扇區(qū)到結(jié)束扇區(qū),檢索時先判斷給定時間T屬于哪個段,然后用二分法確定給定時間T屬于哪個扇區(qū),最后對該扇區(qū)再次使用二分法確定給定時間T所在的具體步數(shù)。本發(fā)明二分法檢索方法極大地減少了檢索次數(shù),降低了檢索時間,能夠快速準確的找到指定時間的車輛歷史軌跡,確定車輛位置和車輛狀態(tài)信息?!緦@綀D】
【附圖說明】
[0038]圖1為本發(fā)明的歷史軌跡存儲流程圖。
[0039]圖2為本發(fā)明的歷史軌跡存儲示意圖。
[0040]圖3為本發(fā)明的歷史軌跡檢索流程圖。
【具體實施方式】
[0041]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0042]請參閱圖1、圖2、圖3所示,圖1為本發(fā)明的歷史軌跡存儲流程圖;圖2為本發(fā)明的歷史軌跡存儲示意圖;圖3為本發(fā)明的歷史軌跡檢索流程圖。本發(fā)明提供的是一種基于二分法的歷史軌跡快速檢索方法,其主要用于解決目前對車輛歷史軌跡檢索所存在的平均檢索次數(shù)都隨記錄的歷史軌跡條數(shù)的增大成比例增加,無法快速準確確定指定時間的車輛位置和車輛狀態(tài)信息問題。
[0043]其中本發(fā)明基于二分法的歷史軌跡快速檢索方法主要包括有歷史軌跡存儲和歷史軌跡檢索兩個部分。
[0044]由于歷史軌跡是按時間發(fā)生的先后順序定長存儲的,因此可采用二分法檢索,但是應(yīng)用二分法檢索有一個前提條件:要求后面的時間總是要比前面的時間大(新),因此需要將整個存儲區(qū)域分成兩段。第一段是起始扇區(qū)到當前扇區(qū),第二段是時間最老扇區(qū)到結(jié)束扇區(qū)。檢索時先判斷給定時間T屬于哪個段,然后用二分法確定給定時間T屬于哪個扇區(qū),最后對該扇區(qū)再次使用二分法確定給定時間T所在的具體步數(shù)。假設(shè)歷史軌跡總條數(shù)為N,每個扇區(qū)存儲的條數(shù)為S,則可預(yù)估出最大檢索次數(shù)為1g2 (N/S)+1g2S,可見二分法檢索方法極大地減少了檢索次數(shù)。
[0045]見圖1、圖2所示,本發(fā)明對車輛的行駛歷史軌跡進行存儲,主要包括:
[0046]al、系統(tǒng)上電后初始化,自檢歷史軌跡存儲區(qū)域,確定時間最老扇區(qū)OldestSector>當前扇區(qū)CurrentSector、當前步數(shù)CurrentStep、起始扇區(qū)和結(jié)束扇區(qū);
[0047]起始扇區(qū)和結(jié)束扇區(qū)為常量,分別取值為I和η。當前步數(shù)CurrentStep為下一條車輛行駛軌跡即將存儲的那一步;
[0048]a2、設(shè)定歷史軌跡記錄的時間間隔,開啟定時器;
[0049]通常取GPS位置信息自動上傳給監(jiān)控中心的時間間隔作為歷史軌跡記錄的時間間隔;
[0050]a3、判斷定時時間是否到,如是,則進入步驟a4 ;如否,則退出,等待下一次;
[0051]a4、判斷當前是否導(dǎo)航,如是,則進入步驟a5 ;如否,則退出,等待下一次;
[0052]a5、將車輛行駛軌跡信息寫入到當前步數(shù),當前步數(shù)加1,定時計數(shù)清O ;
[0053]車輛行駛軌跡信息即歷史軌跡信息,包括時間、經(jīng)度、緯度、速度、高程、車輛狀態(tài)等;
[0054]a6、判斷當前步數(shù)是否等于扇區(qū)最大步數(shù),如是,則進入步驟a7,如否,則退出,等待下一次;[0055]步長指每一步的長度,是個常量,取值為L。扇區(qū)最大步數(shù)等于一個扇區(qū)的字節(jié)數(shù)(M)除以步長,即M/L;
[0056] a7、當前扇區(qū)加I,當前步數(shù)等于I ;
[0057]a8、判斷當前扇區(qū)是否大于結(jié)束扇區(qū),如是,則進入步驟a9 ;如否,則退出,等待下一次;
[0058]a9、當前扇區(qū)等于起始扇區(qū),退出,等待下一次;
[0059]經(jīng)過以上al~a9的步驟,一段時間之后,歷史軌跡的存儲結(jié)構(gòu)則如附圖2所示。
[0060]見圖3所示,本發(fā)明對上述存儲的車輛行駛歷史軌跡進行檢索,主要包括:
[0061]bl、取起始扇區(qū)最老時間和當前扇區(qū)最新時間;
[0062]取扇區(qū)I第I步時間值,記為Ta,取當前扇區(qū)當前步數(shù)的上一步時間值,記為Tb ;
[0063]b2、判斷給定時間T是否在起始扇區(qū)最老時間和當前扇區(qū)最新時間內(nèi),如果是,則進入步驟b3,如果否,則進入步驟blO ;
[0064]判斷給定時間T是否在區(qū)間[Ta,Tb]內(nèi),如果是,則進入步驟b3,如果否,則進入步驟blO ;
[0065]b3、順序取起始扇區(qū)到當前扇區(qū)中每個扇區(qū)的第I步時間值,組成一維數(shù)組;
[0066]順序取起始扇區(qū)I到當前扇區(qū)k中每個扇區(qū)的第I步時間值,組成一維數(shù)組Sectorl [Tl,T2,....,Tk],其中Sectorl表示數(shù)組名,Tl~Tk表示數(shù)組中的元素。Tl表示扇區(qū)I第I步的時間值,T2表示扇區(qū)2第I步的時間值,以此類推,Tk表示第k扇區(qū)第I步的時間值。
[0067]b4、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的扇區(qū);
[0068]用二分法查找數(shù)組Sectorl,獲得與給定時間T最接近的元素,假設(shè)為Ti ;
[0069]b5、判斷上述元素是否等于T,如果是,則進入步驟b9,如果否,則進入步驟b6 ;
[0070]判斷Ti是否等于T,如果是,則進入步驟b9,如果否,則進入步驟b6 ;
[0071]b6、順序取上述扇區(qū)中所有步數(shù)的時間,組成一維數(shù)組;
[0072]順序取扇區(qū)i中所有步數(shù)的時間,組成一維數(shù)組Stepl [tl, t2, tx]。當i為當前扇區(qū)時,X取值為當前步數(shù)的上一步;當i不等于當前扇區(qū)時,X取值為扇區(qū)最大步數(shù);
[0073]b7、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的步數(shù);
[0074]用二分法查找數(shù)組St印1,獲得與給定時間T最接近的元素,假設(shè)為tj ;
[0075]b8、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)數(shù)和步數(shù),至此檢索結(jié)束;
[0076]得到給定時間T對應(yīng)的那條歷史軌跡為第i扇區(qū)的第j步,至此檢索結(jié)束;
[0077]b9、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)(所在步數(shù)為I),至此檢索結(jié)束;
[0078]得到給定時間T對應(yīng)的那條歷史軌跡為第i扇區(qū)的第I步,至此檢索結(jié)束;
[0079]blO、順序取最老扇區(qū)至結(jié)束扇區(qū)中每個扇區(qū)的第I步時間值,組成一維數(shù)組;
[0080]順序取最老扇區(qū)k+Ι至結(jié)束扇區(qū)η中每個扇區(qū)的第I步時間值,組成一維數(shù)組Sector2 [T (k+1),T (k+2),…,Τη],其中Sector2表示數(shù)組名,T (k+1)~Tn表示數(shù)組中的兀素。T (k+Ι)表不扇區(qū)k+Ι第I步的時間值,T (k+2)表不扇區(qū)k+2第I步的時間值,以此類推,Tn表示第η扇區(qū)第I步的時間值;
[0081]bll、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的扇區(qū);
[0082]用二分法查找數(shù)組Sectorf,獲得與給定時間T最接近的元素,假設(shè)為Tp ;
[0083]bl2、判斷上述元素是否等于T,如果是,則進入步驟bl6,如果否,則進入步驟bl3 ;
[0084]判斷Tp是否等于T,如果是,則進入步驟bl6,否進入步驟bl3 ;
[0085]bl3、順序取上述扇區(qū)中所有步數(shù)的時間,組成一維數(shù)組;
[0086]順序取扇區(qū)P中所有步數(shù)的時間,組成一維數(shù)組Step2[tl, t2, , tx]。x取值為扇區(qū)最大步數(shù);
[0087]bl4、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的步數(shù);
[0088]用二分法查找數(shù)組St印2,獲得與給定時間T最接近的元素,假設(shè)為tq ;
[0089]bl5、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)數(shù)和步數(shù),至此檢索結(jié)束;
[0090]得到給定時間T對應(yīng)的那條歷史軌跡為第P扇區(qū)的第q步,至此檢索結(jié)束;
[0091]bl6、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)(所在步數(shù)為I),至此檢索結(jié)束。
[0092]得到給定時間T對應(yīng)的那條歷史軌跡為第P扇區(qū)的第I步,至此檢索結(jié)束。
[0093]采用本發(fā)明所述方法,假定歷史軌跡記錄的總條數(shù)為N,每個扇區(qū)存儲的條數(shù)為S,則常規(guī)檢索方法的平均檢索次數(shù)為N/2,基于二分法的快速檢索方法平均檢索次數(shù)為1g2 (N/S)+1g2S0很明顯采用本發(fā)明后,系統(tǒng)檢索時間將明顯縮短,提高了 GPS車載終端性能,較好地滿足了實時性要求,尤其是在歷史軌跡條數(shù)越多時則越明顯。
[0094]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種基于二分法的歷史軌跡快速檢索方法,其特征在于包括: A、對車輛的行駛歷史軌跡進行存儲,包括: al、系統(tǒng)上電后初始化,自檢歷史軌跡存儲區(qū)域,確定最老扇區(qū)、當前扇區(qū)、當前步數(shù),起始扇區(qū)和結(jié)束扇區(qū); a2、設(shè)定歷史軌跡記錄的時間間隔,開啟定時器; a3、判斷定時時間是否到,如是,則進入步驟a4 ;如否,則退出,等待下一次;a4、判斷當前是否導(dǎo)航,如是,則進入步驟a5 ;如否,則退出,等待下一次;a5、將車輛行駛軌跡信息寫入到當前步數(shù),當前步數(shù)加1,定時計數(shù)清O ;a6、判斷當前步數(shù)是否等于扇區(qū)最大步數(shù),如是,則進入步驟a7,如否,則退出,等待下一次; a7、當前扇區(qū)加I,當前步數(shù)等于I ; a8、判斷當前扇區(qū)是否大于結(jié)束扇區(qū),如是,則進入步驟a9 ;如否,則退出,等待下一次; a9、當前扇區(qū)等于起始扇區(qū),退出,等待下一次; B、對上述存儲的車輛行駛歷史軌跡進行檢索,包括: bl、取起始扇區(qū)最老時間和當前扇區(qū)最新時間; b2、判斷給定時間T是否在起始扇區(qū)最老時間和當前扇區(qū)最新時間內(nèi),如果是,則進入步驟b3,如果否,則進入步驟b 10 ; b3、順序取起始扇區(qū)到當前扇區(qū)中每個扇區(qū)的第I步時間值,組成一維數(shù)組; b4、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的扇區(qū); b5、判斷上述元素是否等于T,如果是,則進入步驟b9,如果否,則進入步驟b6 ; b6、順序取上述扇區(qū)中所有步數(shù)的時間,組成一維數(shù)組; b7、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的步數(shù); b8、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)數(shù)和步數(shù),至此檢索結(jié)束; b9、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)(所在步數(shù)為I),至此檢索結(jié)束; blO、順序取最老扇區(qū)至結(jié)束扇區(qū)中每個扇區(qū)的第I步時間值,組成一維數(shù)組; bll、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的扇區(qū); bl2、判斷上述元素是否等于T,如果是,則進入步驟bl6,如果否,則進入步驟bl3 ; bl3、順序取上述扇區(qū)中所有步數(shù)的時間,組成一維數(shù)組; bl4、用二分法查找上述一維數(shù)組,獲得與給定時間T最接近的元素及其所在的步數(shù); bl5、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)數(shù)和步數(shù),至此檢索結(jié)束; bl6、得到給定時間T對應(yīng)的那條歷史軌跡所在的扇區(qū)(所在步數(shù)為I),至此檢索結(jié)束。
2.根據(jù)權(quán)利要求1所述的基于二分法的歷史軌跡快速檢索方法,其特征在于B之前包括: 將存儲區(qū)域分成兩段,第一段是起始扇區(qū)到當前扇區(qū),第二段是時間最老扇區(qū)到結(jié)束扇區(qū)。
【文檔編號】G06F17/30GK103927311SQ201310013455
【公開日】2014年7月16日 申請日期:2013年1月11日 優(yōu)先權(quán)日:2013年1月11日
【發(fā)明者】董顯林, 楊忠義, 梁毛鷂 申請人:深圳市伊愛高新技術(shù)開發(fā)有限公司