吳 晨 全吉成 袁昱緯 趙秀影 王宏偉
(1.中國人民解放軍空軍航空大學(xué)航空航天情報(bào)系,吉林 長春 130022;2.中國人民解放軍海軍航空工程學(xué)院電子信息工程系,山東 煙臺(tái) 264001)
遙感影像信息豐富且形象直觀,在地理測繪、資源環(huán)境監(jiān)測、軍事偵察與戰(zhàn)場感知等方面具有重要應(yīng)用。隨著對(duì)地觀測技術(shù)的快速發(fā)展,人類每天接收及處理產(chǎn)生的遙感影像數(shù)據(jù)量正在以幾何級(jí)數(shù)增加,加上之前積累的影像,獲取的遙感影像已達(dá)到海量的級(jí)別。而管理海量遙感影像的能力卻沒有跟上影像增長的步伐,導(dǎo)致“影像數(shù)據(jù)越多,可用的影像越少”[1]。
在這種情況下,傳統(tǒng)的集中式存儲(chǔ)已無法滿足海量遙感影像的管理要求。隨著云計(jì)算的興起,由于云計(jì)算本身就具有“無限的計(jì)算能力和存儲(chǔ)能力”[2],其自然成為當(dāng)前海量遙感影像存儲(chǔ)管理的首選方案。云計(jì)算并不是新發(fā)明的技術(shù),而是眾多已有技術(shù)的綜合集成。Hadoop[3]是Apache軟件基金會(huì)的開源云計(jì)算系統(tǒng)。Hadoop的三個(gè)關(guān)鍵部分HDFS(Hadoop Distributed File System)、MapReduce、HBase[4], 分 別 是Google云計(jì)算的GFS、MapReduce、Bigtable的開源實(shí)現(xiàn)。其中,HBase是建立在HDFS上的可隨機(jī)讀寫、面向列存儲(chǔ)、支持海量數(shù)據(jù)快速檢索的分布式數(shù)據(jù)庫。本文將Hilbert曲線應(yīng)用到影像金字塔模型中,提出一種基于HBase的高效管理海量遙感影像方法,實(shí)現(xiàn)了海量遙感影的快速檢索。
HBase是Apache軟件基金會(huì)下的一款開源分布式數(shù)據(jù)庫軟件。HBase建立在HDFS之上,適用于對(duì)海量數(shù)據(jù)進(jìn)行隨機(jī)快速讀寫。HBase構(gòu)建在廉價(jià)計(jì)算機(jī)上,具有高可靠性、高穩(wěn)定性、可伸縮及面向列族存儲(chǔ)的優(yōu)點(diǎn)。
HBase在其結(jié)構(gòu)和應(yīng)用特點(diǎn)上不同于傳統(tǒng)關(guān)系型數(shù)據(jù)庫。HBase為了更好的可伸縮性和靈活性削弱了其他方面的優(yōu)勢,從而使得HBase具有獨(dú)特的數(shù)據(jù)模型。這也導(dǎo)致了其在表的設(shè)計(jì)方面與傳統(tǒng)關(guān)系型數(shù)據(jù)庫有很大區(qū)別。
HBase系統(tǒng)架構(gòu):
HBase的底層是Hadoop,其具體負(fù)責(zé)文件的可靠存儲(chǔ)與管理。HBase的主要組成部件有:
1)HBaseMaster
HBaseMaster負(fù)責(zé)分配HRegion給 HRegionServer,同時(shí)監(jiān)控HRegionServer的運(yùn)行情況。
2)HRegionServer
HRegionServer負(fù)責(zé)處理HBaseClient的讀寫請(qǐng)求,同時(shí)與HBaseMaster聯(lián)系,以獲取服務(wù)所需的HRegion并報(bào)告HBaseMaster自身的運(yùn)行狀況。
3)HBaseClient
HBaseClient負(fù)責(zé)尋找存儲(chǔ)了所要檢索數(shù)據(jù)的HRegionServer,其中HBaseClient會(huì)首先找到存儲(chǔ)RootRegion的位置。
4)HFile
HFile是HBase實(shí)現(xiàn)Bigtable快速檢索和存儲(chǔ)功能的基本單元,主要負(fù)責(zé)列族數(shù)據(jù)的存儲(chǔ)。
影像金字塔是目前公認(rèn)的管理海量遙感影像的數(shù)據(jù)模型[9]。影像金字塔的分層分塊策略使客戶端可以快速獲取所需顯示的影像。本文的影像金字塔采用Plate Carree投影[9]。Plate Carree投影是一種可描述全球地理范圍的投影。在Plate Carree投影中,設(shè)層級(jí)為level(level≥
通常,為提高瓦片影像數(shù)據(jù)管理的空間聚集性,需要將空間填充曲線應(yīng)用到影像金字塔模型中。目前,常用的空間填充曲線有行序、Peano曲線、Hilbert曲線等,如圖所示。Hilbert曲線源自經(jīng)典的Peano曲線簇,是目前已知編碼曲線中空間聚集性最好的一種。
本文采用0,1,2,3依次表示Hilbert曲線經(jīng)過一個(gè)2×2基本類型單元的次序。第一層的東西半球分別用 “1”、“0”編碼。將瓦片存儲(chǔ)到HBase數(shù)據(jù)庫時(shí),每個(gè)瓦片都對(duì)應(yīng)一個(gè)Hilbert編碼(簡稱Hcode),如“0323”?;贖code組織瓦片的特點(diǎn)為:
①瓦片的Hcode字符長度與其級(jí)數(shù)相等;
②在Hcode上相鄰的瓦片,空間位置也相鄰;空間位置相鄰的瓦片,Hcode一般也相鄰。
經(jīng)典的Hilbert編碼算法的時(shí)間復(fù)雜度為O(n2)。由于檢索時(shí)都需要將層級(jí)和瓦片位置轉(zhuǎn)換為Hcode,所以要盡量簡化Hilbert編碼算法。曹忠升[10]等提出了一種基于分劃思想的Hilbert曲線快速編碼算法,可將時(shí)間復(fù)雜度由O(n2)降低為O(n log n)。本文對(duì)該方法進(jìn)行了相應(yīng)的改進(jìn),提出基于查表的Hilbert快速編碼。
經(jīng)過觀察,Hilbert曲線具有很強(qiáng)的遺傳性,且每一層都由四種基本曲線類型組合而成。
規(guī)定1:設(shè)當(dāng)前層的基本曲線單元為子單元 (2×2的特定位置網(wǎng)格),其曲線類型為子類型,則父單元為子單元對(duì)應(yīng)上一級(jí)的基本單元,父類型為父單元的基本曲線類型。
規(guī)定2:基本單元的坐標(biāo)示意圖如圖示,坐標(biāo)原點(diǎn)位于基本單元的左上角點(diǎn),將坐標(biāo)x和y按二進(jìn)制位計(jì)算得到象限號(hào)GroupID=x×21+y×20。除基本單元外,其他二維坐標(biāo)也以左上角點(diǎn)為坐標(biāo)原點(diǎn)。
父類型和子單元所處的象限號(hào)對(duì)應(yīng)唯一的子類型和編碼。如此,按層級(jí)由上到下依次循環(huán)查表可得到所需的瓦片Hcode。
由Hcode反解到行列號(hào),與正解相似。根據(jù)父類型和編碼可唯一確定子單元對(duì)應(yīng)所在父單元的象限號(hào)和子類型。如此,按層級(jí)由上到下依次循環(huán)查反解表可得到象限號(hào)字符串GroupStr。
基于Hilbert編碼索引的實(shí)驗(yàn)數(shù)據(jù)表明,1-4級(jí)瀏覽時(shí)間高于行列編碼索引。這主要由于Hilbert編碼計(jì)算時(shí)間高于行列編碼,且在1-4級(jí)Hilbert的空間聚集性優(yōu)勢體現(xiàn)不明顯。4級(jí)以后隨著級(jí)別增加,Hilbert空間聚集性優(yōu)勢越來越明顯超過行列編碼的計(jì)算優(yōu)勢。整體上看,在HBase中采用Hilbert編碼組織影像數(shù)據(jù)可以高效地完成檢索任務(wù)。
本文利用HBase分布式數(shù)據(jù)庫的列存儲(chǔ)模型特點(diǎn),將Hilbert曲線應(yīng)用到影像金字塔中,提出了一種基于查表的Hilbert快速編碼算法,通過實(shí)驗(yàn)驗(yàn)證了所提方法的有效性和實(shí)用性。下一步將研究如何提高HBase的存儲(chǔ)效率和基于MapReduce的影像進(jìn)一步處理。
[1]李飛.影像數(shù)據(jù)庫管理系統(tǒng)關(guān)鍵技術(shù)研究[D].北京:中國科學(xué)院研究生院,2008:18-20.
[2]呂雪峰,程承旗,龔健雅,等.海量遙感數(shù)據(jù)存儲(chǔ)管理技術(shù)綜述[J].中國科學(xué),41(21):1561-1579.
[3]陸嘉恒.Hadoop 實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2011:260-261.
[4]L.George.HBase:The Definitive Guide[M].2011:5-6.