基于hbase和geohash的矢量數(shù)據(jù)空間索引方法【專利摘要】本發(fā)明涉及一種基于hbase和geohash的矢量數(shù)據(jù)空間索引方法。該方法:首先,為需存儲(chǔ)的矢量數(shù)據(jù)進(jìn)行網(wǎng)格定級(jí);其次,進(jìn)行網(wǎng)格路徑計(jì)算;再而,進(jìn)行網(wǎng)格列表結(jié)構(gòu)設(shè)計(jì)以及索引編碼的建立;最后,對(duì)需查詢的空間范圍進(jìn)行空間索引。本發(fā)明通過(guò)對(duì)點(diǎn)、線、面二維矢量數(shù)據(jù)映射到一維的字符串型rowkey索引,使之能夠用hbase存儲(chǔ)海量矢量數(shù)據(jù),提供高性能空間查詢分析服務(wù)?!緦@f(shuō)明】基于hbase和geohash的矢量數(shù)據(jù)空間索引方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及涉及在hbase上進(jìn)行海量GIS矢量數(shù)據(jù)空間索引編碼及建立的方法,更特定言之,本發(fā)明涉及對(duì)點(diǎn)、線、面二維矢量數(shù)據(jù)映射到一維的字符串型rowkey索引,使之能夠用hbase存儲(chǔ)海量矢量數(shù)據(jù),提供高性能空間查詢分析服務(wù),特別是一種基于hbase和geohash的矢量數(shù)據(jù)空間索引方法?!?br>背景技術(shù):
】[0002]隨著,移動(dòng)網(wǎng)絡(luò)技術(shù)和GIS技術(shù)的快速發(fā)展,空間數(shù)據(jù)的急劇增長(zhǎng),海量空間數(shù)據(jù)的存儲(chǔ)管理成為難題。[0003]用云計(jì)算來(lái)解決空間查詢的難題,成了一個(gè)新的考慮方向。近幾年來(lái),為了解決大規(guī)模數(shù)據(jù)的存儲(chǔ)和管理的問(wèn)題,許多公司和機(jī)構(gòu)提出了一系列基于“云計(jì)算”技術(shù)的可擴(kuò)展的大規(guī)模數(shù)據(jù)管理方案,如Bigtable、HBase>Cassandra、HypertabIe等等。HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),它基于Hadoop這個(gè)包含了海量存儲(chǔ)和計(jì)算的分布式系統(tǒng)架構(gòu),提供了在廉價(jià)PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群的能力。[0004]目前已有許多針對(duì)空間查詢的研究,并已提出了一系列解決方法,這些方法大多使用R樹(shù)和倒排表相結(jié)合的混合索引結(jié)構(gòu)對(duì)空間信息進(jìn)行索引,以為空間查詢提供支持。[0005]相關(guān)的空間索引的專利有審批中的“基于HBase的矢量空間大數(shù)據(jù)存儲(chǔ)方法”,該方法以所述矢量數(shù)據(jù)記錄的ID作為行鍵RowKey,以所述矢量數(shù)據(jù)記錄的數(shù)據(jù)字段和除ID以外的屬性字段作為列建立數(shù)據(jù)記錄,以所述矢量數(shù)據(jù)記錄的空間范圍編號(hào)作為行鍵RowKey,以所述空間范圍編號(hào)下的所有矢量空間數(shù)據(jù)的ID作為列建立索引。[0006]相關(guān)論文有“基于R樹(shù)的分布式并行空間索引機(jī)制研究”,采用多層并行R樹(shù)空間索引結(jié)構(gòu),以高效率的并行空間數(shù)據(jù)劃分策略為基礎(chǔ),以經(jīng)典的并行計(jì)算方法論為依據(jù),使其結(jié)構(gòu)設(shè)計(jì)在保證能夠獲得較好的負(fù)載平衡性能的前提下,更適合于海量空間數(shù)據(jù)的并行化處理。[0007]現(xiàn)有的空間索引技術(shù)多基于R樹(shù)及其變種的空間索引機(jī)制,它并不適用于動(dòng)態(tài)插入數(shù)據(jù),R樹(shù)的結(jié)構(gòu)會(huì)有較大的變化。[0008]Geohash對(duì)于線、面數(shù)據(jù)的支持有一些弊端,比如若查詢區(qū)域?qū)τ诘膭澐执螖?shù)過(guò)大,可能會(huì)導(dǎo)致查詢區(qū)域包含的單元網(wǎng)格過(guò)多而使檢索條件過(guò)于瑣碎,增大數(shù)據(jù)庫(kù)的壓力,降低了查詢效率;若查詢區(qū)域?qū)?yīng)的劃分次數(shù)過(guò)小,可能會(huì)使查詢區(qū)域只為某單元網(wǎng)格的一小部分,導(dǎo)致依據(jù)Geohash編碼檢索的結(jié)果包含太多查詢區(qū)域不相交的數(shù)據(jù),降低查準(zhǔn)率。【
發(fā)明內(nèi)容】[0009]本發(fā)明的目的在于提供一種通過(guò)對(duì)點(diǎn)、線、面二維矢量數(shù)據(jù)映射到一維的字符串型rowkey索引,使之能夠用hbase存儲(chǔ)海量矢量數(shù)據(jù),提供高性能空間查詢分析服務(wù)的基于hbase和geohash的矢量數(shù)據(jù)空間索引方法。[0010]為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種基于hbase和geohash的矢量數(shù)據(jù)空間索引方法,包括如下步驟,51:網(wǎng)格定級(jí):為需存儲(chǔ)入Hbase數(shù)據(jù)庫(kù)中的矢量數(shù)據(jù)按照點(diǎn)、線、面的數(shù)據(jù)分類劃分網(wǎng)格,確定存儲(chǔ)矢量數(shù)據(jù)的網(wǎng)格層數(shù),即確定需要?jiǎng)澐值木W(wǎng)格數(shù);52:網(wǎng)格路徑計(jì)算:確定一個(gè)空間投影坐標(biāo)系,以確定起止經(jīng)度IngagUngs和緯度Iate、lat終,并計(jì)算出每一層每個(gè)網(wǎng)格的長(zhǎng)、寬度數(shù),以便于經(jīng)度lng、緯度Iat與網(wǎng)格行號(hào)row、列號(hào)col之間的相互轉(zhuǎn)換;所述網(wǎng)格路徑計(jì)算包括點(diǎn)所在網(wǎng)格計(jì)算、線經(jīng)過(guò)網(wǎng)格計(jì)算和面覆蓋網(wǎng)格計(jì)算;53:網(wǎng)格列表結(jié)構(gòu)設(shè)計(jì):建立存儲(chǔ)索引數(shù)據(jù)的空間索引表和存儲(chǔ)矢量數(shù)據(jù)的要素表,所述空間索引表的每一行存儲(chǔ)一個(gè)網(wǎng)格的矢量索引,所述要素表的每一行存儲(chǔ)一個(gè)矢量數(shù)據(jù);54:索引編碼:將每個(gè)矢量數(shù)據(jù)按所述步驟S2的網(wǎng)格路徑計(jì)算,獲得網(wǎng)格列表,計(jì)算每個(gè)網(wǎng)格的geohash值,并生成空間索引表的rowkey,rowkey=空間投影坐標(biāo)系編碼+矢量分類編碼+geohash編碼,將相應(yīng)要素表中的rowkey即矢量數(shù)據(jù)的要素ID寫入空間索引表的列data:FIDi(i=l,2,...)中,這里不同矢量數(shù)據(jù)可能經(jīng)過(guò)同一個(gè)網(wǎng)格,即一條索引可能包含多個(gè)要素ID,這些要素ID按照存入的順序依次存入data:FIDi(i=l,2,...)中;55:空間查詢:設(shè)需查詢空間范圍為R,根據(jù)需查詢的矢量數(shù)據(jù)的空間投影坐標(biāo)系編碼和矢量分類編碼,并根據(jù)矢量所在層求出該矢量數(shù)據(jù)在相應(yīng)層上經(jīng)過(guò)的網(wǎng)格列表,將每個(gè)網(wǎng)格轉(zhuǎn)換為geohash編碼,即可得出所需矢量數(shù)據(jù)的rowkey=空間投影坐標(biāo)系編碼+矢量分類編碼+geohash編碼;根據(jù)該rowkey查詢空間索引表,得到要素ID,再用要素ID查詢要素表,即可得所需的空間查詢結(jié)果。[0011]在本發(fā)明實(shí)施例中,所述步驟S2中,所述點(diǎn)所在網(wǎng)格計(jì)算的方法如下:設(shè)網(wǎng)格列表中每一層每個(gè)網(wǎng)格的長(zhǎng)、寬度數(shù)分別為dx、dy,則點(diǎn)所在網(wǎng)格的計(jì)算公式為:【權(quán)利要求】1.一種基于hbase和geohash的矢量數(shù)據(jù)空間索引方法,其特征在于:包括如下步驟,51:網(wǎng)格定級(jí):為需存儲(chǔ)入Hbase數(shù)據(jù)庫(kù)中的矢量數(shù)據(jù)按照點(diǎn)、線、面的數(shù)據(jù)分類劃分網(wǎng)格,確定存儲(chǔ)矢量數(shù)據(jù)的網(wǎng)格層數(shù),即確定需要?jiǎng)澐值木W(wǎng)格數(shù);52:網(wǎng)格路徑計(jì)算:確定一個(gè)空間投影坐標(biāo)系,以確定起止經(jīng)度IngagUngs和緯度Iate、lat終,并計(jì)算出每一層每個(gè)網(wǎng)格的長(zhǎng)、寬度數(shù),以便于經(jīng)度lng、緯度Iat與網(wǎng)格行號(hào)row、列號(hào)col之間的相互轉(zhuǎn)換;所述網(wǎng)格路徑計(jì)算包括點(diǎn)所在網(wǎng)格計(jì)算、線經(jīng)過(guò)網(wǎng)格計(jì)算和面覆蓋網(wǎng)格計(jì)算;53:網(wǎng)格列表結(jié)構(gòu)設(shè)計(jì):建立存儲(chǔ)索引數(shù)據(jù)的空間索引表和存儲(chǔ)矢量數(shù)據(jù)的要素表,所述空間索引表的每一行存儲(chǔ)一個(gè)網(wǎng)格的矢量索引,所述要素表的每一行存儲(chǔ)一個(gè)矢量數(shù)據(jù);54:索引編碼:將每個(gè)矢量數(shù)據(jù)按所述步驟S2的網(wǎng)格路徑計(jì)算,獲得網(wǎng)格列表,計(jì)算每個(gè)網(wǎng)格的geohash值,并生成空間索引表的rowkey,rowkey=空間投影坐標(biāo)系編碼+矢量分類編碼+geohash編碼,將相應(yīng)要素表中的rowkey即矢量數(shù)據(jù)的要素ID寫入空間索引表的列data:FIDi(i=l,2,...)中,這里不同矢量數(shù)據(jù)可能經(jīng)過(guò)同一個(gè)網(wǎng)格,即一條索引可能包含多個(gè)要素ID,這些要素ID按照存入的順序依次存入data:FIDi(i=l,2,...)中;55:空間查詢:設(shè)需查詢空間范圍為R,根據(jù)需查詢的矢量數(shù)據(jù)的空間投影坐標(biāo)系編碼和矢量分類編碼,并根據(jù)矢量所在層求出該矢量數(shù)據(jù)在相應(yīng)層上經(jīng)過(guò)的網(wǎng)格列表,將每個(gè)網(wǎng)格轉(zhuǎn)換為geohash編碼,即可得出所需矢量數(shù)據(jù)的rowkey=空間投影坐標(biāo)系編碼+矢量分類編碼+geohash編碼;根據(jù)該rowkey查詢空間索引表,得到要素ID,再用要素ID查詢要素表,即可得所需的空間查詢結(jié)果。2.根據(jù)權(quán)利要求1所述的基于hbase和geohash的矢量數(shù)據(jù)空間索引方法,其特征在于:所述步驟S2中,所述點(diǎn)所在網(wǎng)格計(jì)算的方法如下:設(shè)網(wǎng)格列表中每一層每個(gè)網(wǎng)格的長(zhǎng)、寬度數(shù)分別為dx、dy,則點(diǎn)所在網(wǎng)格的計(jì)算公式為:3.根據(jù)權(quán)利要求2所述的基于hbase和geohash的矢量數(shù)據(jù)空間索引方法,其特征在于:所述步驟S2中,所述線經(jīng)過(guò)網(wǎng)格計(jì)算的方法如下:設(shè)線段起點(diǎn)為Pl,終點(diǎn)為P2,根據(jù)點(diǎn)所在網(wǎng)格的計(jì)算公式,計(jì)算得出pi所在網(wǎng)格行列號(hào)rowl、coll,p2所在網(wǎng)格行列號(hào)row2、col2;根據(jù)行列號(hào)計(jì)算起點(diǎn)和終點(diǎn)所在網(wǎng)格右上角坐標(biāo)(xStart,yStart)、(xEnd,yEnd)分兩種情況確定線段經(jīng)過(guò)的網(wǎng)格:第一種:線段處于水平或垂直位置時(shí),即起點(diǎn)和終點(diǎn)的行號(hào)相等或者列號(hào)相等時(shí),那么線經(jīng)過(guò)的網(wǎng)格的行坐標(biāo)為rowl,列坐標(biāo)為coifcol2;或者線經(jīng)過(guò)的網(wǎng)格的行坐標(biāo)為row1-row2列坐標(biāo)為coll;第二種:線段不處于水平或垂直位置時(shí),將終點(diǎn)與起點(diǎn)的相對(duì)位置分為四個(gè)象限,確定終點(diǎn)所在象限,根據(jù)線段與網(wǎng)格經(jīng)線的交點(diǎn),對(duì)比交點(diǎn)和網(wǎng)格右上角位置,若交點(diǎn)在網(wǎng)格右上角的上方,則線段經(jīng)過(guò)當(dāng)前格子的上一個(gè)格子;若交點(diǎn)在網(wǎng)格右上角的下方,則線段經(jīng)過(guò)當(dāng)前格子的右邊一個(gè)格子;若交點(diǎn)落在網(wǎng)格右上角上,則線段經(jīng)過(guò)當(dāng)前節(jié)點(diǎn)的右上方格子。4.根據(jù)權(quán)利要求3所述的基于hbase和geohash的矢量數(shù)據(jù)空間索引方法,其特征在于:所述步驟S2中,所述面覆蓋網(wǎng)格計(jì)算的方法如下:獲取面的最小外包矩形MBR,計(jì)算最小外包矩形MBR所經(jīng)過(guò)的行號(hào)和列號(hào)的范圍,再將此范圍內(nèi)的每一個(gè)網(wǎng)格與面的多邊形進(jìn)行兩個(gè)條件的判斷:①網(wǎng)格矩形是否與面狀目標(biāo)構(gòu)成的多邊形相交;②網(wǎng)格矩形是否在面構(gòu)成的多邊形內(nèi);若每一個(gè)網(wǎng)格與面的多邊形滿足兩個(gè)條件中的任意一個(gè),則面經(jīng)過(guò)此網(wǎng)格?!疚臋n編號(hào)】G06F17/30GK104199986SQ201410509173【公開(kāi)日】2014年12月10日申請(qǐng)日期:2014年9月29日優(yōu)先權(quán)日:2014年9月29日【發(fā)明者】陳強(qiáng),梁曼舒,林承華,湯振立,羅富財(cái),吳丹申請(qǐng)人:國(guó)家電網(wǎng)公司,國(guó)網(wǎng)福建省電力有限公司,國(guó)網(wǎng)福建省電力有限公司電力科學(xué)研究院,福州百榕軟件有限公司