專利名稱::N維聚類排序記錄樹空間索引方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及地學(xué)信息處理
技術(shù)領(lǐng)域:
,特別是涉及一種包括數(shù)據(jù)結(jié)構(gòu)、三維圖形學(xué)和空間數(shù)據(jù)庫相關(guān)算法的N維聚類排序記錄樹(CSR-Tree)空間索引方法。
背景技術(shù):
:最初的地理信息系統(tǒng)的數(shù)據(jù)管理都是基于文件管理方式的,在數(shù)據(jù)很小的時(shí)候,空間數(shù)據(jù)可以一次性調(diào)入內(nèi)存進(jìn)行處理;但隨著空間數(shù)據(jù)量的增大導(dǎo)致在數(shù)據(jù)處理過程中必須不斷進(jìn)行內(nèi)存與外存的信息交換訪問,這使得在沒有索引的情況下進(jìn)行數(shù)據(jù)査詢操作變得非常低效。此外,隨著數(shù)據(jù)量的增大,空間數(shù)據(jù)的管理方式也逐漸從文件管理方式向數(shù)據(jù)庫管理方式發(fā)展,但傳統(tǒng)的關(guān)系數(shù)據(jù)庫管理的大部分是屬性數(shù)據(jù),傳統(tǒng)的數(shù)據(jù)庫索引技術(shù)在空間數(shù)據(jù)査詢操作上并不適用,這也是迫使空間索引發(fā)展起來的重要原因之一。在過去的近30年中,眾多的學(xué)者提出了很多空間索引構(gòu)建方法,其中R-Tree(R樹)是現(xiàn)在使用最廣泛的一種空間索引結(jié)構(gòu)。R-Tree是Guttraan于i984年提出的最早支持?jǐn)U展對象存取方法之一,目前許多商用空間數(shù)據(jù)庫系統(tǒng)均提供對R-Tree的支持。在RTree索引的創(chuàng)建過程中,首先從空樹開始,將對象逐個(gè)插入,若插入過程中節(jié)點(diǎn)沒有空間,則需要按照一定的規(guī)則分裂葉子節(jié)點(diǎn),而且要保持R樹的動態(tài)平衡,使所有的葉節(jié)點(diǎn)都在同一層上。由R-Tree的構(gòu)造方法可知,三維空間對象在建立的過程中并未進(jìn)行分割,因此索引樹屮的節(jié)點(diǎn)之間可能存在交疊的現(xiàn)象,這種現(xiàn)象目前在二維空間中出現(xiàn)的已經(jīng)比較頻繁,在三維空間中則出現(xiàn)的更加頻繁;隨著對象的插入和刪除操作的執(zhí)行,索引的性能會急劇卜'降。由于R-Tree中允許節(jié)點(diǎn)的最小邊界矩形(MBR)相互交疊,使得一個(gè)對象有可能被存放在多個(gè)節(jié)點(diǎn)中,當(dāng)搜索該對象時(shí),可能訪問多個(gè)節(jié)點(diǎn),也就意味著搜索操作的最差性能是無法估量的。實(shí)際上在三維空間中三維空間對象的交疊情況明顯增多,因此,在三維空間中有必要對R-Tree的構(gòu)造方法加以改進(jìn)。由于R-Tree索引中節(jié)點(diǎn)的大小和交疊對索引性能有很大影響。節(jié)點(diǎn)的MBR越接近正方形,并且節(jié)點(diǎn)的交疊面積越小,對提高索引的性能效果越明顯。從這點(diǎn)入手,1994年Kamel等人提出了Packed-R-Tree,該方法把數(shù)據(jù)看作是相對靜態(tài)的,空間對象的映射不需要頻繁插入和刪除,并叵在索引構(gòu)造之前數(shù)據(jù)對象基本己知,在構(gòu)建索引之前對數(shù)據(jù)進(jìn)行預(yù)處理,減小覆蓋和交疊的面積,構(gòu)建具有高空間存儲利用率的索引結(jié)構(gòu),此后的插入和刪除等操作都按照R-TYee的算法執(zhí)行。其算法的主要思想是,對空間對象進(jìn)行排序,然后按照排序后的結(jié)果建立索引結(jié)構(gòu),R-Tree中空間對象用MBR來表示,每個(gè)MBR都有四個(gè)角點(diǎn),按角點(diǎn)的x坐標(biāo)對空間對象進(jìn)行排序,依次選擇B(節(jié)點(diǎn)中最大的空間對象個(gè)數(shù))個(gè)節(jié)點(diǎn)建立節(jié)點(diǎn),然后根據(jù)有序的節(jié)點(diǎn)建立全部R樹象引,建立過程中從索引的葉節(jié)點(diǎn)開始,自下而上,一層一層地建立,構(gòu)建了一棵類似于完全二叉樹的結(jié)構(gòu),除了最后一個(gè)節(jié)點(diǎn)之外,所有的節(jié)點(diǎn)都是滿的,從而得到了近似100%的空間利用率,同時(shí)也降低了R-Tree的高度,提高了樹的查詢效率。但此方法建立的索引僅僅考慮到某一維的空間對象排序,因此節(jié)點(diǎn)的MBR都是長方形的,矩形的面積和周長也較大,索引的性能也受到影響。1995年Kamel等人又提出了HilbertR-Tree(HilbertR樹)來改進(jìn)R-Tree的構(gòu)造方法。該方法分別對空間對象的邊界矩形角點(diǎn)及其中心點(diǎn)按照Hilbert曲線進(jìn)行填充。對空間數(shù)據(jù)對象進(jìn)行一維升序排列,根據(jù)排序的結(jié)果生成葉子節(jié)點(diǎn),再對葉節(jié)點(diǎn)進(jìn)行排序,根據(jù)排序的結(jié)果生成中間節(jié)點(diǎn)。然后將每一層的中間節(jié)點(diǎn)排序生成上一層的節(jié)點(diǎn),逐層向上遞歸生成整個(gè)索引,雖然此方法的空間利用率和對象的聚集性有一定的改進(jìn),但對于對象的大小并未考慮,物理上相鄰對象的存儲位里也不一定能相鄰。為此,本發(fā)明提出了基于聚類排序的R-Tree靜態(tài)構(gòu)建方法。該方法的主要思想是通過三維空間對象的距離相似性聚類分析,將N維空間上相近的空間對象盡量放置在同一個(gè)節(jié)點(diǎn)下,并對節(jié)點(diǎn)進(jìn)行N維掃描排序,以盡量減小節(jié)點(diǎn)的MBR的大小,盡量減少節(jié)點(diǎn)之間的MBR交疊情況出現(xiàn),以此來提高R-Tree的檢索效率。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是為解決已有R-Tree系列索引方法中在多維空間中由于空間節(jié)點(diǎn)交疊而導(dǎo)致的査詢效率降低的問題,提供一種N維聚類排序記錄樹空間索引方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是本發(fā)明提供的是一種基于聚類分析和N維向量掃描排序的N維聚類排序記錄樹空間索引方法,具體是先通過N維空間對象的距離相似性聚類分析,將N維空間上相近的空間對象盡量放置在同一個(gè)節(jié)點(diǎn)下;然后對聚類得到的每類空間對象的邊界矩形中心進(jìn)行(V"V2,,VN}方向上的排序;最后將排序的數(shù)據(jù)作為葉節(jié)點(diǎn),從下之上進(jìn)行CSR-Tree的遞歸構(gòu)造。本發(fā)明提供的上述N維聚類排序記錄樹空間索引方法,其在構(gòu)建樹、查找或插入算法中執(zhí)行R-Tree算法中的用途。本發(fā)明與已有R-Tree系列索引方法相比具有以下的主要優(yōu)點(diǎn)其-.支持任意維空間對象的空間索引構(gòu)建與査詢,能對仟意維空間對象排序,可同時(shí)適用于二維空間和三維空間,實(shí)現(xiàn)簡單且效率很高。其二.將聚類分析與N維掃描排序用于R-Tree構(gòu)建方法,由于先聚類再排序,使得分布在N維空間中的距離相近的空間對象在CSR-Tree索引中的節(jié)點(diǎn)也相近的概率增大;有效地減少了CSR-Tree節(jié)點(diǎn)之間的最小邊界矩形(MBR)交疊情況出現(xiàn),減小了CSR-Tree節(jié)點(diǎn)最小邊界矩形(MBR)的大小,提高CSR-Tree索引的檢索效率。其三.通用性強(qiáng)能在各種空間數(shù)據(jù)庫管理軟件、三維建模軟件、GIS(地理信息系統(tǒng))軟件等諸多專業(yè)軟件中推廣使用。圖1是本發(fā)明的R-Tree與CSR-Tree的每千次査詢時(shí)間與空間個(gè)數(shù)關(guān)系圖。具體實(shí)施例方式本發(fā)明提供的N維聚類排序記錄樹空間索引方法,具體是先通過N維空間對象的距離相似性聚類分析,將N維空間上相近的空間對象盡量放置在同一個(gè)節(jié)點(diǎn)下;然后對聚類得到的每類空間對象的邊界矩形中心進(jìn)行(V,,V2,…,VJ方向上的排序;最后將排序的數(shù)據(jù)作為葉節(jié)點(diǎn),從下之上進(jìn)行CSR-Tree的遞歸構(gòu)造;這樣以盡量減小節(jié)點(diǎn)的MBR的大小,盡量減少節(jié)點(diǎn)之間的MBR交疊情況出現(xiàn),以此來提高CSR-Tree索引的檢索效率。N維是指至少二維。在進(jìn)行聚類分析時(shí),先輸入N維空間對象或N維空間對象最小邊界矩形的空間數(shù)據(jù),然后對輸入空間數(shù)據(jù)進(jìn)行聚類分析,得到K類空間對象集合。K》2。在進(jìn)行排序時(shí),先對K類空間對象集合的中心點(diǎn)進(jìn)行掃描排序,然后分別對每類集合中的空間對象分別掃描排序。在進(jìn)行遞推構(gòu)建CSR-Tree時(shí),將聚類排序后的K類空間對象集合作為樹的葉子節(jié)點(diǎn)。下面對本發(fā)明作進(jìn)一步說明,但不限定本發(fā)明。本發(fā)明提供的方法包括三個(gè)大的主要步驟CR1、CR2和CR3。CR1:對空間對象的邊界矩形進(jìn)行聚類分析,為說明方便假定為k-means,在實(shí)際實(shí)現(xiàn)過程中可以選擇不同的聚類分析方法;CR2:對聚類得到的每類空間對象邊界矩形分別進(jìn)行(Vi,V2,…,V、]方向上的排序;CR3:將排序的數(shù)據(jù)作為葉節(jié)點(diǎn),從下之上進(jìn)行R-Tree的遞歸構(gòu)造;為具體算法描述的方便,本文首先給出基于0++定義的CSR-Tree:template〈class0BJTYPE,classELEMTYPE'intNUMDIMS,c丄assELEMTYPEREAL=ELEMTYPE,classNodeVisitorType二RTreeNodeVisitor〈OBJTYPE〉,intTMAXN0DES=8,intTMINN0DES=TMAXN0DES/2〉classCSRTree:RTree〈0BJTYPE'ELEM丁YPE'NUMDIMS,ELEMTYPEREAL,NodeV丄sitorType,在CSR-T化e的定義中,我們用一個(gè)Itera代表一個(gè)空間對象記錄信息,它是一個(gè)pair對象,其0BJTYPE模板類型代表指向空間對象的指針,BoundRect〈ELEMTYPE,NUMDIMS〉代表其TMAXN0DES,TMINN0DES〉Base;〃空間對象和該對象的邊界矩形,稱為空間實(shí)體項(xiàng)typedefstd::pair〈0BJTYPE,BoundRect〈ELEMTYPE,NUMDIMS〉〉Item;〃空間實(shí)體項(xiàng)集合,表示聚類后產(chǎn)生的同類空間項(xiàng)集合typedefstd::vector<Item>Items;〃聚類后產(chǎn)生的結(jié)果,vector的元素個(gè)數(shù)就是聚類分類種數(shù)typedefstd::vector<Itcms>ItemsVector;MBR:我們用MBR的中心MBRC代表空間對象的中心。設(shè)有n個(gè)Item對象需要分成k類,K-Means算法的思路是首先隨機(jī)地選擇k個(gè)Ttem對象代表k個(gè)類,每個(gè)Item對象作為一個(gè)類的原型,根據(jù)距離原型最近的原則將其它對象分配到各個(gè)類中。在完成首次對象分配之后,以每個(gè)類所有對象的平均值作為該類的原型,迭代進(jìn)行對象的再分配,直到?jīng)]有變化為止,從而得到最終的k個(gè)類。聚類算法描述如下KM1:首先隨機(jī)地選擇k個(gè)Item對象,每個(gè)Item對象的MBRC作為一個(gè)類的"中心",分別代表將分成的k個(gè)類;KM2:根據(jù)距離"中心"最近原則,尋找與各Item對象最為相似的類,將對象分配到各個(gè)相應(yīng)的類中;KM3:在完成對象分配之后,針對每個(gè)類,計(jì)算其所有對象的平均值,作為該類新"中心";KM4:根據(jù)距離"中心"最近原則,重新進(jìn)行所有Iteni對象到各個(gè)相應(yīng)類的分配;KM5:返回歩驟KM3,直到?jīng)]有變化為止;KM6:返回一個(gè)ItemsVec.tor={Items1,Items2,…,Items1,…,Items"對象。上述KM1至KM6實(shí)現(xiàn)對空間對象距離相似性的K-Means聚類,對應(yīng)整個(gè)算法的CR1步算法。CR2子算法是對CRl得到的結(jié)果ItemsVector:{Items1,Items2,…,Items1,…,Itemsk]"中的每個(gè)Items1-{Item1,Item2,…,Item、…,Item"}分別進(jìn)行(V,,V2,…,V^方向排序,為表述方便,我們令(V',V2,…,VnH(X,Y,Z},子算法描述如下XS1:讓it,=Items1,確認(rèn)it為非空,并含有n個(gè)Item對象;XS2:創(chuàng)建一條垂直于YOZ平面的掃描線,從x負(fù)向至正向方向?qū)t中的每個(gè)Item對象的MBRC進(jìn)行掃描,根據(jù)MBRC的y坐標(biāo)值對空間對象進(jìn)行排序,并將結(jié)果存放到集合X-SET;XS3:創(chuàng)建一條垂直于XOZ平面的掃描線,從y負(fù)向至正向方向?qū)中的每個(gè)Tt.em對象的MBRC進(jìn)行掃描,根據(jù)MBRC的y坐標(biāo)值對空間對象進(jìn)行排序,并將結(jié)果存放到集合Y-SET;XS4:創(chuàng)建一條垂直于XOY平面的掃描線,從z負(fù)向至正向方向?qū)t中的每個(gè)Item對象的MBRC進(jìn)行掃描,根據(jù)MBRC的z坐標(biāo)值對空間對象進(jìn)行排序,并將結(jié)果存放到集合Z-SET;XS5:計(jì)算X-SET中的兩兩相鄰對象之間的x距離的累加和,記為x-sum;XS6:計(jì)算Y-SET中的兩兩相鄰對象之間的y距離的累加和,記為y-sum;XS7:il算Z-SET中的兩兩相鄰對象之間的z距離的累加和,記為z-sum;XS8:從x-sum,y-sum,z-sum中選取最小值,并令其對應(yīng)的Items為S;例如,若x-sum最小,則S二X-SET;XS9:清空it,并將令it=S;XS10:讓it直向ItemsVector中的卜一一項(xiàng),重復(fù)XS1至XS9,直到完成1temsVector所有的Items對象排序;XS11:設(shè)(P',P2,…,pi,…Pl對應(yīng)于{Items1,Items'2,…,Ttemsi,…,Uemsk)的MBRC,利用XS5至XS8中的比較排序法,對{Items1,Items2,…,Items1,…,Items3進(jìn)行升序排序;以使Items'.與Items"1之間盡量靠近;XS12:返回排序修改后的ItemsVector;XSl至XS12的CR2算法通過計(jì)算距離差的累加值,可以綜合考慮節(jié)點(diǎn)的相鄰關(guān)系,且從三維的角度進(jìn)行比較,能減少了節(jié)點(diǎn)之間的交疊面積,同時(shí)節(jié)點(diǎn)的覆蓋面積也相應(yīng)減少。CSR-Tree中的CR3算法是對CR2處理后的節(jié)點(diǎn)進(jìn)行構(gòu)樹,設(shè)R-Tree的節(jié)點(diǎn)分支數(shù)最大值為M,其主要步驟如下ST1:選取Items',i=l;設(shè)Items1中含有n個(gè)Item對象,通過這個(gè)n個(gè)對Item對象構(gòu)造n個(gè)LeafNode;ST2:從n個(gè)LeafNode對象中依次選取M個(gè)構(gòu)造其上級ChildNode,設(shè)總共形成的ChildNode個(gè)數(shù)為csize,則如果n能整除M,則csize^/M;否則csize二(n+M)/M;ST3:對于構(gòu)造第csize個(gè)ChildNode時(shí),如果剩下LeafNode個(gè)數(shù)為t<m個(gè)時(shí),應(yīng)該構(gòu)造m-t個(gè)空的LeafNode,以滿足R-Tree規(guī)則;ST4:讓i=2到k,重復(fù)ST1至ST3;則得到一個(gè)ChildNode數(shù)組CNS;ST5:讓CNS按照Packed-R-Tree靜態(tài)構(gòu)樹規(guī)則進(jìn)行剩下的步驟。ST6:返回R-Tree的根節(jié)點(diǎn)。由此完成了CSR-Tree的構(gòu)建算法,其他査找、更新算法直接從R-Tree繼承;為追求更高效的更新操作,可以從IT-Tree中繼承插入方法。CSR-Tree算法通過一次聚類兩次排序,使得空間位置相鄰的空間對象在物理存儲位置盡量相近,減小了節(jié)點(diǎn)的覆蓋面積,降低了節(jié)點(diǎn)的交疊概率,提升了R-Tree查詢效率。本發(fā)明CSR-Tree與已有R-Tree索引查找的性能測試與分析為定量化對比R-Tree與CSR-Tree的空間索引査詢效率,本發(fā)明編寫了測試程序,表l是測試數(shù)據(jù)及其運(yùn)行結(jié)果。表1中的第一列數(shù)據(jù)為實(shí)際測試的空間對象個(gè)數(shù),每次測試的空間對象個(gè)數(shù)遞增100,第二列是R-Tree在對應(yīng)空間數(shù)據(jù)下進(jìn)行1000次查詢所花費(fèi)的時(shí)間,單位為秒;第三列是CSR-Tree在對應(yīng)空間數(shù)據(jù)下進(jìn)行1000次査詢所花費(fèi)的時(shí)間,單位為秒。上述測試數(shù)據(jù)為隨機(jī)生成的測試數(shù)據(jù),運(yùn)行PC配置為CPU頻率為2.0G,內(nèi)存大小為1.0G。為了更加直觀的發(fā)現(xiàn)這兩者之間的效率關(guān)系,我們將表1的數(shù)據(jù)做成了如圖1所示的折線圖,其中a折線為R-Tree,b折線為CSR-Tree。從圖l中可以看出,在空間對象較少的情況下,兩個(gè)的査詢效率基本相當(dāng);當(dāng)空間對象個(gè)數(shù)逐漸增加時(shí),CSR-Tree的査詢費(fèi)時(shí)和査詢占用空間明顯少于R-Tree的查詢時(shí)間和占用空間。如果對隨機(jī)數(shù)據(jù)進(jìn)行干預(yù),使其出現(xiàn)明顯的分類特征,則CSR-Tree將會比R-Tree的査詢效率更高。本發(fā)明提供的上述N維聚類排序記錄樹空間索引方法,其在構(gòu)建樹、查找或插入算法中執(zhí)行R-Tree算法中的用途。附表表1R-Tree與CSR-Tree的每千次查詢時(shí)間與空間個(gè)數(shù)關(guān)系表<table>tableseeoriginaldocumentpage8</column></row><table>權(quán)利要求1.一種N維聚類排序記錄樹空間索引方法,其特征是一種基于聚類分析和N維向量掃描排序的空間索引方法,該方法是先通過N維空間對象的距離相似性聚類分析,將N維空間上相近的空間對象盡量放置在同一個(gè)節(jié)點(diǎn)下;然后對聚類得到的每類空間對象的邊界矩形中心進(jìn)行{V1,V2,…,VN}方向上的排序;最后將排序的數(shù)據(jù)作為葉節(jié)點(diǎn),從下至上進(jìn)行CSR-Tree的遞歸構(gòu)造。2.根據(jù)權(quán)利要求1所述的N維聚類排序記錄樹空間索引方法,其特征是在進(jìn)行聚類分析時(shí),先輸入N維空間對象或N維空間對象最小邊界矩形的空間數(shù)據(jù),然后對輸入空間數(shù)據(jù)進(jìn)行聚類分析,得到K類空間對象集合。3.根據(jù)權(quán)利要求1或2所述的N維聚類排序記錄樹空間索引方法,其特征是在進(jìn)行排序時(shí),先對K類空間對象集合的中心點(diǎn)進(jìn)行掃描排序,然后分別對每類集合中的空間對象分別掃描排序。4.根據(jù)權(quán)利要求1或2所述的N維聚類排序記錄樹空間索引方法,其特征是將聚類排序后的K類空間對象集合作為樹的葉子節(jié)點(diǎn),進(jìn)行遞推構(gòu)建CSR-Tree。5.根據(jù)權(quán)利耍求1至4中任一權(quán)利要求所述的N維聚類排序記錄樹空間索引方法,其特征是所述方法在構(gòu)建樹、査找、插入算法中執(zhí)行空間索引算法中的用途。全文摘要本發(fā)明是一種N維聚類排序記錄樹空間索引方法,該方法基于聚類分析和N維向量掃描排序,具體是先通過N維空間對象的距離相似性聚類分析,將N維空間上相近的空間對象盡量放置在同一個(gè)節(jié)點(diǎn)下;然后對聚類得到的每類空間對象的邊界矩形中心進(jìn)行{V<sub>1</sub>,V<sub>2</sub>,…,V<sub>N</sub>}方向上的排序;最后將排序的數(shù)據(jù)作為葉節(jié)點(diǎn),從下至上進(jìn)行CSR-Tree的遞歸構(gòu)造。該方法支持任意維空間對象的空間索引構(gòu)建與查詢,能對任意維空間對象排序,可同時(shí)適用于二維空間和三維空間,實(shí)現(xiàn)簡單且效率很高;可提高CSR-Tree索引的檢索效率;能在各種空間數(shù)據(jù)庫管理軟件、三維建模軟件、GIS(地理信息系統(tǒng))軟件等諸多專業(yè)軟件中推廣使用。文檔編號G06F17/30GK101299213SQ20081004805公開日2008年11月5日申請日期2008年6月17日優(yōu)先權(quán)日2008年6月17日發(fā)明者何珍文,剛劉,劉軍旗,吳沖龍,孔春芳,張夏林,田宜平,翁正平申請人:中國地質(zhì)大學(xué)(武漢)