專利名稱:一種基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于復(fù)雜道路網(wǎng)路組織和管理的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法。
背景技術(shù):
地圖匹配就是給定地圖上一個點(diǎn)的經(jīng)度和緯度,找出該點(diǎn)在地圖上的所在路段。在城市交通迅速發(fā)展的今天,城市路網(wǎng)日益復(fù)雜化,因此車載終端導(dǎo)航系統(tǒng)越來越受到人們的重視,但要實(shí)現(xiàn)一個實(shí)用的導(dǎo)航系統(tǒng)需要解決很多的技術(shù)難點(diǎn)。其中一個就是如何在存儲器較小,處理能力有限的車載終端上去組織和管理大規(guī)模的道路網(wǎng)絡(luò)信息,以及在這個基礎(chǔ)上實(shí)現(xiàn)快速的地圖匹配算法。
傳統(tǒng)的組織模型主要有R-樹,K-D-B樹。這兩種模型的方法是將路網(wǎng)按一定的策略進(jìn)行劃分,然后用樹來組織劃分后的路網(wǎng)塊。這兩種模型主要的優(yōu)點(diǎn)是便于插入和刪除操作,但查詢操作速度比較慢,因?yàn)橐闅v樹,但實(shí)際上一般對路網(wǎng)的插入和刪除操作很少,而查詢操作則非常頻繁。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題克服現(xiàn)有技術(shù)的不足,提供一種適于快速查詢的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,這種方法查詢速度快,且效率高。
本發(fā)明的技術(shù)解決方案一種基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特點(diǎn)在于通過以下步驟實(shí)現(xiàn)(1)建立路網(wǎng)組織結(jié)構(gòu)并存到文件中本發(fā)明在路段-節(jié)點(diǎn)(arc-node)路網(wǎng)存儲結(jié)構(gòu)上增加了一層網(wǎng)格結(jié)構(gòu),來建立整個路網(wǎng)的數(shù)據(jù)。路網(wǎng)組織結(jié)構(gòu)是將現(xiàn)實(shí)中的路網(wǎng)用有向圖來表示,圖的邊表示為路段,圖的節(jié)點(diǎn)表示為路段與路段中的連接點(diǎn),網(wǎng)格的組織模型為分塊形式,將整個路網(wǎng)從左至右,從下至上等分成一個一個的網(wǎng)格分塊。如果一個路段跨幾個網(wǎng)格的話則將其在其所跨的每個網(wǎng)格中都存儲一份該路段的信息。網(wǎng)格的大小一般應(yīng)大于200m,但是也不能太大,因?yàn)榇笮∵^大的話,網(wǎng)格中的路段數(shù)就相對比較多,這樣會影響查詢的效率,因此網(wǎng)格大小一般在200m~1000m。
本發(fā)明需要一套文件來存儲路網(wǎng)的所有信息,包括路網(wǎng)的基本拓?fù)湫畔⒓熬W(wǎng)格信息。路網(wǎng)一般是由節(jié)點(diǎn)node和路段arc構(gòu)成,因此路網(wǎng)主要由兩個文件來存儲node文件和arc文件,其中node文件存儲所有節(jié)點(diǎn)的信息,節(jié)點(diǎn)數(shù)據(jù)在文件中的位置就隱含著該路段的編號。文件中每個點(diǎn)的數(shù)據(jù)結(jié)構(gòu)為經(jīng)度,緯度,以該節(jié)點(diǎn)為終止的第一條路段(入路段),以該節(jié)點(diǎn)為開始的第一條路段(出路段)。
arc文件存儲所有路段的信息.,路段數(shù)據(jù)在文件中的位置就隱含著該路段的編號。文件中每條弧線的數(shù)據(jù)結(jié)構(gòu)為起始節(jié)點(diǎn)編號,終止節(jié)點(diǎn)編號,指向弧線起始節(jié)點(diǎn)的下一條入路段,以弧線終止節(jié)點(diǎn)為開始的下一條出路段。
用網(wǎng)格來組織和管理這些路網(wǎng)信息,就還需要單獨(dú)一個網(wǎng)格文件grid來對這些信息進(jìn)行有效的組織和管理。
網(wǎng)格文件稱為grid文件按網(wǎng)格號的順序存儲每個網(wǎng)格里所包含的路段的編號。網(wǎng)格號是2維的,如(i,j),其中i表示經(jīng)度方向該網(wǎng)格的序號,j表示緯度方向網(wǎng)格的序號。
在網(wǎng)格文件grid中每條記錄存儲著一個網(wǎng)格里所包含的所有路段的編號,由于各個網(wǎng)格中的路段數(shù)目不相同。因此文件中的記錄是變長的,這就還需要一個索引文件來存儲每條記錄在文件中的起始位置和結(jié)束位置,該文件稱為index文件。
index文件存儲每個網(wǎng)格在grid文件中的開始位置。
(2)給定地圖上的一個點(diǎn)P(x,y),x為該點(diǎn)的經(jīng)度,y為該點(diǎn)的緯度,根據(jù)點(diǎn)查詢找出該點(diǎn)所在網(wǎng)格中的所有路段,記點(diǎn)P所在的網(wǎng)格為Grid(P)。
a.點(diǎn)查詢給出一個點(diǎn)的坐標(biāo),從路網(wǎng)中找出該點(diǎn)所在網(wǎng)格的所有路段信息。假設(shè)在路網(wǎng)中選取一點(diǎn)O(xOrg,yOrg)為原點(diǎn),網(wǎng)格的大小為grid_size(單位可以為m或者度),則點(diǎn)P(x,y)可以通過以下公式定位到一個網(wǎng)格內(nèi)xIndex=(x-xOrg)/grid_size(1)yIndex=(y-yOrg)/grid_size(2)其中(xInde,yIndex)為網(wǎng)格的編號;b.利用公式(1)和(2)計(jì)算出該點(diǎn)所在網(wǎng)格的編號;c.通過網(wǎng)格編號從index文件中找到該網(wǎng)格在grid文件中的位置;d.從grid文件中讀出該網(wǎng)格中的所有路段的編號;e.通過路段編號就可以從arc文件中直接讀出這些路段的所有信息。
(3)找出P點(diǎn)所在網(wǎng)格Grid(P)的相鄰網(wǎng)格中的所有路段。
由于點(diǎn)不一定就在路段上面,即點(diǎn)和路段之間存在一定的距離,因此與該點(diǎn)匹配的路段不一定就在該點(diǎn)所在的網(wǎng)格內(nèi),而可能是在相鄰的網(wǎng)格內(nèi)如圖2所示。這就需要將相鄰的網(wǎng)格中的路段也找出來作為候選路段。相鄰的網(wǎng)格包括上、下、左、右、左上、左下、右上、右下8個網(wǎng)格,這8個網(wǎng)格的編號可以根據(jù)Grid(P)的網(wǎng)格號得到,從而可以根據(jù)上面點(diǎn)查詢的步驟得到這8個網(wǎng)格中的所有路段。
(4)將第二步和第三步所得到的路段合并。
(5)對合并后的每一條路段,計(jì)算點(diǎn)P到該路段的投影距離d,選取所有d中最小的那條路段作為最佳匹配路段設(shè)路段的方程式為Ax+By+C=0,則點(diǎn)P到該路段的投影距離公式為d=|Ax+By+C|/|A+B|...(3)]]>
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于本發(fā)明的速度快,效率高。由于可以直接定位到點(diǎn)所在的網(wǎng)格,并且網(wǎng)格一般比較小,網(wǎng)格中的路段也就比較少,因此點(diǎn)查詢速度非???;而且不論整個路網(wǎng)被劃分成了多少個網(wǎng)格,算法所需要查找的網(wǎng)格只有固定的9個,因此該算法的復(fù)雜度為O(1)。
圖1為北京市的路網(wǎng)劃分情況,北京市6環(huán)以內(nèi)的路網(wǎng)被分成了68×100個網(wǎng)格。網(wǎng)格大小為取為0.005度,約400~600m;圖2為待匹配點(diǎn)在靠近網(wǎng)格邊界上的情況圖,這種情況下匹配路段可能不在待匹配點(diǎn)所在的網(wǎng)格內(nèi)。
具體實(shí)施例方式
以下以北京市主干路地圖,如圖1、2所示為例說明本發(fā)明的實(shí)現(xiàn)步驟1.建立路網(wǎng)組織結(jié)構(gòu)并存到文件中從原始地圖文件中讀出地圖數(shù)據(jù),然后生成arc,node,grid,index文件。
2.給定點(diǎn)P(116.322693,39.939035),根據(jù)點(diǎn)查詢找出該點(diǎn)所在網(wǎng)格中的所有路段。
a.利用公式前述的(1)和(2)計(jì)算出P所在網(wǎng)格的編號為(34,33)b.通過網(wǎng)格編號從index文件中找到該網(wǎng)格在grid文件中的位置為15306c.從grid文件中讀出該網(wǎng)格中的所有路段的編號依次為4994,4995,4996,4997d.通過路段編號就可以從arc文件中直接讀出這些路段的所有信息。
3.找出P點(diǎn)所在網(wǎng)格Grid(P)的相鄰網(wǎng)格中的所有路段。
相鄰網(wǎng)格的編號為(33,32),(33,33),(33,34),(34,32),(34,34),(35,32),(35,33),(35,35);根據(jù)步驟(2)中的方法可以找出這8個網(wǎng)格中的所有路段編號,依次為1050,1051,1052,1053,1054,1055,5038,5039,5118,5119,5120,5121,5122,5123;4.將上述步驟(2)和步驟(3)所得到的路段合并,得到候選路段的編號集合為(4994,4995,4996,4997,1050,1051,1052,1053,1054,1055,5038,5039,5118,5119,5120,5121,5122,5123);5.對合并后的每一條路段,利用公式(3)計(jì)算點(diǎn)P到該路段的投影距離d。下面是點(diǎn)P到每個路段的距離列表,其中括號內(nèi)的第一個字段表示路段編號,第二個字段表示投影距離d。
(1050,0.0084915617527043),(1051,0.0084915617527043),(1052,0.0084634872836217),(1053,0.0084634872836217),(1054,0.0078558415877548),(1055,0.0078558415877548),(4994,0.0016566320485382),(4995,0.0016566320485382),(4996,0.0016823454657897),(4997,0.0016823454657897),(5038,0.0035825959861523),(5039,0.0035825959861523),(5120,0.0035680709073698),(5121,0.0035680709073698),(5122,0.0034048345372072),(5123,0.0034048345372072),(5118,0.0070263647073014),(5119,0.0070263647073014)根據(jù)上表可知,最佳匹配路段的編號為4094。
權(quán)利要求
1.一種基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于通過以下步驟實(shí)現(xiàn)(1)建立路網(wǎng)組織結(jié)構(gòu)并存到文件中;(2)給定地圖上的一個點(diǎn)P(x,y),x為該點(diǎn)的經(jīng)度,y為該點(diǎn)的緯度,根據(jù)點(diǎn)查詢找出該點(diǎn)所在網(wǎng)格中的所有路段,記點(diǎn)P所在的網(wǎng)格為Grid(P);(3)找出P點(diǎn)所在網(wǎng)格Grid(P)的相鄰網(wǎng)格中的所有路段;(4)將上述步驟(2)和步驟(3)所得到的路段合并;(5)對合并后的每一條路段,計(jì)算點(diǎn)P到該路段的投影距離d,選取所有d中最小的那條路段作為最佳匹配路段。
2.根據(jù)權(quán)利要求1所述的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于所述的路網(wǎng)組織結(jié)構(gòu)是將現(xiàn)實(shí)中的路網(wǎng)用有向圖來表示,圖的邊表示為路段,圖的節(jié)點(diǎn)表示為路段與路段中的連接點(diǎn),網(wǎng)格的組織模型為分塊形式,將整個路網(wǎng)從左至右,從下至上等分成一個一個的網(wǎng)格分塊。
3.根據(jù)權(quán)利要求1所述的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于所述的路網(wǎng)組織結(jié)構(gòu)主要由兩個文件來存儲node文件和arc文件,其中node文件存儲所有節(jié)點(diǎn)的信息,節(jié)點(diǎn)數(shù)據(jù)在文件中的位置就隱含著該路段的編號,文件中每個點(diǎn)的數(shù)據(jù)結(jié)構(gòu)為經(jīng)度、緯度,以該節(jié)點(diǎn)為終止的第一條路段,以該節(jié)點(diǎn)為開始的第一條路段;arc文件存儲所有路段的信息,路段數(shù)據(jù)在文件中的位置就隱含著該路段的編號。文件中每條弧線的數(shù)據(jù)結(jié)構(gòu)為起始節(jié)點(diǎn)編號,終止節(jié)點(diǎn)編號,指向弧線起始節(jié)點(diǎn)的下一條入路段,以弧線終止節(jié)點(diǎn)為開始的下一條出路段。
4.根據(jù)權(quán)利要求3所述的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于采用網(wǎng)格文件grid來對存儲所有節(jié)點(diǎn)和路段信息進(jìn)行組織和管理,grid文件按網(wǎng)格號的順序存儲每個網(wǎng)格里所包含的路段的編號,鄧網(wǎng)絡(luò)號。
5.根據(jù)權(quán)利要求4所述的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于所述的網(wǎng)格號為兩維(i,j),其中i表示經(jīng)度方向該網(wǎng)格的序號,j表示緯度方向網(wǎng)格的序號。
6.根據(jù)權(quán)利要求4所述的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于采用index文件存儲每個網(wǎng)格在grid文件中的開始位置。
7.根據(jù)權(quán)利要求1所述的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于所述步驟(2)中點(diǎn)查詢的步驟如下a.在路網(wǎng)中選取一點(diǎn)O(xOrg,yOrg)為原點(diǎn),網(wǎng)格的大小grid_size,單位為m或者度,則點(diǎn)P(x,y)通過以下公式定位到一個網(wǎng)格內(nèi)xIndex=(x-xOrg)/grid_size (1)yIndex=(y-yOrg)/grid_size (2)其中(xInde,yIndex)為網(wǎng)格的編號;b.利用上述公式(1)和公式(2)計(jì)算出該點(diǎn)所在網(wǎng)格的編號;c.通過網(wǎng)格編號從index文件中找到該網(wǎng)格在grid文件中的位置;d.從grid文件中讀出該網(wǎng)格中的所有路段的編號;e.通過路段編號從arc文件中直接讀出這些路段的所有信息。
8.根據(jù)權(quán)利要求1所述的基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,其特征在于所述步驟(3)中的相鄰網(wǎng)格包括上、下、左、右、左上、左下、右上、右下8個網(wǎng)格,這8個網(wǎng)格的編號根據(jù)Grid(P)的網(wǎng)格號得到,從而根據(jù)上面點(diǎn)查詢的步驟得到這8個網(wǎng)格中的所有路段。
全文摘要
一種基于小網(wǎng)格路網(wǎng)組織結(jié)構(gòu)的快速地圖匹配方法,(1)建立路網(wǎng)組織結(jié)構(gòu)并存到文件中;(2)給定地圖上的一個點(diǎn)P(x,y),x為該點(diǎn)的經(jīng)度,y為該點(diǎn)的緯度,根據(jù)點(diǎn)查詢找出該點(diǎn)所在網(wǎng)格中的所有路段,記點(diǎn)P所在的網(wǎng)格為Grid(P);(3)找出P點(diǎn)所在網(wǎng)格Grid(P)的相鄰網(wǎng)格中的所有路段;(4)將上述步驟(2)和步驟(3)所得到的路段合并;(5)對合并后的每一條路段,計(jì)算點(diǎn)P到該路段的投影距離d,選取所有d中最小的那條路段作為最佳匹配路段。本發(fā)明由于可以直接定位到點(diǎn)所在的網(wǎng)格,并且網(wǎng)格一般比較小,網(wǎng)格中的路段也就比較少,點(diǎn)查詢速度非常快,效率高,而且不論整個路網(wǎng)被劃分成了多少個網(wǎng)格,算法所需要查找的網(wǎng)格只有固定的9個,因此本發(fā)明的計(jì)算簡單。
文檔編號G06F17/30GK1908588SQ20061011243
公開日2007年2月7日 申請日期2006年8月17日 優(yōu)先權(quán)日2006年8月17日
發(fā)明者諸彤宇, 王智賢, 呂衛(wèi)鋒, 吳東東 申請人:北京航空航天大學(xué)