黃冬梅 楊雨浩 梅海彬 王振華
(上海海洋大學(xué)信息學(xué)院 上海 201306)
面向Spark的遙感影像金字塔模型的并行構(gòu)建方法
黃冬梅 楊雨浩 梅海彬 王振華
(上海海洋大學(xué)信息學(xué)院 上海 201306)
隨著遙感技術(shù)和攝影測繪的發(fā)展,遙感影像的分辨率不斷提高,數(shù)據(jù)量日益增長,這對快速、高效地處理海量遙感影像數(shù)據(jù)提出了更高的要求,如何有效、智能地存儲和處理海量遙感數(shù)據(jù)成為研究的熱點(diǎn)。在分析現(xiàn)有金字塔模型的并行構(gòu)建的基礎(chǔ)上,設(shè)計一種面向Spark計算框架的影像金字塔模型。模型給出了影像金字塔構(gòu)建算法及影像數(shù)據(jù)的分布式存儲組織結(jié)構(gòu),實(shí)現(xiàn)了海量遙感影像數(shù)據(jù)在Spark中的并行處理,為Spark增加了計算處理空間數(shù)據(jù)格式的能力。實(shí)驗(yàn)結(jié)果表明,利用該方法能夠在Spark云平臺上實(shí)現(xiàn)快速、高效的解決海量遙感影像金字塔的并行構(gòu)建,特別是在面對海量遙感影像數(shù)據(jù)時,無論從金字塔構(gòu)建性能上還是遙感影像的計算效率上,Spark都更具優(yōu)勢。
遙感影像 金字塔 Spark 算法 分布式
金字塔模型是實(shí)現(xiàn)海量遙感影像可視化的基礎(chǔ)[1],它是一種多分辨率層次模型,對于不同區(qū)域通常采用不同分辨率來提高影像的渲染速度。金字塔模型構(gòu)造的過程本質(zhì)上是對遙感影像進(jìn)行影像分層和分塊處理[2],通過對原始遙感影像重采樣,建立不同分辨率的影像金字塔,從而提高地圖縮放的響應(yīng)速度。重采樣可以根據(jù)采樣順序的不同,分為自底向上和自頂向下兩種,而常規(guī)的串行計算方法一般只適合小規(guī)模的遙感數(shù)據(jù),對于海量高分遙感影像的處理效率其實(shí)并不高[3]。在遙感影像的應(yīng)用中,影像金字塔模型是一種非常重要的數(shù)據(jù)組織形式和應(yīng)用模型,眾多學(xué)者對其已有廣泛的研究,并取得了許多重要成果[4-5]。利用金字塔模型來組織不同分辨率的影像已基本成為普適的方法,其對于數(shù)據(jù)的表現(xiàn)有較高的效率,能夠?qū)崿F(xiàn)不同分辨率之間的快速瀏覽[6]。然而,隨著遙感技術(shù)和地理測繪的發(fā)展,今后的遙感影像數(shù)據(jù)面臨多源、多類型、海量數(shù)據(jù)的局面,存在影像分辨率高、文件大的特點(diǎn)[7],這使得一些測繪區(qū)域的遙感影像數(shù)據(jù)量會變得更加大。因此,在對高分遙感影像特別是海量遙感影像進(jìn)行處理時,我們需要高計算性能和高吞吐率,現(xiàn)有的利用MapReduce的分布式計算框架來提高金字塔構(gòu)建效率的方法[8-9],在處理海量、多源、高分遙感影像時,所耗費(fèi)時間仍然很長,且在海量遙感影像的可視化過程中響應(yīng)較慢。例如40GB大小的原始遙感影像數(shù)據(jù)重采樣生成尺寸大小為256×256像素的瓦片,其產(chǎn)生的瓦片總的大小為54 GB,用傳統(tǒng)的并行方法可能需要8個小時,故而針對海量遙感影像處理的效率問題,有必要采用更高性能的處理方式。
Spark是一種基于內(nèi)存的分布式計算框架[10-11],核心是圖計算和數(shù)據(jù)流的快速處理,其本身并不具備直接處理遙感影像的能力,本文在現(xiàn)有的框架基礎(chǔ)上,針對海量遙感影像處理性能的問題,設(shè)計并實(shí)現(xiàn)了一種面向Spark計算框架的遙感影像金字塔模型構(gòu)建方法及其數(shù)據(jù)存儲組織結(jié)構(gòu),解決了遙感影像的即時計算處理效率和分布式存儲優(yōu)化,實(shí)現(xiàn)了影像的動態(tài)渲染。本文充分運(yùn)用Spark的彈性數(shù)據(jù)集RDD內(nèi)存計算的特性,搭建Spark on Yarn模式下的分布式集群,與Hadoop中分布式文件系統(tǒng)(HDFS)相結(jié)合,利用Spark來加速影像金字塔的構(gòu)建的過程。在影像金字塔的構(gòu)建過程主要是對影像數(shù)據(jù)的重采樣和遙感影像瓦片分割存儲,并根據(jù)不同的模型與策略生成影像瓦片緩存[12-14],從而實(shí)現(xiàn)遙感影像可視化的快速渲染。與基于MapReduce的遙感影像金字塔模型構(gòu)建效率相比,Spark可以將原始影像數(shù)據(jù)集轉(zhuǎn)成RDD,并將計算處理后的中間結(jié)果保存在內(nèi)存中,減少了影像數(shù)據(jù)的I/O次數(shù),大大提高了遙感影像處理的處理速度。
本文提出的模型策略和應(yīng)用主要包括:(1)設(shè)計面向Spark 框架的遙感影像金字塔模型的并行構(gòu)建算法和影像數(shù)據(jù)的存儲組織形式,提高了海量遙感影像的即時計算效率;(2)在Spark計算框架的基礎(chǔ)上,依據(jù)影像金字塔構(gòu)建算法,開發(fā)出面向Spark的遙感影像金字塔模型并行構(gòu)建的相關(guān)接口庫。
面向Spark的影像金字塔是一種利用彈性數(shù)據(jù)集RDD來處理海量遙感數(shù)據(jù)的模型。該金字塔模型的構(gòu)建過程中會同時考慮影像的分層和影像的分塊,根據(jù)原始遙感影像的分辨率大小確定其最大分層數(shù)。同時將原始遙感影像切分成大小相等的瓦片,對于不足之處給予空值填充,進(jìn)而根據(jù)最大分層數(shù)及每層的瓦片元數(shù)據(jù)構(gòu)建金字塔模型,建立多分辨率層次影像瓦片緩存機(jī)制。金字塔模型的構(gòu)建主要由影像的層級劃分及影像的切片方式兩部分組成,通常會通過預(yù)設(shè)倍率來實(shí)現(xiàn)分層分塊,影像的分層數(shù)越多,其可視化渲染的速度就越快,客戶端響應(yīng)的時間就會越短,但隨著層數(shù)的不斷增加,越上層的影像就會越模糊分辨率越低,因而需要依據(jù)需求合理的分層。與傳統(tǒng)的按照采樣算子進(jìn)行重采樣處理來構(gòu)建影像金字塔模型相比,本文提出的面向Spark的遙感影像金字塔的構(gòu)建算法的效率將更高,計算量也會大大減少。其可以靈活的控制影像的分層,解決了遙感影像的分布式切片問題,實(shí)現(xiàn)影像金字塔模型的按需構(gòu)建,是一種分布式并行的構(gòu)建算法。本文中面向Spark的影像金字塔模型構(gòu)建流程如圖1所示,假設(shè)入庫的原始遙感影像是可以進(jìn)行縮放的,并沒有達(dá)到分辨率的最小值。
圖1 面向Spark的金字塔模型構(gòu)建流程
從圖1中可以看到整個金字塔模型的構(gòu)建流程,原始影像數(shù)據(jù)入庫后會被HDFS切塊存儲到不同的存儲節(jié)點(diǎn)上,不同節(jié)點(diǎn)上的分塊會被Spark處理成不同的RDD,Spark會將不同的RDD數(shù)據(jù)合并成Spark可以直接處理的RasterRDD,設(shè)置采樣算子為2,影像瓦片的大小tileSize=256(像素)。按照影像金字塔構(gòu)建算法來計算影像的最大分層數(shù),其中每生成一個新的RasterRDD就是新一層影像數(shù)據(jù),同時也是計算判斷下一層的輸入數(shù)據(jù),這個過程中會對每一層的影像按四叉樹的方式進(jìn)行分塊操作。求得最大分層數(shù)后,調(diào)用Ingest對象下的Sinklevel函數(shù)傳入?yún)?shù)level和RasterRDD建立金字塔模型,從分辨率最小的最上層開始,影像瓦片會隨著層級level的值不斷向上重構(gòu)融合,直到level的值小于等于1為止。終止計算后,將構(gòu)建金字塔中生成的屬性數(shù)據(jù)和元數(shù)據(jù)寫到分布式文件系統(tǒng)(HDFS)中。
1.1 影像金字塔模型構(gòu)建算法
遙感影像數(shù)據(jù)在投入使用前,大多會因其數(shù)據(jù)量過大而進(jìn)行分幅處理,因此其原始影像的尺寸大小不會過大,從而在構(gòu)建金字塔模型的過程中,金字塔的層數(shù)一般不會超過20層。本文根據(jù)原始遙感影像的分辨率大小來確定遙感影像縮放的最大級別,即該原始影像可以劃分的最大分層數(shù)。同時,考慮到原始遙感影像寬高尺寸大小不同的情況,因而需要分別計算以原始影像寬或高為參數(shù)的最大分層數(shù),并取兩者之間的最大值作為最終的分層數(shù)。具體最大分層算法描述如下:
(1) 根據(jù)原始遙感影像的坐標(biāo)范圍Extent,求得遙感影像的像素大小W0×H0,設(shè)置影像瓦片切片值tileSize,計算影像分層的最大值level,計算原始遙感影像像元值大小CellSize,其中W0=Extent,width,H0=Extent.height。
(2) 計算遙感影像的第I層(1≤I≤20)的分辨率ResI=WI/(2I×TileSize),若CellSize.with+k≥ResI(K是修正值常數(shù)),則停止計算,當(dāng)前I的值即為原始遙感影像可以分層的最大值。否則,返回第(2)步,計算第I+1層。
(3) 重新賦值第(2)步中的WI,令其等于HI并計算新的I′,取I和I′的最大值max(I,I′)即為遙感影像的最大分層數(shù)level。
算法1 影像金字塔構(gòu)建算法:
輸入:遙感影像數(shù)據(jù)source,影像瓦片的尺寸tileSize
輸出:最大分層數(shù)level,屬性數(shù)據(jù),元數(shù)據(jù)
Begin:
(1) 將分塊的影像數(shù)據(jù)讀到Spark中,取得影像的范圍extent,計算原始影像的cellSize=extent.width/cols;
(2) 將cellSize、tileSize,extent.width傳給最大分層算法Zoom(cellSize.width,tileSize,extent.width);
(3) 計算影像的最大分層數(shù)I,每一次分層都重新計算影像分辨率Resi的大??;
(4) 調(diào)用上述的分層算法,并判斷影像的終止條件,若滿足條件則返回I,執(zhí)行第(6)步;
(5) 若不滿足條件,則I=I+1,生成下一層的rasterRDD,返回第(3)步;
(6) 將當(dāng)前最大層的數(shù)據(jù)Ingest到spark中,輸入?yún)?shù)level=I,rdd=rasterRDD;
(7) 調(diào)用Sinklevel函數(shù)建立分布式金字塔模型,判斷l(xiāng)evel是否大于1;
(8) 若level滿足條件,則調(diào)用sink函數(shù)生成nextrdd,level=level-1,重新遞歸調(diào)用Sinklevel;
(9) 若level不滿足條件,則停止計算,將生成的屬性數(shù)據(jù)和元數(shù)據(jù)寫入到HDFS中。
End
該算法是面向Spark的分布式構(gòu)建方法,依賴于原始遙感影像的分辨率大小,即其可以縮放的最大級別。原始影像經(jīng)過分塊切片后,被轉(zhuǎn)換成Spark可以直接處理的rasterRdd,計算過程中得到的中間數(shù)據(jù)集可以被cache到內(nèi)存中,從而減少了數(shù)據(jù)的讀取次數(shù),縮短了影像計算處理的效率,提高了影像金字塔模型的構(gòu)建速度。因而可以滿足影像金字塔模型的高效構(gòu)建,快速渲染的需要。同時,Spark的計算機(jī)制使得其在迭代計算上具有更高的優(yōu)勢。
1.2 影像數(shù)據(jù)的存儲組織結(jié)構(gòu)
構(gòu)建影像金字塔數(shù)據(jù)組織形式是影像數(shù)據(jù)存儲過程中極為重要的步驟,也是搭建金字塔模型中的重要環(huán)節(jié)。在計算原始影像的最大分層數(shù)中,需要給分層后的每一層影像瓦片建立相應(yīng)的索引,才能在后續(xù)金字塔模型構(gòu)建中,獲取到相應(yīng)的影像瓦片塊的數(shù)據(jù)信息。傳統(tǒng)的影像金字塔模型大都會采用可遞歸的空間填充曲線來對遙感影像的分塊瓦片進(jìn)行編碼,從而提高影像瓦片的空間檢索效率,縮短客戶端的渲染時間[15-16]。而在分布式的計算框架中,每個影像瓦片都是被獨(dú)立計算的[17],因而本文的關(guān)注點(diǎn)在于如何快速檢索到影像瓦片。金字塔模型的影像層是原始影像通過分層分塊后融合拼接生成的,各個影像層中的像素是按照一定的算法映射到原始影像的像素上[18]。本文在影像劃分時并不會對每個影像分區(qū)的瓦片數(shù)據(jù)內(nèi)容進(jìn)行單獨(dú)存儲,而是會對劃分后形成的每一層的影像進(jìn)行分布式存儲。即將某一層或者某幾層的影像數(shù)據(jù)存在一個或多個存儲節(jié)點(diǎn)上,然后通過編碼值(SpatialKey)及層級數(shù)I來確定每一層數(shù)據(jù)中所描述的影像瓦片的數(shù)據(jù)范圍,從而確定瓦片元數(shù)據(jù)中的數(shù)據(jù)值。影像瓦片的編碼方式如圖2所示,在計算最大分層的過程中,同時會對影像進(jìn)行切片分塊的操作,本文采用四叉樹的方式來實(shí)現(xiàn)影像分塊后的快速索引。
圖2 影像瓦片tile的編碼方式
由圖2中可以看到,我們通過TMS算法(tile map service)對遙感影像瓦片進(jìn)行編碼,對遙感影像采用四叉樹的方式來進(jìn)行分層[19-20]。在實(shí)際的編程過程中,由于瓦片編碼值的規(guī)律性(平面直角坐標(biāo)系),加上投影也是一種算法,所以編碼值和坐標(biāo)之間就建立了一種索引關(guān)系,通過經(jīng)緯度和層級可以得到瓦片的編碼值,反之通過編碼值可以找到經(jīng)緯度區(qū)間[21]。具體的計算公式如下:
n=2zoom
(1)
xtile=((lon_deg+180)/360)×n
(2)
ytile=(1-(log(tan(lat_rad)+
sec(lat_rad))/π))/2×n
(3)
其中,zoom為影像的層級數(shù), 由公式可以看出,只要確定經(jīng)緯度和層級,就可以得到瓦片的編碼值。相反,也可以通過編碼值來推算未知的經(jīng)緯度了,其計算公式如下:
lon_deg=xtile/n×360.0-180.0
(4)
lat_rad=arctan(sinh(π×(1-2×ytile/n)))
(5)
lat_deg=lat_rad×180.0/π
(6)
所以,在Spark構(gòu)建金字塔模型的過程中,我們可以根據(jù)原始遙感影像的中心坐標(biāo)和層級數(shù),來確定需要加載的影像瓦片。同樣,當(dāng)我們單擊底圖時,我們也可以根據(jù)影像瓦片的編碼值來確定瓦片的經(jīng)緯度范圍,從而確定某一點(diǎn)在當(dāng)前tile上的像素坐標(biāo)位置。
本文金字塔模型是面向Spark計算框架所構(gòu)建的,目的是通過Spark的分布式內(nèi)存計算的特性,來進(jìn)一步加速影像的處理過程,然而Spark本身并不能直接處理遙感影像,因而需要將原始遙感影像處理成為Spark可計算處理的數(shù)據(jù)組織形式,處理后的數(shù)據(jù)以分布式的形式存儲在HDFS中。如圖3所示即為原始遙感影像經(jīng)過Spark處理后生成的兩類數(shù)據(jù)結(jié)構(gòu),一類是JSON文件格式的屬性數(shù)據(jù);另一類是不帶有頭部數(shù)據(jù)信息的元數(shù)據(jù)。
圖3 面向Spark處理后的遙感影像數(shù)據(jù)組織形式
從圖3中可以看到,在進(jìn)行上述的金字塔模型構(gòu)建的過程中,生成的影像數(shù)據(jù)會分布式存儲在各個節(jié)點(diǎn)上,影像數(shù)據(jù)分為屬性數(shù)據(jù)和凈數(shù)據(jù),其中屬性數(shù)據(jù)中的存儲著從第0層到第N層的屬性數(shù)據(jù),每一層的屬性數(shù)據(jù)中又包含了三個數(shù)據(jù)信息,分別是索引數(shù)據(jù)信息、影像范圍數(shù)據(jù)信息、元數(shù)據(jù)的存儲位置信息。而凈數(shù)據(jù)中保存了從第0層到第N層的用于計算的數(shù)據(jù)信息,每一層的凈數(shù)據(jù)中又記錄了影像數(shù)據(jù)的數(shù)據(jù)偏移量和影像凈數(shù)據(jù)信息兩個方面。構(gòu)建好影像數(shù)據(jù)的組織形式后,我們可以根據(jù)不同層的編碼值(SpatialKey)來快速檢索到某一層或某幾層的影像瓦片來進(jìn)行分布式計算,從而計算資源和屬性數(shù)據(jù)索引參數(shù)會從master節(jié)點(diǎn)上分發(fā)到有相應(yīng)資源數(shù)據(jù)的計算節(jié)點(diǎn)上,計算節(jié)點(diǎn)可以通過屬性數(shù)據(jù)索引參數(shù)較快的獲取到映射的某一層的遙感影像的凈數(shù)據(jù)。
2.1 系統(tǒng)架構(gòu)
為了測試面向Spark的影像金字塔模型的性能優(yōu)劣性,本文的實(shí)驗(yàn)環(huán)境是將管理云平臺OpenStack部署在8臺浪潮服務(wù)器上,利用OpenStack的虛擬化技術(shù),建立了2個控制節(jié)點(diǎn)NameNode、SecondaryNameNode和5個Worker計算節(jié)點(diǎn)的小型集群,服務(wù)器中的節(jié)點(diǎn)通過千兆網(wǎng)卡連接,每個節(jié)點(diǎn)的包含8個核心,16 GB的計算內(nèi)存。搭載Ubuntu14.04系統(tǒng),建立基于Spark On Yarn的分布式集群,所使用的開源軟件包括:Hadoop2.6.3和Spark1.5.2。整個實(shí)驗(yàn)中,在Spark框架的基礎(chǔ)上,依據(jù)影像金字塔構(gòu)建算法開發(fā)的接口庫,實(shí)現(xiàn)遙感影像在Spark下的快速分層、切片分塊,以及遙感影像金字塔模型的并行構(gòu)建,實(shí)驗(yàn)的總體架構(gòu)設(shè)計如圖4所示。
圖4 實(shí)驗(yàn)的總體架構(gòu)設(shè)計
從圖4中可以看出,本文的總體框架設(shè)計與實(shí)現(xiàn)是基于分布式文件存儲系統(tǒng)(HDFS)的。在實(shí)際的操作過程中,首先將海量的遙感數(shù)據(jù)入庫存儲到HDFS中,接著通過開發(fā)的接口庫將遙感數(shù)據(jù)讀到Spark集群中進(jìn)行分布式計算處理,經(jīng)過處理后的遙感影像會生成兩類數(shù)據(jù)重新存儲到分布式文件系統(tǒng)中,便于集群中的所有客戶端共享、渲染顯示。在Spark計算模式中,在分層和分塊計算處理的過程中,生成的中間影像數(shù)據(jù),可以被Spark計算框架Cache到內(nèi)存中,進(jìn)而可以直接被客戶端所調(diào)用,直到處理的中間結(jié)果被內(nèi)存釋放,這也是Spark計算模式的最大優(yōu)勢,不需要進(jìn)行多次I/O操作。
2.2 影像瓦片參數(shù)優(yōu)化實(shí)驗(yàn)
在SIPM的構(gòu)建及遙感影像的分布式處理過程中,對性能結(jié)果存在較大影響的參數(shù)有2個,分別是遙感影像數(shù)據(jù)的數(shù)據(jù)量和影像瓦片的切片參數(shù)值(tileSize)。為了驗(yàn)證該方法的優(yōu)越性,需要確定影像瓦片的切片參數(shù),在不考慮局域網(wǎng)中網(wǎng)絡(luò)的傳輸效率的環(huán)境下,根據(jù)實(shí)驗(yàn)的總體架構(gòu)設(shè)計,搭建出一套面向Spark的影像處理系統(tǒng),并由此進(jìn)行了多組的測試和比較,實(shí)驗(yàn)結(jié)果如表1所示。
表1 影像瓦片參數(shù)優(yōu)化實(shí)驗(yàn)結(jié)果
從表1中可以看到,建立遙感影像金字塔模型的過程中,影像瓦片的取值越小所消耗的時間就越長,而客戶端加載影像瓦片的響應(yīng)時間卻越短。同時,當(dāng)遙感影像的數(shù)據(jù)量增大時,切片所消耗的時間也在增加,客戶端的響應(yīng)時間在誤差范圍內(nèi)基本不變??紤]到客戶端的快速響應(yīng),tilesize參數(shù)設(shè)置應(yīng)當(dāng)盡可能的小,但小的分塊卻不利于客戶端進(jìn)行連貫的縮放。同時當(dāng)遙感影像的數(shù)據(jù)量較大、數(shù)據(jù)文件較多,需要即時處理發(fā)布時,大的分塊反而更能提高影像處理的效率,但卻不利于客戶端的渲染顯示。
2.3 面向Spark的影像金字塔并行構(gòu)建性能對比實(shí)驗(yàn)
本文通過兩組對照實(shí)驗(yàn)來驗(yàn)證影像金字塔模型并行構(gòu)建性能,經(jīng)過實(shí)驗(yàn)證明本文提出的方法在面對海量遙感影像的處理方面將更加快速,能滿足客戶端的即時響應(yīng)、影像瓦片服務(wù)的快速發(fā)布。本文提出的影像金字塔的并行構(gòu)建方法中,首先判斷原始遙感影像是否可以建立金字塔模型即需求得原始遙感影像可以分層的最大值,其次根據(jù)求得最大值再向上逐層建立影像金字塔模型。為了測試影像金字塔模型的并行構(gòu)建的效率,實(shí)驗(yàn)需要從兩個方面來評估其在遙感影像金字塔并行構(gòu)建的性能,一方面是遙感影像數(shù)據(jù)分層和瓦片切割中影像處理的吞吐效率;另一方面是遙感影像金字塔構(gòu)建的性能,實(shí)驗(yàn)中設(shè)置tilesize=256,實(shí)驗(yàn)選用臨港滴水湖、洋山港周邊海域的遙感影像數(shù)據(jù)作為數(shù)據(jù)來源進(jìn)行多次對照實(shí)驗(yàn)。
實(shí)驗(yàn)一中,我們將該算法打包部署到Hadoop單機(jī)模式的環(huán)境下和Hadoop分布式模式的環(huán)境進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)中的數(shù)據(jù)量大小為50 MB、100 MB、1 GB、10 GB,實(shí)驗(yàn)結(jié)果如圖5、圖6所示。
圖5 遙感影像的吞吐效率對比
圖6 遙感影像金字塔模型的構(gòu)建性能對比
從圖5、圖6中可以看出,當(dāng)遙感影像的數(shù)據(jù)量較小時,單機(jī)模式下遙感影像的吞吐效率要比分布式低,但其影像金字塔構(gòu)建性能卻比分布式模式下的性能快。而當(dāng)數(shù)據(jù)量越來越大時,相對于單機(jī)模式下的效率,分布式模式下的影像金字塔模型的構(gòu)建性能要更快,影像的吞吐效率也更高。
實(shí)驗(yàn)二中,我們將該算法部署到面向Spark計算框架和面向Hadoop MapReduce計算框架下的分布式實(shí)驗(yàn)環(huán)境中,實(shí)驗(yàn)中的數(shù)據(jù)源和參數(shù)保持不變,同時保證計算節(jié)點(diǎn)的資源一致,實(shí)驗(yàn)的數(shù)據(jù)量大小為100 MB、1 GB、10 GB、100 GB,實(shí)驗(yàn)的結(jié)果如圖7、圖8所示。
圖7 遙感影像的吞吐效率對比
圖8 遙感影像金字塔模型的構(gòu)建性能對比
從圖7、圖8中可以看到,在遙感影像金字塔模型的并行構(gòu)建中,當(dāng)遙感影像的數(shù)據(jù)量較小時,兩種框架下的影像吞吐效率和影像金字塔模型的構(gòu)建性能相差不大。但當(dāng)遙感影像的數(shù)據(jù)量較大時,采用面向Spark的構(gòu)建方法進(jìn)行金字塔的并行構(gòu)建要比采用MapReduce的構(gòu)建方式在影像的吞吐效率和影像金字塔模型的構(gòu)建性能上都要優(yōu)越的多。經(jīng)過對比計算,當(dāng)數(shù)據(jù)量達(dá)到100 GB時,其在吞吐效率和構(gòu)建性能上將提升30%~35%。
2.4 實(shí)驗(yàn)結(jié)果分析
在實(shí)驗(yàn)一中,我們發(fā)現(xiàn)該算法并不是在分布式的環(huán)境下性能就會更好,而是當(dāng)影像的數(shù)據(jù)量越大時,其在分布式的環(huán)境下的效率和性能就越快。在實(shí)驗(yàn)二中,我們對比了該算法在兩種不同的分布式計算框架下,其在遙感影像的吞吐效率和金字塔模型的構(gòu)建性能上的優(yōu)劣性。實(shí)驗(yàn)結(jié)果表明,面向Spark的遙感影像金字塔模型的構(gòu)建方法,在Spark框架下具有更好的效率和性能,尤其是在面對海量遙感影像的情況下,其對遙感影像的處理及影像金字塔的構(gòu)建上更能提高時間效率。
本文針對海量遙感影像的金字塔模型構(gòu)建性能低下的問題,提出了一種面向Spark計算框架的遙感影像金字塔模型的并行構(gòu)建算法及其分布式數(shù)據(jù)存儲組織結(jié)構(gòu),并據(jù)此設(shè)計開發(fā)出面向Spark框架的接口庫,實(shí)現(xiàn)了海量遙感影像在Spark中的并行計算處理,為Spark計算框架增加了處理地理空間數(shù)據(jù)格式的能力,解決了遙感影像的即時計算處理效率和分布式存儲優(yōu)化,提高了遙感影像的動態(tài)渲染性能。本文提出的方法可以有效的把不同區(qū)域、不同分辨率的遙感影像集成在Spark框架下,通過實(shí)驗(yàn)證明,面向Spark的遙感影像金字塔模型的并行構(gòu)建方法,更適用于海量遙感影像的快速處理,能極大地縮短金字塔模型構(gòu)建所需時間,加速遙感影像處理計算的性能,提高客戶端的渲染效率。
[1] 鄧雪清. 柵格型空間數(shù)據(jù)服務(wù)體系結(jié)構(gòu)與算法研究[J]. 測繪學(xué)報, 2003, 32(4):362.
[2] Viola I, Kanitsar A, Groller M E. Hardware-based nonlinear filtering and segmentation using high-level shading languages[C]//Proceedings of the 14th IEEE Visualization 2003 (VIS’03). IEEE Computer Society, 2003: 41.
[3] 劉坡, 龔建華.大規(guī)模遙感影像全球金字塔并行構(gòu)建方法[J/OL]. 武漢大學(xué)學(xué)報(信息科學(xué)版), 2016, 41(1): 117-122. http://www.cnki.net/kcms/detail/42.1676.TN.20150730.1305.002.html.
[4] 杜清運(yùn), 虞昌彬, 任福. 利用嵌套金字塔模型進(jìn)行瓦片地圖數(shù)據(jù)組織[J]. 武漢大學(xué)學(xué)報(信息科學(xué)版), 2011, 36(5): 564-567.
[5] 舒寧. 關(guān)于遙感影像處理智能系統(tǒng)的若干問題[J]. 武漢大學(xué)學(xué)報(信息科學(xué)版), 2011, 36(5): 527-530.
[6] 李德仁, 朱欣焰, 龔健雅. 從數(shù)字地圖到空間信息網(wǎng)格——空間信息多級網(wǎng)格理論思考[J]. 武漢大學(xué)學(xué)報(信息科學(xué)版), 2003, 28(6): 642-650.
[7] 周成虎, 駱劍承. 高分辨率衛(wèi)星遙感影像地學(xué)計算[M]. 北京:科學(xué)出版社, 2009.
[8] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[J]. Communications of the ACM, 2008, 51(1): 107-113.
[9] 劉義, 陳犖, 景寧, 等. 利用MapReduce進(jìn)行批量遙感影像瓦片金字塔構(gòu)建[J]. 武漢大學(xué)學(xué)報(信息科學(xué)版), 2013, 38(3): 278-282.
[10] Tsutsui A, Miyazaki T. ANT-on-YARDS: FPGA/MPU hybrid architecture for telecommunication data processing[J]. IEEE Transactions on Very Large Scale Integration Systems, 1998, 6(2):199-211.
[11] Apache Spark[OL]. http://spark.apache.org.
[12] Quinn S, Gahegan M. A predictive model for frequently viewed tiles in a web map[J]. Transactions in Gis, 2010, 14(2): 193-216.
[13] Li R, Guo R, Xu Z, et al. A prefetching model based on access popularity for geospatial data in a cluster-based caching system[J]. International Journal of Geographical Information Science, 2012, 26(10):1831-1844.
[14] Martín R G, Fernández J P D C, Pérez E V, et al. An OLS regression model for context-aware tile prefetching in a web map cache[J]. International Journal of Geographical Information Science, 2013, 27(3):614-632.
[15] Yu J, Wu L. On coding and decoding for sphere degenerated-octree grid[J]. Geography and Geo-Information Science, 2009, 25(1):5-9,31.
[16] 聶云峰, 周文生, 舒堅, 等. 基于Z曲線的瓦片地圖服務(wù)空間索引[J]. 中國圖象圖形學(xué)報, 2012,17(2):286-292.
[17] Lei X, Liu X, Zhang W, et al. A method for real-time accessing massive remote sensing image data in three-dimensional GIS[C]//Geoinformatics, 2010 18th International Conference on. IEEE, 2010:1-4.
[18] Kokoulin A. Methods for large image distributed processing and storage[C]//2013 IEEE International Conference on Computer as a Tool. IEEE, 2013:1606-1610.
[19] Xu D, Yuan Z, Yu T, et al. The research of remote sensing image segmentation and release which are based on tile map service[C]//Geomatics for Integrated Water Resources Management (GIWRM), 2012 International Symposium on. IEEE, 2012:1-4.
[20] Yoon C R, Kim H C, Lee K J, et al. Method and system for providing tile map service using image fusion: 8670614[P]. 2014-3-11.
[21] Sample J T, Ioup E. Tile-based geospatial information systems: principles and practices[M]. New York, NY, USA: Springer US,2010.
A PARALLEL CONSTRUCTION METHOD OF REMOTE SENSING IMAGE PYRAMID MODEL FOR SPARK
Huang Dongmei Yang Yuhao Mei Haibin Wang Zhenhua
(SchoolofInformation,ShanghaiOceanUniversity,Shanghai201306,China)
With the development of remote sensing technology and photogrammetry, the resolution of remote sensing image is increasing and the data is growing day by day. This has put forward higher requirements for fast and efficient processing of massive remote sensing image data, and how to store and process effectively and intelligently remote sensing data become the research hotspot. On the basis of analyzing the parallel construction of existing pyramid model, a Spark image pyramid model is designed. The model provides the image pyramid construction algorithm and the distributed storage structure of image data. The parallel processing of massive remote sensing image data in Spark is realized, and added with the ability of calculating and processing the spatial data format for Spark. The experimental results show that this method can achieve fast and efficient solution to the parallel construction of massive remote sensing image pyramid on Spark cloud platform, especially in the face of massive remote sensing image data, both from the pyramid to build performance or remote sensing images on the calculation efficiency, Spark is more advantages.
Remote sensing image Pyramid Spark algorithm Distribution
2016-03-08。國家自然科學(xué)基金項(xiàng)目(61272098);上海市自然科學(xué)基金項(xiàng)目(13ZR1455800);海洋大數(shù)據(jù)時空特征匹配關(guān)鍵技術(shù)及在海洋災(zāi)害中的示范應(yīng)用(15590501900)。黃冬梅,教授,主研領(lǐng)域:WebGIS,智能信息處理,輔助決策系統(tǒng)。楊雨浩,碩士生。梅海彬,副教授。王振華,博士。
TP391
A
10.3969/j.issn.1000-386x.2017.05.031