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