本發(fā)明是移動對象數(shù)據(jù)庫領域,用于快速查詢移動對象歷史軌跡的距離查詢技術。
二、
背景技術:
近年來,隨著智能移動設備的普及,無線通訊技術的不斷發(fā)展,定位技術越來越精確和方便。移動對象的位置信息的采集、管理與查詢,促進了各種基于移動對象數(shù)據(jù)庫的應用的研究,如地理信息系統(tǒng)、交通管理、城市規(guī)劃和大量基于定位的服務(LBS)。通過研究移動對的軌跡,可以發(fā)掘移動對象的行為模式,可以研究移動對象的社會關系,通過這些研究,可以為決策提供參考,例如車輛的行為模式,可以為交通管理提供參考。
查詢操作作為數(shù)據(jù)庫的基本操作,它的效率的高低決定著這個數(shù)據(jù)庫是否能夠提供高效的服務。因此,有一個高效的查詢操作,能夠返回用戶的查詢結(jié)果,是至關重要的。如何處理這種查詢請求,最簡單直接的方法是計算數(shù)據(jù)庫中每個移動對象的軌跡與查詢軌跡,在查詢時間區(qū)間內(nèi),每個時刻所在位置之間的歐式距離。然后將每個移動對象與查詢移動對象軌跡的距離在查詢范圍[d1,d2]內(nèi)的點組成的軌跡作為查詢結(jié)果返回。這種方法,計算量大,需要計算每條移動對象軌跡與查詢軌跡之間的距離,其計算時間復雜度隨著移動對象的數(shù)量的增加呈線性遞增。所以必須要有一個索引機制來提高數(shù)據(jù)的訪問效率,增大過濾過程的精度,減少軌跡數(shù)據(jù)的訪問和軌跡距離的計算。
三、
技術實現(xiàn)要素:
【發(fā)明目的】
為了提高查詢的效率,本發(fā)明提供了包含對移動對象軌跡的軌跡分割預處理和建立軌跡段的3D R-Tree索引的距離查詢算法,以解決查詢算法的高效問題,增加了查詢效率。
【技術方案】
本發(fā)明所述的快速連續(xù)歷史軌跡距離查詢技術是通過對移動對象軌跡建立索引機制,在索引的基礎上,通過過濾-精細計算階段來實現(xiàn)移動對象歷史軌跡的距離查詢?;谝苿訉ο笏饕倪^濾算法,可以提高對結(jié)果軌跡集合的過濾精度,減少候選軌跡的集合,從而減少精確計算階段磁盤I/O次數(shù)和CPU的計算量。主要步驟如下:
(1)數(shù)據(jù)預處理;
本發(fā)明處理移動對象軌跡,所有移動對象保存在數(shù)據(jù)庫的表中。每一條對象記錄有一個軌跡數(shù)據(jù),保存了該對象的所有歷史軌跡。軌跡由軌跡單元組成,每個軌跡單元在平面和時間的三維空間里表示一個線段,對象的軌跡由一系列前后相連的軌跡單元構(gòu)成,在三維空間中形成一條折線,如圖1。將軌跡段分割成較小的軌跡段,用于提高軌跡過濾的精度。計算每個軌跡段的最小邊框盒子(Minimum Bounding Box),即最小包含軌跡的空間盒子。
(2)建立移動對象軌跡移動對象索引3D R-Tree;
完成軌跡的預處理之后,以每個軌跡段和軌跡段的最小邊框盒子為R-Tree葉子節(jié)點,插入到3D R-Tree中,建立所有對象軌跡的索引。
(3)基于移動對象軌跡索引的距離查詢;
基于移動對象軌跡索引的距離查詢包括兩個步驟:過濾階段和精細計算階段。在過濾階段,通過遍歷3D R-Tree,過濾不可能為結(jié)果的軌跡,留下較小的軌跡集合,用于計算軌跡之間的距離。在精細計算階段,計算軌跡在時間上的距離函數(shù),即計算時間與距離的映射,求得距離在查詢范圍內(nèi)的時間區(qū)間,在這個時間區(qū)間內(nèi)的軌跡,即為查詢的結(jié)果。
【有益效果】
本發(fā)明所述快速連續(xù)歷史軌跡距離查詢技術通過對軌跡數(shù)據(jù)的預處理,建立移動對象索引3D R-Tree,在所建立的3D R-Tree索引上,實現(xiàn)對連續(xù)歷史軌跡的距離查詢。下面通過測試數(shù)據(jù)來說明本發(fā)明的有效性。實驗環(huán)境為:Intel(R)、Xeon(R)、CPU為E5-2650v2、主頻260GHz、內(nèi)存1GB、Linux環(huán)境Ubuntu14.04、C++語言、可擴充移動對象數(shù)據(jù)庫SECONDO,實驗數(shù)據(jù)柏林地鐵軌跡數(shù)據(jù)。
表1
表2
表1顯示了數(shù)據(jù)集的信息,表2顯示了本發(fā)明在距離查詢操作時與普通距離查詢算法在不同查詢范圍參數(shù)上的時間比較,分別是表明本算法的性能有較大的提高。
四、附圖說明
圖1移動對象軌跡在空間的表示圖
圖2連續(xù)歷史軌跡距離查詢示意圖
圖3軌跡分割
圖4 3D R-Tree索引移動對象軌跡
圖5過濾移動對象軌跡的三種情況
五、具體實施方式
下面結(jié)合附圖對本發(fā)明進一步說明。
本發(fā)明所述的快速連續(xù)歷史軌跡距離查詢技術是通過將移動對象歷史軌跡進行預處理,以圖3的結(jié)構(gòu)存儲在數(shù)據(jù)庫中。通過對移動對象歷史軌跡建立3D R-Tree索引,提高移動對象軌跡數(shù)據(jù)的訪問速度和過濾精度。主要步驟如下:
(1)移動對象軌跡數(shù)據(jù)預處理;
本發(fā)明將移動對象(例如出租車、人、地鐵等)的運動GPS位置作為輸入,保存到可擴充數(shù)據(jù)庫系統(tǒng)SECONDO中。每一條對象記錄有一個軌跡數(shù)據(jù),保存了該對象的所有歷史軌跡。軌跡由軌跡單元組成,每個軌跡單元在平面和時間的三維空間里表示一個線段,對象的軌跡由一系列前后相連的軌跡單元構(gòu)成,在三維空間中形成一條折線,如圖1所示。
通過對移動對象的軌跡分割,得到較小的軌跡段。軌跡段分割的大小根據(jù)數(shù)據(jù)范圍大小設定。移動對象軌跡分割較小,會增加軌跡段的數(shù)量,降低查詢效率;而分割過大的話,過濾的精度降低,增加軌跡距離的計算時間,降低查詢性能。
在移動對象軌跡分割之后,以軌跡段的時間和空間范圍,生成一個最小邊框盒子,用來最小表示軌跡的時空范圍。
在對移動對象軌跡數(shù)據(jù)預處理后,得到所有對象和軌跡的數(shù)據(jù)表。表的每個元組由三個屬性組成,包括TID、OID、Trip和MBR,分別存儲移動對象所在元組位置、移動對象ID、移動對象的軌跡以及移動對象軌跡在時間和空間所組成的三維空間中的最小邊框盒子,如圖4所示。表中Trip對應分割后的軌跡段,移動對象的軌跡由多個元組構(gòu)成,它們的軌跡在時間和空間上是相連的。
(2)建立3D R-Tree索引;
以對象軌跡表中的TID和MBR組成3D R-Tree的葉子節(jié)點,插入到3D R-Tree的root節(jié)點中,完成對移動對象軌跡的索引的建立。3D R-Tree與移動對象軌跡表的關系如圖4所示。
(3)快速連續(xù)歷史軌跡距離查詢;
快速連續(xù)歷史軌跡距離查詢包括兩個步驟:1)過濾,2)精細計算。過濾階段將過濾掉那些不可能為結(jié)果的移動對象軌跡,在精細計算階段對留下的候選軌跡做軌跡距離計算,得到查詢結(jié)果。
1)過濾:查找候選移動對象軌跡
在查找候選移動對象軌跡時,最基本的思想是去掉完全不可能的移動對象軌跡。使用最大距離-最小距離的過濾方法用于過濾這種完全不可能的移動對象軌跡,從而減少計算量。通過比較兩個軌跡在相同時間范圍內(nèi)的空間距離,可以判斷軌跡是否符合查詢的條件,從而去掉其中不符合查詢條件的軌跡,對剩下的軌跡再做精細的計算。在軌跡的空間距離的比較中,有三種情況,如圖5所示:
情況一:如圖5a和如圖5b所示,o1軌跡的MBR到查詢軌跡mq在[t1,t2]上的軌跡的MBR的最小距離大于查詢距離范圍[d1,d2],因此o1的軌跡不可能是查詢結(jié)果,將o1的軌跡排除在結(jié)果之外。o2軌跡的MBR到查詢軌跡mq在[t1,t2]上的軌跡的MBR的最大距離小于查詢距離范圍[d1,d2],因此o2的軌跡不可能是查詢結(jié)果,將o2的軌跡排除在結(jié)果之外。
情況二:圖5c所示,o3軌跡的MBR到查詢軌跡mq在[t1,t2]上的軌跡的MBR的最小距離和最大距離在查詢距離范圍[d1,d2]內(nèi),因此o3的軌跡一定是查詢結(jié)果,將o3的軌跡添加在結(jié)果集合中。
情況三:除了情況一和情況二之外的情況的移動對象,都為候選對象,需要進一步精細計算。
在過濾時,從3D R樹的根節(jié)點開始,遍歷所有的子節(jié)點,如果子節(jié)點的時間維度的時間間隔與查詢的對象的時間間隔有重疊,則判斷該子節(jié)點的空間分布的最小邊框矩形(MBR)與查詢軌跡的最小邊框矩形之間的最大距離和最小距離,如果這個子節(jié)點中中不可能包含有查詢結(jié)果的軌跡,則不再對該節(jié)點繼續(xù)深入搜索,否則繼續(xù)搜索該子節(jié)點的子節(jié)點,直到搜索到葉子節(jié)點。對于葉子節(jié)點的處理與內(nèi)部節(jié)點相似,將不可能是查詢結(jié)果的軌跡拋棄,將其他的軌跡加入到候選集合中,等待精確計算,具體算法如下所示:
2)精細計算:對過濾后的候選軌跡計算距離
過濾階段會過濾掉一部分不可能是查詢結(jié)果的移動對象軌跡。對剩下的候選軌跡,通過計算兩條軌跡在每個時刻的距離,將符合查詢條件的移動對象軌跡作為結(jié)果輸出。有以下主要步驟:
1.移動軌跡的動態(tài)時間規(guī)整;
2.計算相同時間間隔內(nèi)移動對象軌跡的最小“水平”距離;
3.獲取在查詢條件[d1,d2]內(nèi)的軌跡;
移動軌跡的動態(tài)時間規(guī)整,將兩條軌跡分割為同步時間的軌跡片段,在這個軌跡片段中,兩個軌跡的開始時間和結(jié)束時間相同。規(guī)整過后的軌跡,計算兩個相同時間間隔的軌跡片段的“水平”距離,即兩條軌跡的在時間上的距離映射。通過掃描軌跡片段的“水平”距離,得到在查詢范圍[d1,d2]內(nèi)的軌跡片段。這些軌跡片段的集合,即為查詢的結(jié)果。
精細計算算法如下所示:
其中,計算兩個對象軌跡的距離的算法如下:
算法Refine返回的Result即為查詢的結(jié)果集合。