基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及導(dǎo)航和電子地圖技術(shù)領(lǐng)域,具體涉及一種基于滑動(dòng)窗二進(jìn)制比對(duì)算法 的導(dǎo)航數(shù)據(jù)增量信息提取方法。
【背景技術(shù)】
[0002] 電子導(dǎo)航地圖的快速更新已經(jīng)成為業(yè)界非常迫切的需求,尤其是因?yàn)閿?shù)據(jù)沒(méi)有能 夠及時(shí)更新而導(dǎo)致導(dǎo)航錯(cuò)誤的問(wèn)題不斷出現(xiàn)的情況下。同時(shí),隨著面向主動(dòng)安全和無(wú)人駕 駛的下一代高精度車(chē)道級(jí)導(dǎo)航地圖的逐步應(yīng)用,地圖數(shù)據(jù)從基礎(chǔ)的導(dǎo)航、引導(dǎo)作用,逐步走 向車(chē)身控制和主動(dòng)安全的高級(jí)功能,從而對(duì)數(shù)據(jù)的錯(cuò)誤和陳舊導(dǎo)致的問(wèn)題容忍度更低,因 此需要更為快速的、更為頻繁的地圖更新技術(shù)。
[0003] 在地圖快速更新過(guò)程中,除了地圖數(shù)據(jù)元素的差異感知、快速生產(chǎn)等問(wèn)題外,如何 有效且盡量準(zhǔn)確的提取新版本地圖相對(duì)舊版本地圖的更新信息,是地圖以增量方式快速更 新的關(guān)鍵技術(shù)。電子導(dǎo)航地圖由于數(shù)據(jù)表達(dá)緊湊性的要求,往往以二進(jìn)制塊為基礎(chǔ)的組織 單位進(jìn)行組織,因此基于二進(jìn)制最大公共子序列算法進(jìn)行差異信息的查找,是很自然的一 種增量信息提取方法。然而一般的最大公共子序列算法應(yīng)用于導(dǎo)航地圖數(shù)據(jù)的二進(jìn)制比對(duì) 時(shí),由于導(dǎo)航地圖的基本二進(jìn)制數(shù)據(jù)塊都比較大(幾 KB甚至幾十MB),導(dǎo)致算法需要的空間 和時(shí)間往往都難以接受。因此,亟待提供一種能夠提升算法性能,降低算法空間需求,且能 夠有效提取新版本導(dǎo)航地圖相對(duì)舊版本導(dǎo)航地圖的增量信息包的的導(dǎo)航數(shù)據(jù)增量信息提 取方法。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,有必要提供一種在對(duì)導(dǎo)航數(shù)據(jù)具體組織格式依賴(lài)較低的情況下,能夠 有效提取新版本導(dǎo)航地圖相對(duì)舊版本導(dǎo)航地圖的增量信息包的基于滑動(dòng)窗二進(jìn)制比對(duì)算 法的導(dǎo)航數(shù)據(jù)增量信息提取方法。
[0005] -種基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法,所述基于滑動(dòng)窗 二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法包括以下步驟:
[0006] S1、分別讀取已有導(dǎo)航數(shù)據(jù)與更新導(dǎo)航數(shù)據(jù)中相同組織單位的二進(jìn)制塊數(shù)據(jù),建 立已有二進(jìn)制序列和更新二進(jìn)制序列;
[0007] S2、分別對(duì)已有二進(jìn)制序列和更新二進(jìn)制序列設(shè)置滑動(dòng)窗口,對(duì)滑動(dòng)窗口的圈括 區(qū)域進(jìn)行二進(jìn)制比對(duì),獲取兩個(gè)二進(jìn)制序列中的連續(xù)公共子序列;
[0008] S3、同步移動(dòng)滑動(dòng)窗口,依次查找滑動(dòng)窗口下一個(gè)圈括區(qū)域內(nèi)的連續(xù)公共子序列, 直至兩個(gè)二進(jìn)制序列比對(duì)完畢;
[0009] S4、以已有二進(jìn)制序列中相鄰連續(xù)公共子序列之間的非公共子序列信息為基準(zhǔn), 比對(duì)更新二進(jìn)制序列中位置相對(duì)的非公共子序列信息,提取增量信息類(lèi)型,對(duì)已有二進(jìn)制 序列進(jìn)行更新替換。
[0010] 本發(fā)明所述基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法,對(duì)已有導(dǎo) 航數(shù)據(jù)與更新導(dǎo)航數(shù)據(jù)中相同組織單位的二進(jìn)制序列設(shè)置滑動(dòng)窗口,通過(guò)滑動(dòng)窗口對(duì)二進(jìn) 制序列進(jìn)行比對(duì),獲取二進(jìn)制序列中的連續(xù)公共子序列;并比對(duì)已有二進(jìn)制序列中的非公 共子序列信息和更新二進(jìn)制序列中的非公共子序列信息,提取增量信息類(lèi)型,對(duì)已有二進(jìn) 制序列進(jìn)行更新替換。本發(fā)明所述基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方 法,利用導(dǎo)航數(shù)據(jù)本身所具有的空間相關(guān)性特征,利用滑動(dòng)窗口技術(shù),將二進(jìn)制序列連續(xù)公 共子序列算法的空間需求和時(shí)間需求都降低到線(xiàn)性級(jí)別,從而對(duì)超長(zhǎng)(幾 Μ甚至幾十M)二進(jìn) 制塊也能夠在可接受的空間需求和時(shí)間需求下完成計(jì)算,并得到準(zhǔn)確的增量更新信息。
【附圖說(shuō)明】
[0011] 圖1是本發(fā)明所述基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法的流 程框圖;
[0012] 圖2是圖1中步驟S1的流程框圖;
[0013]圖3是圖1中步驟S2的流程框圖;
[0014] 圖4是本發(fā)明所述基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法的另 一流程框圖;
[0015] 圖5是圖4中步驟S2a的流程框圖;
[0016] 圖6是圖1中步驟S3的流程框圖;
[0017]圖7是圖1中步驟S4的流程框圖;
[0018] 圖8是本發(fā)明所述基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法中滑 動(dòng)窗口的不意圖;
[0019] 圖9是本發(fā)明所述基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法中連 續(xù)公共子序列的示意圖。
【具體實(shí)施方式】
[0020] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明,應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0021] 如圖1所示,本發(fā)明實(shí)施例提供一種基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量 信息提取方法,所述基于滑動(dòng)窗二進(jìn)制比對(duì)算法的導(dǎo)航數(shù)據(jù)增量信息提取方法包括以下步 驟:
[0022] S1、分別讀取已有導(dǎo)航數(shù)據(jù)與更新導(dǎo)航數(shù)據(jù)中相同組織單位的二進(jìn)制塊數(shù)據(jù),建 立已有二進(jìn)制序列和更新二進(jìn)制序列;
[0023] S2、分別對(duì)已有二進(jìn)制序列和更新二進(jìn)制序列設(shè)置滑動(dòng)窗口,對(duì)滑動(dòng)窗口的圈括 區(qū)域進(jìn)行二進(jìn)制比對(duì),獲取兩個(gè)二進(jìn)制序列中的連續(xù)公共子序列;
[0024] S3、同步移動(dòng)滑動(dòng)窗口,依次查找滑動(dòng)窗口下一個(gè)圈括區(qū)域內(nèi)的連續(xù)公共子序列, 直至兩個(gè)二進(jìn)制序列比對(duì)完畢;
[0025] S4、以已有二進(jìn)制序列中相鄰連續(xù)公共子序列之間的非公共子序列信息為基準(zhǔn), 比對(duì)更新二進(jìn)制序列中位置相對(duì)的非公共子序列信息,提取增量信息類(lèi)型,對(duì)已有二進(jìn)制 序列進(jìn)行更新替換。
[0026] 其中,如圖所示,所述步驟S1包括以下分步驟:
[0027] S11、以數(shù)據(jù)組織單位為基準(zhǔn)單元,讀取已有導(dǎo)航數(shù)據(jù)中單個(gè)基準(zhǔn)單位的二進(jìn)制塊 數(shù)據(jù),建立已有二進(jìn)制序列;
[0028] S12、讀入更新導(dǎo)航數(shù)據(jù)中與已有二進(jìn)制序列相同的單個(gè)基準(zhǔn)單位的二進(jìn)制塊數(shù) 據(jù),建立更新二進(jìn)制序列。
[0029]所述數(shù)據(jù)的讀取,主要是將待比較的兩個(gè)版本的地圖數(shù)據(jù),按照相同的組織單位 和相同的順序,依次進(jìn)行讀入,以便后續(xù)比對(duì)算法進(jìn)行比較。
[0030] 如圖2所示,所述步驟S2包括以下分步驟:
[0031] S21、在已有二進(jìn)制序列和更新二進(jìn)制序列中設(shè)置滑動(dòng)窗口,以滑動(dòng)窗口的圈括區(qū) 域?yàn)榛鶞?zhǔn),分別對(duì)已有二進(jìn)制序列和更新二進(jìn)制序列劃分出已有單位子序列、更新單位子 序列作為當(dāng)前的比較區(qū)域;
[0032] S22、自比較區(qū)域的首個(gè)字節(jié)開(kāi)始,依次比較已有單位子序列、更新單位子序列中 的每個(gè)字節(jié),如果已有單位子序列、更新單位子序列中具有相同的字節(jié),則獲取得到連續(xù)公 共子序列的起始字節(jié);
[0033] S23、自所述連續(xù)公共子序列的起始字節(jié)開(kāi)始,對(duì)應(yīng)比較后續(xù)字節(jié),直至相對(duì)應(yīng)的 字節(jié)不相同,則獲取到一個(gè)完整的連續(xù)公共子序列;
[0034] S24、以已獲取的連續(xù)公共子序列的結(jié)束位置開(kāi)始,對(duì)后續(xù)字節(jié)繼續(xù)進(jìn)行步驟S22 至S23的比較,不斷查找出新的連續(xù)公共子序列,直至所述比較區(qū)域內(nèi)所有字節(jié)均比較完 成。
[0035]具體的,設(shè)已有二進(jìn)制序列為二進(jìn)制序列A,設(shè)更新二進(jìn)制序列為二進(jìn)制序列B,并 設(shè)二進(jìn)制序列A的起始位置為BEGIN_P0S_A,終止位置為END_P0S_A,二進(jìn)制序列B的起始位 置為 BEGIN_P0S_B,終止位置為 END_P0S_B,在第一次比較時(shí),BEGIN_P0S_A和BEGIN_P0S_B均 為0〇
[0036] 如圖8所不,在二進(jìn)制序列A和二進(jìn)制序列B中設(shè)置滑動(dòng)窗口,以滑動(dòng)窗口的圈括區(qū) 域?yàn)榛鶞?zhǔn),分別對(duì)二進(jìn)制序列A、B劃分出當(dāng)前比較的單位子序列Ai和Bi。
[0037] 即:Ai為二進(jìn)制序列A從BEGIN_P0S_A到END_P0S_A的子二進(jìn)制序列。
[0038] Bi為二進(jìn)制序列B從BEGIN_P0S_B到END_P0S_B的子二進(jìn)制序列。
[0039] 分別以單位子序列Ai與單位子序列Bi為基礎(chǔ),自二進(jìn)制序列A、二進(jìn)制序列B的起 始位置BEGIN_P0S_A(分別記為PA、PB)開(kāi)始,依次比較位于Pa和PB上的字節(jié)(分別記為:?和 如果尾馬V,則此為一個(gè)連續(xù)公共子序列的開(kāi)始,并記為&〇為連續(xù)公共子序列的 編號(hào),j = 〇,l,···)),如圖9所示。
[0040]所述滑動(dòng)窗口同時(shí)向后移動(dòng),對(duì)應(yīng)比較后續(xù)字節(jié),一直到^ #4?,則獲取到一個(gè) 完整的連續(xù)公共子序列,記為&=I/5。λ , Ma,.,g i。
[0041 ]其中,所述滑動(dòng)窗WIND0W_LEN的長(zhǎng)度優(yōu)選取較大的值,以便反應(yīng)地圖數(shù)