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