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