道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法
【專利摘要】道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法,涉及一種數(shù)據(jù)查詢方法。為了解決現(xiàn)有采用索引結(jié)構(gòu)對道路網(wǎng)絡(luò)段進行索引,將道路網(wǎng)絡(luò)建模為有向/無向圖,基于內(nèi)存數(shù)據(jù)結(jié)構(gòu)處理最近鄰查詢請求,但是當?shù)缆肪W(wǎng)絡(luò)數(shù)據(jù)量較大、路段較多時,查詢效率急劇降低;并且,基于圖的建模方式,無法反映出移動對象在十字路口的轉(zhuǎn)向關(guān)系,無法解決具有十字路口轉(zhuǎn)向和U型轉(zhuǎn)彎約束的復(fù)雜道路網(wǎng)絡(luò)最近鄰查詢的問題。它提出RRN-Tree索引結(jié)構(gòu),對道路網(wǎng)絡(luò)及興趣點對象進行索引,同時在索引結(jié)構(gòu)中為路徑上的交叉點建立鄰接鏈表,存儲十字路口處各路段之間的連接關(guān)系,從而完成復(fù)雜約束條件下道路網(wǎng)絡(luò)CKNN查詢。用于道路網(wǎng)絡(luò)CKNN查詢。
【專利說明】道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)查詢方法。
【背景技術(shù)】
[0002]隨著無線通信技術(shù)的發(fā)展和具有GPS定位功能的移動電話、PDA等便攜設(shè)備的普及,基于位置服務(wù)(LBS, Location Based Service)得以快速發(fā)展,已廣泛應(yīng)用于地理信息系統(tǒng)、應(yīng)急服務(wù)、汽車導(dǎo)航和旅游路徑規(guī)劃等領(lǐng)域??臻g查詢與基于位置服務(wù)密切相關(guān),其中基于道路網(wǎng)絡(luò)的移動對象連續(xù)K最近鄰查詢(CKNN, Continouns K Nearest Neighbors)就是一類重要的查詢請求,能夠在道路網(wǎng)絡(luò)環(huán)境下不斷查找距離給定查詢對象最近的K個最近鄰目標,例如,在消防指揮中,查找距離指揮中心最近的4輛消防車。解決此類問題的關(guān)鍵在于:1)快速實時計算任意兩個移動對象之間的最短路徑;2)移動對象位置更新的維護與管理。
[0003]國內(nèi)外針對道路網(wǎng)絡(luò)的CKNN查詢問題,學者們做了一些工作。Kolahdouzan提出IE/UBA方法,利用Voronoi圖處理網(wǎng)絡(luò)空間的CNN問題,通過減少查詢路徑上的KNN計算次數(shù)提高算法效率,但當K值增大、對象分布密度增加時,算法效率急劇下降。Cho針對IE/UBA方法中查詢性能受對象分布密度影響提出UNIC0NS技術(shù),充分利用預(yù)計算匯聚節(jié)點(Condensing Point)的最近鄰提高最短路徑計算速度;為完成CKNN查詢,將查詢路徑分成若干子段,快照式計算每個子段端點的KNNs,每個端點的KNNs及子段上的對象構(gòu)成最終查詢結(jié)果。以上方法都是研究查詢對象是移動而興趣點對象是靜止的情況。1011以^(1匕[3]提出IMA/GMA方法處理查詢對象和興趣點對象在道路網(wǎng)上任意移動的CKNN查詢問題。該算法是目前公認的處理基于道路網(wǎng)絡(luò)的CKNN查詢經(jīng)典算法,系統(tǒng)采用基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)存儲網(wǎng)絡(luò)邊、節(jié)點以及查詢信息,提出IMA/GMA算法處理查詢請求。IMA算法從查詢對象所在邊開始擴展網(wǎng)絡(luò)邊,并遍歷網(wǎng)絡(luò)邊上的興趣點對象,形成初始KNNs查詢結(jié)果集,同時以查詢點為根,建立查詢擴展樹,處理查詢請求、移動對象和道路邊權(quán)重更新時的連續(xù)查詢請求;GMA采用IMA和共享執(zhí)行機制,算法的核心是稱作序列(Seqence)的概念,即:序列上的查詢請求結(jié)果為序列上的對象和序列端點處KNNs結(jié)果的并集,當多個查詢請求處在同一序列上時可共享已獲得的查詢結(jié)果。為了維護查詢結(jié)果的更新,在計算初始KNNs時建立影響列表。IMA/GMA方法采用基于內(nèi)存的方式存儲網(wǎng)絡(luò)及移動對象,不適合大型道路網(wǎng)絡(luò)。Wang提出MovNet框架處理道路網(wǎng)絡(luò)環(huán)境下的基于位置的查詢,使用基于磁盤的R樹索引道路網(wǎng)絡(luò),基于內(nèi)存的格網(wǎng)索引管理移動對象的位置更新,通過網(wǎng)格重疊計算算法將道路網(wǎng)與格網(wǎng)單元進行關(guān)聯(lián),完成基于位置的范圍查詢和KNN查詢。Demisyurek針對IMA/GMA算法使用Dijkstra算法網(wǎng)絡(luò)距離計算時盲目擴展以及對象位置更新時盲目映像的缺點,提出ER-CKNN算法,基于PMR-QuadTree索引道路網(wǎng)絡(luò),基于格網(wǎng)索引管理移動對象位置更新,使用稱作edge-bitmap-encoding技術(shù)結(jié)合A*啟發(fā)式搜索算法,提高最短路徑計算速度;同時,在查詢時使用歐式距離約束(Euclidean Restriction)限制K近鄰搜索區(qū)域;對象位置更新時,只對區(qū)域內(nèi)的移動對象進行更新,從而加快查詢處理速度。廖巍[6]針對基于道路網(wǎng)絡(luò)的CKNN查詢處理,提出一種新的道路網(wǎng)絡(luò)有向圖模型,分別利用基于內(nèi)存的哈希表和線性鏈表結(jié)構(gòu)對移動對象當前位置和道路網(wǎng)絡(luò)有向圖模型進行存儲和管理.通過引入單向網(wǎng)絡(luò)距離度量和雙向網(wǎng)絡(luò)距離度量,提出單向網(wǎng)絡(luò)擴展(UNE)算法和雙向網(wǎng)絡(luò)擴展(BNE)算法以支持不同語義的連續(xù)k近鄰查詢處理,并采用影響樹及網(wǎng)絡(luò)擴展策略來減少連續(xù)k近鄰查詢更新的搜索代價。趙亮[7]針對數(shù)據(jù)頻繁更新時查詢性能下降問題,結(jié)合多核多線程技術(shù),提出了一種基于多線程的連續(xù)查詢處理框架。該框架周期性重計算所有查詢結(jié)果,將查詢處理分為順序執(zhí)行的數(shù)據(jù)更新階段和查詢執(zhí)行階段,分別使用任務(wù)并行和數(shù)據(jù)并行的方法執(zhí)行各階段的操作。設(shè)計了數(shù)據(jù)更新階段使用的數(shù)據(jù)結(jié)構(gòu),提出了查詢處理階段的k近鄰查詢處理策略,包含離線預(yù)計算和在線k近鄰查詢處理算法兩個部分,并對k近鄰算法復(fù)雜性及多線程處理框架的加速比進行了理論分析。
[0004]然而,以上文獻都是采用一種索引結(jié)構(gòu)對道路網(wǎng)絡(luò)段進行索引,將道路網(wǎng)絡(luò)建模為有向/無向圖,基于內(nèi)存數(shù)據(jù)結(jié)構(gòu)處理最近鄰查詢請求,但是當?shù)缆肪W(wǎng)絡(luò)數(shù)據(jù)量較大、路段較多時,查詢效率急劇降低;并且,基于圖的建模方式,無法反映出移動對象在十字路口的轉(zhuǎn)向關(guān)系,無法解決具有十字路口轉(zhuǎn)向和U型轉(zhuǎn)彎約束的復(fù)雜道路網(wǎng)絡(luò)最近鄰查詢問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是為了解決現(xiàn)有采用索引結(jié)構(gòu)對道路網(wǎng)絡(luò)段進行索引,將道路網(wǎng)絡(luò)建模為有向/無向圖, 基于內(nèi)存數(shù)據(jù)結(jié)構(gòu)處理最近鄰查詢請求,但是當?shù)缆肪W(wǎng)絡(luò)數(shù)據(jù)量較大、路段較多時,查詢效率急劇降低;并且,基于圖的建模方式,無法反映出移動對象在十字路口的轉(zhuǎn)向關(guān)系,無法解決具有十字路口轉(zhuǎn)向和U型轉(zhuǎn)彎約束的復(fù)雜道路網(wǎng)絡(luò)最近鄰查詢問題,提供一種道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法。
[0006]道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法,該查詢方法的實現(xiàn)步驟為:
[0007]步驟一:首先,分別定義道路網(wǎng)絡(luò)G、路線r、路段seg、交叉路口 j、移動對象0和KNN監(jiān)測區(qū);
[0008]所述道路網(wǎng)絡(luò)G為一個二元組G= (R,J),其中R是道路網(wǎng)中路線集合,每條路線包含若干路段,J是道路網(wǎng)中多條路線的交叉點集合;
[0009]所述路線r是指道路網(wǎng)絡(luò)中可獨立命名的一條完整路徑,定義為:
[0010]r = (X -P°s.1 )'U ).[0011]其中,rid是路線標識;Ien表示路線長度,Ien e [O, I] ; (X,/"?-丨表示路線
上的交叉路口及其在路線上相對路線起點的位置集合,Posj e [O, I];
[0012]所述路段seg是指相鄰交叉路口之間的一段路線,定義為:
[0013]seg= (sid, rid, Ps, pe, dir);
[0014]其中,sid、rid分別表示路段及所在路線的標識;Ps、Pe表示路段的起始點和終點;dir e {-1, O, 1},當值為I時表示移動對象在該路段上允許從起點向終點方向運動,值為-1則表示從路段終點向起始點方向運動,O表示該路段允許雙向通行;
[0015]所述交叉路口 j是指多條路線的交叉節(jié)點,定義為:j 二 (jicL {ridj, pos, ,adjList).[0016]其中jid為交叉路口的標識;(ric^posp表示該交叉路口在第j條路線上的位置;adjList為交叉路口的 鄰接列表,存儲該交叉路口處各路段的連接關(guān)系;
[0017]所述移動對象O是指在道路網(wǎng)絡(luò)中,將移動對象O建模為:o=(oid, x, y, rid, pos, dir);
[0018]其中,oid、rid分別表示移動對象及其所在路線;X,y表示移動對象的經(jīng)緯度坐標;POS表示移動對象距離所在路線起點的距離,POS e [0,1] ;dir表示移動對象的運行方向,值為I表示從所在路段起點向終點方向運行,值為-1則是從所在路段的終點向起點方向運行;
[0019]所述KNN監(jiān)測區(qū)是指以查詢對象q為根,KNN_dist為距離上限,所有與q相連的路段構(gòu)成的查詢區(qū)域;
[0020]步驟二、構(gòu)建RRN-Tree索引結(jié)構(gòu),將鄰接鏈表技術(shù)引入索引結(jié)構(gòu)中,用鄰接鏈表來表示路線上交叉路口處的道路邊之間的連接關(guān)系,基于網(wǎng)絡(luò)邊擴展思想,計算查詢對象的K個最近鄰對象;同時在計算KNN查詢結(jié)果集時建立K近鄰監(jiān)測區(qū);
[0021]所述RRN-Tree索引結(jié)構(gòu)由三部分組成:對道路網(wǎng)絡(luò)的路線進行索引的頂層2DR-Tree、表示路線上交叉節(jié)點鄰接關(guān)系的鄰接鏈表和索引各個路線上移動對象的底層R-Tree ;
[0022]所述對道路網(wǎng)絡(luò)的路線進行索引的頂層2D R-Tree,其葉子節(jié)點是一個三元組:〈mbb,polypt, treept> ;
[0023]其中,mbb表示路線對應(yīng)polyline的最小外包邊界;polypt指向路線的實際表示,treept指向底層R樹;
[0024]所述索引各個路線上移動對象的底層R-Tree,其葉子節(jié)點是一個二元組:〈mbb, childpt〉,其中mbb表示所有孩子節(jié)點的MBBs集合,childpt指向孩子節(jié)點,即:索引某路線對應(yīng)的各路段及路段上的移動對象的底層R樹指針;
[0025]所述表示路線上交叉節(jié)點鄰接關(guān)系的鄰接鏈表是由hash表和兩級單鏈表組成,hash表部分與MON-Tree中含義相同,第一級單鏈表表示路線上的各個節(jié)點,第二級節(jié)點表示某節(jié)點的出度;
[0026]步驟三:根據(jù)步驟二所構(gòu)建的RRN-Tree索引結(jié)構(gòu),進行基于道路網(wǎng)絡(luò)的CKNN查詢;
[0027]所述基于道路網(wǎng)絡(luò)的CKNN查詢包括KNN查詢初始集計算和CKNN查詢更新兩個階段:
[0028]首先,第一階段所述KNN查詢初始集計算是指:當查詢對象基于當前位置發(fā)出KNN查詢請求時,首先通過RRN-Tree索引結(jié)構(gòu)快速定位查詢對象所在路段,并將路段的兩個端點入隊列,并按照距離查詢點的距離從小到大排序;然后讀取距離查詢點最近的興趣點對象存入結(jié)果隊列中,當對象數(shù)少于K個時,沿著查詢對象前進方向的路段頂點繼續(xù)擴展,通過讀取路段頂點的鄰接鏈表確定各路段的連接關(guān)系,在有連接關(guān)系的路段上擴展查找最近鄰對象,直到找到K個對象為止;最后,為了提高連續(xù)查詢的查詢效率,以第K個對象距離查詢點的距離為距離上限,將所有與查詢點有連接關(guān)系的路段建立KNN查詢監(jiān)測區(qū),凡是落在該監(jiān)測區(qū)域內(nèi)的對象將成為候選的KNN結(jié)果;
[0029]第二階段進行CKNN查詢更新,所述CKNN查詢更新分為兩種情況:當查詢點對象位置不變,而興趣點對象移動時,利用查詢過程生成的KNN監(jiān)測區(qū)可降低查詢更新代價;當查詢點對象移動時,應(yīng)用上述第一階段的KNN查詢初始集計算的的查詢算法重新計算查詢請求。
[0030]本發(fā)明的優(yōu)點是:
[0031]現(xiàn)有的研究基于道路網(wǎng)絡(luò)的CKNN查詢問題主要是將道路網(wǎng)絡(luò)以路段和節(jié)點的形式進行建模,轉(zhuǎn)化成基于內(nèi)存的有向/無向圖,該模型存在兩個問題:一是道路網(wǎng)絡(luò)中路段數(shù)據(jù)量大,導(dǎo)致索引結(jié)構(gòu)分支過多、移動對象更新頻繁;二是圖表示方法不能很好地處理十字路口轉(zhuǎn)向、U型轉(zhuǎn)彎等交通規(guī)則。針對此問題,基于路線對道路網(wǎng)絡(luò)建模,提出一種新的索引結(jié)構(gòu):RRN-Tree(Route based Road Networks Tree),基于網(wǎng)絡(luò)邊擴展方式,解決復(fù)雜條件下的道路網(wǎng)絡(luò)CKNN查詢。實驗結(jié)果表明,在各種網(wǎng)絡(luò)密度和興趣點對象分布密度下,基于RRN-Tree索引方法的查詢性能都優(yōu)于經(jīng)典的IMA/GMA算法,性能提高1.5~2.13倍。
【專利附圖】
【附圖說明】
[0032]圖1為基于路段的道路網(wǎng)絡(luò)模型圖;
[0033]圖2為基于路線的道路網(wǎng)絡(luò)模型圖;
[0034]圖3為【具體實施方式】一中所述的RRN-Tree索引結(jié)構(gòu)中的對道路網(wǎng)絡(luò)的路線(Route)進行索引的頂層2D R -Tree和索引各個路線上移動對象的底層R-Tree ;
[0035]圖4為【具體實施方式】一中所述的RRN-Tree索引結(jié)構(gòu)中的表示路線上交叉節(jié)點鄰接關(guān)系的鄰接鏈表;
[0036]圖5為單向行駛具有轉(zhuǎn)向關(guān)系的道路網(wǎng)絡(luò)模型圖;
[0037]圖6為以Dmax為距離上限,查詢點q為根,計算KNN監(jiān)測區(qū)域的道路網(wǎng)絡(luò)模型圖;
[0038]圖7為本發(fā)明所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法和IMA/GMA算法在LA道路網(wǎng)環(huán)境下POI對象數(shù)量及分布密度變化情況下的CPU響應(yīng)時間對比情況;隨著POI對象數(shù)量增加,CPU響應(yīng)時間明顯下降,但是POI數(shù)量達到20K以上時,變化趨于平緩,其中,一代表1MA/GMA, 代表本發(fā)明的方法;
[0039]圖8為本發(fā)明所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法和IMA/GMA算法在SF道路網(wǎng)環(huán)境下POI對象數(shù)量及分布密度變化情況下的CPU響應(yīng)時間對比情況;,其中,一一.代表1MA/GMA, —k~?代表本發(fā)明的方法;
[0040]圖9:為本發(fā)明所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法和IMA/GMA算法在LA道路網(wǎng)絡(luò)下POI分布密度對查詢的影響,其中,一代表1MA/GMA,—代表本發(fā)明的方法;
[0041]圖10為本發(fā)明所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法和IMA/GMA算法在SF道路網(wǎng)下POI分布密度對查詢的影響,其中,—代表1MA/GMA,
代表本發(fā)明的方法;
[0042]圖11為本發(fā)明所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法和IMA/GMA算法在SF道路網(wǎng)絡(luò)環(huán)境下查詢請求數(shù)k對查詢性能的影響情況;從圖中可以看出,隨著k值增加,CPU運行時間不斷增加,但是本發(fā)明的方法的運行時間明顯低于IMA/GMA算法的運行時間;
[0043]圖12為本發(fā)明所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法和IMA/GMA算法在LA道路網(wǎng)絡(luò)環(huán)境下查詢請求數(shù)k對查詢性能的影響情況;從圖中可以看出,隨著k值增加,CPU運行時間不斷增加,但是本發(fā)明的方法的運行時間明顯低于IMA/GMA算法的運行時間。
【具體實施方式】
[0044]【具體實施方式】一:下面結(jié)合圖1至圖12說明本實施方式,本實施方式所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法,該查詢方法的實現(xiàn)步驟為:
[0045]步驟一:首先,分別定義道路網(wǎng)絡(luò)G、路線r、路段seg、交叉路口 j、移動對象0和KNN監(jiān)測區(qū);
[0046]所述道路網(wǎng)絡(luò)G為一個二元組G= (R,J),其中R是道路網(wǎng)中路線集合,每條路線包含若干路段,J是道路網(wǎng)中多條路線的交叉點集合;[0047]所述路線r是指道路網(wǎng)絡(luò)中可獨立命名的一條完整路徑,定義為:
[0048]r =(廠^,(./< ’ Pos, )% ).[0049]其中,rid是路線標識;len表示路線長度,Ien e [O, I] ; (X。表示路線
上的交叉路口及其在路線上相對路線起點的位置集合,Posj e [O, I];
[0050]所述路段seg是指相鄰交叉路口之間的一段路線,定義為:
[0051]seg= (sid, rid, ps, pe, dir);
[0052]其中,sid、rid分別表示路段及所在路線的標識表示路段的起始點和終點;dir e {-1, O, 1},當值為I時表示移動對象在該路段上允許從起點向終點方向運動,值為-1則表示從路段終點向起始點方向運動,O表示該路段允許雙向通行;
[0053]所述交叉路口 j是指多條路線的交叉節(jié)點,定義為:./' = (./X{rid:, pos, V;二,CidjLisi).[0054]其中jid為交叉路口的標識;(rid」,p0Sj)表示該交叉路口在第j條路線上的位置;adjList為交叉路口的鄰接列表,存儲該交叉路口處各路段的連接關(guān)系;
[0055]所述移動對象O是指在道路網(wǎng)絡(luò)中,將移動對象O建模為:ο= (oid, X, y, rid, pos, dir);
[0056]其中,oid、rid分別表示移動對象及其所在路線;X,y表示移動對象的經(jīng)緯度坐標;POS表示移動對象距離所在路線起點的距離,POS e [0,1] ;dir表示移動對象的運行方向,值為I表示從所在路段起點向終點方向運行,值為-1則是從所在路段的終點向起點方向運行;
[0057]所述KNN監(jiān)測區(qū)是指以查詢對象q為根,KNN_dist為距離上限,所有與q相連的路段構(gòu)成的查詢區(qū)域;
[0058]步驟二、構(gòu)建RRN-Tree (Route based Road Networks)索引結(jié)構(gòu),將鄰接鏈表技術(shù)引入索引結(jié)構(gòu)中,用鄰接鏈表來表示路線上交叉路口處的道路邊之間的連接關(guān)系,基于網(wǎng)絡(luò)邊擴展思想,計算查詢對象的K個最近鄰對象;同時在計算KNN查詢結(jié)果集時建立K近鄰監(jiān)測區(qū);
[0059]所述RRN-Tree (Route based Road Networks)索引結(jié)構(gòu)由三部分組成:對道路網(wǎng)絡(luò)的路線(Route)進行索引的頂層2D R-Tree、表示路線上交叉節(jié)點鄰接關(guān)系的鄰接鏈表和索引各個路線上移動對象的底層R-Tree ;
[0060]所述對道路網(wǎng)絡(luò)的路線(Route)進行索引的頂層2D R-Tree,其葉子節(jié)點是一個三元組:<mbb, polypt, treept);
[0061]其中,mbb表示路線對應(yīng)polyline的最小外包邊界;polypt指向路線的實際表示,treept指向底層R樹;
[0062]所述索引各個路線上移動對象的底層R-Tree,其葉子節(jié)點是一個二元組:〈mbb, childpt〉,其中mbb表示所有孩子節(jié)點的MBBs集合,childpt指向孩子節(jié)點,即:索引某路線對應(yīng)的各路段及路段上的移動對象的底層R樹指針;
[0063]所述表示路線上交叉節(jié)點鄰接關(guān)系的鄰接鏈表是由hash表和兩級單鏈表組成,hash表部分與MON-Tree中含義相同,第一級單鏈表表示路線上的各個節(jié)點,第二級節(jié)點表示某節(jié)點的出度;
[0064]步驟三:根據(jù)步驟二所構(gòu)建的RRN-Tree (Route based Road Networks)索引結(jié)構(gòu),進行基于道路網(wǎng)絡(luò)的CKNN查詢;
[0065]所述基于道路網(wǎng)絡(luò)的CKNN查詢包括KNN查詢初始集計算和CKNN查詢更新兩個階段:
[0066]首先,第一階段所述KNN查詢初始集計算是指:當查詢對象基于當前位置發(fā)出KNN查詢請求時,首先通過RRN-Tree索引結(jié)構(gòu)快速定位查詢對象所在路段,并將路段的兩個端點入隊列,并按照距離查詢點的距離從小到大排序;然后讀取距離查詢點最近的興趣點對象存入結(jié)果隊列中,當對象數(shù)少于K個時,沿著查詢對象前進方向的路段頂點繼續(xù)擴展,通過讀取路段頂點的鄰接鏈表確定各路段的連接關(guān)系,在有連接關(guān)系的路段上擴展查找最近鄰對象,直到找到K個對象為止;最后,為了提高連續(xù)查詢的查詢效率,以第K個對象距離查詢點的距離為距離上限,將所有與查詢點有連接關(guān)系的路段建立KNN查詢監(jiān)測區(qū),凡是落在該監(jiān)測區(qū)域內(nèi)的對象將成為候選的KNN結(jié)果;
[0067]第二階段進行CKNN查詢更新,所述CKNN查詢更新分為兩種情況:當查詢點對象位置不變,而興趣點對象移動時,利用查詢過程生成的KNN監(jiān)測區(qū)可降低查詢更新代價;當查詢點對象移動時,應(yīng)用上述第一階段的KNN查詢初始集計算的的查詢算法重新計算查詢請求。
[0068]【具體實施方式】二:下面結(jié)合圖1至圖12說明本實施方式,本實施方式為對實施方式一的進一步說明,本實施方式所述的步驟三中所述的KNN查詢初始集計算的具體實現(xiàn)過程為:
[0069]首先,建立優(yōu)先隊列PQueue保存查詢過程中的鄰接點,該優(yōu)先隊列PQueue中的元素按照距離查詢點的距離由小到大進行排序,并設(shè)優(yōu)先隊列PQueue的初始值為空;
[0070]建立保存查詢結(jié)果的隊列ResultList,該隊列ResultList的長度為K,隊列中元素按距離查詢點的距離升序排列,設(shè)隊列ResultList初始值為空;
[0071]當發(fā)出查詢請求時,設(shè)q表示查詢點,Oi表示要查詢的興趣點,其中,i是正整數(shù),通過步驟二所構(gòu)建的RRN-Tree索引結(jié)構(gòu)快速定位查詢點q所在的路徑F1及通過底層R樹定位查詢點所在的路段?,查找該路段上有一個興趣點Q1,將O1及其到q的距離保存在隊列 ResultList 中,此時,ResultList=Ko1, 1>};
[0072]因為路段?是單行路,將路段終點及其到查詢點的距離入隊列PQueue,即:PQueue= {<p2, 1>},查詢點與之間沒有興趣點,算法以P2為起點,通過RRN-Tree中的鄰接鏈表查找與P2相鄰接的路段μ」)'、P2P4、P1P,繼續(xù)擴展,將各路段的終點P:、P3、P4> P5及其到查詢點的距離入隊列并按距離升序排列,此時,
[0073]PQueue=Kp3, 4>,<ρ1; 5>,<ρ5, 6>,<ρ4, 13>},將隊列中距離值最小的元素P3 出隊列,該路段上沒有興趣點對象,則以P3為起點,繼續(xù)擴展至P6,此時,
[0074]PQueue=Kp1, 5>,<ρ5, 6>,<ρ6, 7>,<ρ4, 13>};
[0075]隊列中距離最小值的節(jié)點P1出隊列,在路段;^;上,包含對象O2,將其加入ResultList 隊列,ResultList=Ko1, 1>,<o2, 3>};
[0076]通過查詢RRN-Tree的鄰接鏈表可知,通過節(jié)點P1不再擴展,繼續(xù)對P5節(jié)點進行處
理,在路段f)]h上,包含對象O3,加入到ResultList隊列,同時查詢P5節(jié)點的鄰接鏈表,繼
續(xù)擴展,可得到結(jié)果=ResultList=Ko1, 1>,<o2, 3>,<o3, 4>}, PQueue=Kp6, 7>, <p4, 13>,<p5_7,17>}其中,p5_7表示經(jīng)過節(jié)點5到達節(jié)點7 ;類似的,通過擴展其余節(jié)點,得到結(jié)果為=ResuItList=Ko1, 1>,〈02,3>,〈03,4>,<o5, 8>},PQueue= {〈p5_7, 17>,<p4_7, 20>};
[0077]此時,已經(jīng)得到4個最近鄰對象,距離上界Dmax=S ;實際上,PQueue中的距離值>Dmax,繼續(xù)擴展的距離值必定不滿足要求,為便于后面的查詢更新,以Dmax為距離上限,查詢點q為根,計算KNN監(jiān)測區(qū)域,完成KNN查詢初始集計算。
[0078]【具體實施方式】三:下面結(jié)合圖1至圖12說明本實施方式,本實施方式為對實施方式一的進一步說明,本實施方式所述的步驟三中所述CKNN查詢更新分為兩種情況,當查詢點對象位置不變,而興趣點對象移動時,利用查詢過程生成的KNN監(jiān)測區(qū)可降低查詢更新代價的實現(xiàn)過程為:
[0079]當查詢點對象不動時,由于查詢對象的位置不變,上次查詢生成的KNN監(jiān)測區(qū)域也不變,根據(jù)興趣點對象更新后落在KNN監(jiān)測區(qū)域內(nèi)對象數(shù)量k'值的不同,可分為三種情況分別處理:
[0080]一、當落入KNN監(jiān)測區(qū)域的興趣點對象k' =k時,只需要通過RRN-Tree查找所有在KNN監(jiān)測區(qū)域內(nèi)的路段上的移動對象,將KNN監(jiān)測區(qū)域內(nèi)內(nèi)路段上的對象集作為結(jié)果;
[0081]二、當落入KNN監(jiān)測區(qū)的興趣點對象V義時,需對KNN監(jiān)測區(qū)內(nèi)的所有移動對象重新計算與查詢對象之間的網(wǎng)絡(luò)距離,并按照從小到大進行排序,取前k個對象,同時,更新knn_dist并調(diào)整knn監(jiān)測區(qū),以便下一次更新時繼續(xù)使用;
[0082]三、當落入KNN監(jiān)測區(qū)的興趣點對象V <k時,則需要對原KNN監(jiān)測區(qū)域繼續(xù)擴展,這里不是從查詢對象開始重新擴展,只需從KNN監(jiān)測區(qū)域的標記處開始擴展。
[0083]當查詢點對象移動時,應(yīng)用KNN查詢初始集計算的查詢算法重新計算查詢請求的具體實現(xiàn)過程為:[0084]當處理查詢對象和移動對象同時更新時的查詢請求,由于在單向行駛的道路網(wǎng)絡(luò)中,每個十字路口的轉(zhuǎn)向規(guī)則不同,當移動對象運動到十字路口時,路段之間的連通性發(fā)生改變,根據(jù)查詢對象的運動情況分為兩種,當查詢對象位置更新后仍然運動在原來的路段上,并未改變運動方向,可充分利用KNN監(jiān)測區(qū),提高計算速度;否則,按照KNN查詢初始集計算重新查詢。
[0085]具體實施例:本實施例從興趣點對象(POIs)數(shù)量、查詢請求數(shù)、興趣點對象分布密度、道路網(wǎng)規(guī)模等方面與IMA/GMA算法進行實驗對比,實驗測試數(shù)據(jù)集來自TIGER/Line]下載的加利福尼亞州洛杉肌市(Los Angeles, LA)和舊金山市(San Francisco, SF)的道路網(wǎng)數(shù)據(jù),利用Brinkhofftltl]設(shè)計的基于道路網(wǎng)絡(luò)的移動對象產(chǎn)生器生成興趣點對象集。下載的shp格式數(shù)據(jù)經(jīng)過轉(zhuǎn)換工具,生成node節(jié)點數(shù)據(jù)和edge道路邊數(shù)據(jù),作為移動對象產(chǎn)生器的輸入因子。為便于采用基于路徑的建模方式對道路網(wǎng)絡(luò)建模并建立索引,對兩個道路網(wǎng)絡(luò)數(shù)據(jù)集中同名的路段進行合并,形成一條完整路徑。實驗參數(shù)如表1所示。實驗系統(tǒng)采用Java語言編寫,運行環(huán)境為AMD2.3IGHz三核處理器,內(nèi)存2G,Windows XPSP3操作系統(tǒng)。每次測試只改變其中的一個參數(shù)值,其他參數(shù)采用默認值。
[0086]表1實驗參數(shù)
[0087]Tablelexperiment parameter
[0088]
【權(quán)利要求】
1.道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法,其特征在于:該查詢方法的實現(xiàn)步驟為: 步驟一:首先,分別定義道路網(wǎng)絡(luò)G、路線r、路段seg、交叉路口 j、移動對象0和KNN監(jiān)測區(qū); 所述道路網(wǎng)絡(luò)G為一個二元組G= (R,J),其中R是道路網(wǎng)中路線集合,每條路線包含若干路段,J是道路網(wǎng)中多條路線的交叉點集合; 所述路線r是指道路網(wǎng)絡(luò)中可獨立命名的一條完整路徑,定義為: r = (/-/W,/("/,( Jidj, Posj丨).其中,rid是路線標識;Ien表示路線長度,Ien e [O, I] ;(./+<、/w's_,))'-1表示路線上的 交叉路口及其在路線上相對路線起點的位置集合,Posj e [O, I]; 所述路段seg是指相鄰交叉路口之間的一段路線,定義為: seg= (sid, rid, ps, pe, dir); 其中,sid、rid分別表示路段及所在路線的標識;ps、pe表示路段的起始點和終點;dir e {-1, O, 1},當值為I時表示移動對象在該路段上允許從起點向終點方向運動,值為-1則表示從路段終點向起始點方向運動,O表示該路段允許雙向通行; 所述交叉路口 j是指多條路線的交叉節(jié)點,定義為^ = 其中jid為交叉路口的標識;(rid」,p0Sj)表示該交叉路口在第j條路線上的位置;adjList為交叉路口的鄰接列表,存儲該交叉路口處各路段的連接關(guān)系; 所述移動對象ο是指在道路網(wǎng)絡(luò)中,將移動對象ο建模為:o=(oid, x, y, rid, pos, dir);其中,oicUrid分別表示移動對象及其所在路線;x,y表示移動對象的經(jīng)緯度坐標;p0s表示移動對象距離所在路線起點的距離,pos e [0,1] ;dir表示移動對象的運行方向,值為I表示從所在路段起點向終點方向運行,值為-1則是從所在路段的終點向起點方向運行;所述KNN監(jiān)測區(qū)是指以查詢對象q為根,KNN_dist為距離上限,所有與q相連的路段構(gòu)成的查詢區(qū)域; 步驟二、構(gòu)建RRN-Tree索引結(jié)構(gòu),將鄰接鏈表技術(shù)引入索引結(jié)構(gòu)中,用鄰接鏈表來表示路線上交叉路口處的道路邊之間的連接關(guān)系,基于網(wǎng)絡(luò)邊擴展思想,計算查詢對象的K個最近鄰對象;同時在計算KNN查詢結(jié)果集時建立K近鄰監(jiān)測區(qū); 所述RRN-Tree索引結(jié)構(gòu)由三部分組成:對道路網(wǎng)絡(luò)的路線進行索引的頂層2DR-Tree、表示路線上交叉節(jié)點鄰接關(guān)系的鄰接鏈表和索引各個路線上移動對象的底層R-Tree ; 所述對道路網(wǎng)絡(luò)的路線進行索引的頂層2DR-Tree,其葉子節(jié)點是一個三元組:<mbb, polypt, treept> ; 其中,mbb表示路線對應(yīng)polyline的最小外包邊界;polypt指向路線的實際表示,treept指向底層R樹; 所述索引各個路線上移動對象的底層R-Tree,其葉子節(jié)點是一個二元組:〈mbb, childpt〉,其中mbb表示所有孩子節(jié)點的MBBs集合,childpt指向孩子節(jié)點,即:索引某路線對應(yīng)的各路段及路段上的移動對象的底層R樹指針; 所述表示路線上交叉節(jié)點鄰接關(guān)系的鄰接鏈表是由hash表和兩級單鏈表組成,hash表部分與MON-Tree中含義相同,第一級單鏈表表示路線上的各個節(jié)點,第二級節(jié)點表示某節(jié)點的出度; 步驟三:根據(jù)步驟二所構(gòu)建的RRN-Tree索引結(jié)構(gòu),進行基于道路網(wǎng)絡(luò)的CKNN查詢;所述基于道路網(wǎng)絡(luò)的CKNN查詢包括KNN查詢初始集計算和CKNN查詢更新兩個階段:首先,第一階段所述KNN查詢初始集計算是指:當查詢對象基于當前位置發(fā)出KNN查詢請求時,首先通過RRN-Tree索引結(jié)構(gòu)快速定位查詢對象所在路段,并將路段的兩個端點入隊列,并按照距離查詢點的距離從小到大排序;然后讀取距離查詢點最近的興趣點對象存入結(jié)果隊列中,當對象數(shù)少于K個時,沿著查詢對象前進方向的路段頂點繼續(xù)擴展,通過讀取路段頂點的鄰接鏈表確定各路段的連接關(guān)系,在有連接關(guān)系的路段上擴展查找最近鄰對象,直到找到K個對象為止;最后,為了提高連續(xù)查詢的查詢效率,以第K個對象距離查詢點的距離為距離上限,將所有與查詢點有連接關(guān)系的路段建立KNN查詢監(jiān)測區(qū),凡是落在該監(jiān)測區(qū)域內(nèi)的對象將成為候選的KNN結(jié)果; 第二階段進行CKNN查詢更新,所述CKNN查詢更新分為兩種情況:當查詢點對象位置不變,而興趣點對象移動時,利用查詢過程生成的KNN監(jiān)測區(qū)可降低查詢更新代價;當查詢點對象移動時,應(yīng)用上述的第一階段的KNN查詢初始集計算的查詢算法重新計算查詢請求。
2.根據(jù)權(quán)利要求1 所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法,其特征在于步驟三中所述KNN查詢初始集計算的具體實現(xiàn)過程為: 首先,建立優(yōu)先隊列PQueue保存查詢過程中的鄰接點,該優(yōu)先隊列PQueue中的元素按照距離查詢點的距離由小到大進行排序,并設(shè)優(yōu)先隊列PQueue的初始值為空; 建立保存查詢結(jié)果的隊列ResultList,該隊列ResultList的長度為K,隊列中元素按距離查詢點的距離升序排列,設(shè)隊列ResultList初始值為空; 當發(fā)出查詢請求時,設(shè)q表示查詢點,Oi表示要查詢的興趣點,其中,i是正整數(shù),通過步驟二所構(gòu)建的RRN-Tree索引結(jié)構(gòu)快速定位查詢點q所在的路徑F1及通過底層R樹定位查詢點所在的路段? ,查找該路段上有一個興趣點O1,將O1及其到q的距離保存在隊列ResultList 中,此時,ResultList=Ko1, 1>}; 因為路段?是單行路,將路段終點及其到查詢點的距離入隊列PQueue,即:PQueue= {<p2, 1>},查詢點與之間沒有興趣點,算法以P2為起點,通過RRN-Tree中的鄰接鏈表查找與P2相鄰接的路段i)])?、、P2P4、P:P'繼續(xù)擴展,將各路段的終點Pp P4> P5及其到查詢點的距離入隊列并按距離升序排列,此時, PQueue=Kp3, 4>,<p” 5>,<p5, 6>,<p4, 13>},將隊列中距離值最小的元素P3出隊列,該路段上沒有興趣點對象,則以P3為起點,繼續(xù)擴展至P6,此時,
PQueue=Kp1, 5>,<p5, 6>,<p6, 7>,<p4, 13>}; 隊列中距離最小值的節(jié)點P1出隊列,在路段上,包含對象O2,將其加入ResultList 隊列,ResultList=Ko1, 1>,<o2, 3>};通過查詢RRN-Tree的鄰接鏈表可知,通過節(jié)點P1不再擴展,繼續(xù)對P5節(jié)點進行處理,在路段/LA上,包含對象O3,加入到ResultList隊列,同時查詢P5節(jié)點的鄰接鏈表,繼續(xù)擴展,可得到結(jié)果=ResultList=Ko1, 1>,<o2, 3>,<o3, 4>}, PQueue=Kp6, 7>, <p4, 13>,<p5_7, 17>}其中,p5-7表示經(jīng)過節(jié)點5到達節(jié)點7 ;類似的,通過擴展其余節(jié)點,得到結(jié)果為=ResultLiSt=Ko1, 1>,〈02,3>,〈03,4>,〈05,8>},PQueue= {〈p5_7, 17>,<p4_7, 20>}; 此時,已經(jīng)得到4個最近鄰對象,距離上界Dmax=S ;實際上,PQueue中的距離值>Dmax,繼續(xù)擴展的距離值必定不滿足要求,為便于后面的查詢更新,以Dmax為距離上限,查詢點q為根,計算KNN監(jiān)測區(qū)域,完成KNN查詢初始集計算。
3.根據(jù)權(quán)利要求1所述的道路網(wǎng)絡(luò)中基于RRN-Tree的移動對象CKNN查詢方法,其特征在于步驟三所述CKNN查詢更新分為兩種情況,當查詢點對象位置不變,而興趣點對象移動時,利用查詢過程生成的KNN監(jiān)測區(qū)可降低查詢更新代價的實現(xiàn)過程為: 當查詢點對象不動時,由于查詢對象的位置不變,上次查詢生成的KNN監(jiān)測區(qū)域也不變,根據(jù)興趣點對象更新后落在KNN監(jiān)測區(qū)域內(nèi)對象數(shù)量k'值的不同,可分為三種情況分別處理: 一、當落入KNN監(jiān)測區(qū)域的興趣點對象k'=k時,只需要通過RRN-Tree查找所有在KNN監(jiān)測區(qū)域內(nèi)的路段上的移動對象,將KNN監(jiān)測區(qū)域內(nèi)內(nèi)路段上的對象集作為結(jié)果; 二、當落入KNN監(jiān)測區(qū)的興趣點對象V>k時,需對KNN監(jiān)測區(qū)內(nèi)的所有移動對象重新計算與查詢對象之間的網(wǎng)絡(luò)距離,并按照從小到大進行排序,取前k個對象,同時,更新knn_dist并調(diào)整knn監(jiān)測區(qū),以便下一次更新時繼續(xù)使用; 三、當落入KNN監(jiān)測區(qū)的興 趣點對象k'<k時,則需要對原KNN監(jiān)測區(qū)域繼續(xù)擴展,這里只需從KNN監(jiān)測區(qū)域的標記處開始擴展; 當查詢點對象移動時,應(yīng)用KNN查詢初始集計算的查詢算法重新計算查詢請求的具體實現(xiàn)過程為: 當處理查詢對象和移動對象同時更新時的查詢請求,由于在單向行駛的道路網(wǎng)絡(luò)中,每個十字路口的轉(zhuǎn)向規(guī)則不同,當移動對象運動到十字路口時,路段之間的連通性發(fā)生改變,根據(jù)查詢對象的運動情況分為兩種,當查詢對象位置更新后仍然運動在原來的路段上,并未改變運動方向,可充分利用KNN監(jiān)測區(qū),提高計算速度;否則,按照KNN查詢初始集計算重新查詢。
【文檔編號】G06F17/30GK103544291SQ201310520592
【公開日】2014年1月29日 申請日期:2013年10月29日 優(yōu)先權(quán)日:2013年10月29日
【發(fā)明者】孫海龍, 王春艷, 于鳴, 劉丹 申請人:東北林業(yè)大學