專利名稱:一種面向虛擬地球的柵格數(shù)據(jù)快速建庫方法
技術(shù)領(lǐng)域:
本發(fā)明涉及空間數(shù)據(jù)組織技術(shù)領(lǐng)域,尤其是涉及一種面向虛擬地球的柵格數(shù)據(jù)快速建庫方法。
背景技術(shù):
如今越來越多的空間數(shù)據(jù)以柵格的形式存儲(包括地形數(shù)據(jù)和影像數(shù)據(jù))。柵格數(shù)據(jù)成為了重要的數(shù)據(jù)源。隨著對地觀測技術(shù)的快速發(fā)展,人類能夠快速地獲取多時(shí)相、多波段、多分辨率的海量遙感影像數(shù)據(jù)。隨著分辨率的不斷提高,全球數(shù)據(jù)的數(shù)據(jù)量也在以驚人的速度增加,如僅福建省的30mX 30m分辨率的24位bmp格式的遙感影像就有700MB,若為 ImX Im分辨率,數(shù)據(jù)量將達(dá)到630GB。如何去存儲、組織和管理柵格數(shù)據(jù),如何高效地檢索、 顯示用戶感興趣的數(shù)據(jù),使柵格數(shù)據(jù)能夠更好地為實(shí)際應(yīng)用服務(wù)越來越受人們的關(guān)注。有關(guān)文獻(xiàn)高峰,安培浚.國際空間和對地觀測技術(shù)發(fā)展戰(zhàn)略新動向[J].遙感技術(shù)與應(yīng)用,2008,(06) =686-696.;張更新,張昭,朱江.全球?qū)Φ赜^測衛(wèi)星現(xiàn)狀及其產(chǎn)業(yè)發(fā)展綜述[J].數(shù)字通信世界,2009,(10) 72-75.;王恩泉.中國版Google Earth的空間數(shù)據(jù)組織與管理研究[D].北京中國測繪科學(xué)研究院,2007.。隨著Google Earth的發(fā)布與流行,虛擬地球技術(shù)進(jìn)入了人們的視野。虛擬地球能夠模擬顯示大范圍高分辨率的海量遙感影像數(shù)據(jù),不僅用于各個(gè)行業(yè)領(lǐng)域內(nèi)的專業(yè)應(yīng)用研究,也能夠滿足人們足不出戶即可感知整個(gè)地球。目前比較熱門虛擬地球產(chǎn)品除了 Google Earth,還有美國航天航空局(NASA)的WorldWind、Bing 3D和Skyline等,國內(nèi)不少公司與高校開展了相關(guān)研究,建立自主版權(quán)的虛擬數(shù)字地球平臺,如武漢大學(xué)測繪遙感信息工程國家重點(diǎn)實(shí)驗(yàn)室自主研制的虛擬地球系統(tǒng)GeoGlobe。有關(guān)文獻(xiàn)苗放,葉成名,劉瑞,孔祥生,李康榮,徐松浦,張遠(yuǎn)紅.新一代數(shù)字地球平臺與“數(shù)字中國”技術(shù)體系架構(gòu)探討[J].測繪科學(xué),2007,(06) 157-158. ;http:// news. 3snews.net/industry/20081225/6054.shtml。虛擬地球通常采用多分辨率瓦片金字塔結(jié)構(gòu)來組織柵格數(shù)據(jù),以提供快速的網(wǎng)絡(luò)調(diào)度和三維渲染。對柵格數(shù)據(jù)建庫的過程也就是構(gòu)建多分辨率金字塔的過程。通過構(gòu)建多分辨率金字塔,在多尺度金字塔結(jié)構(gòu)索引機(jī)制的配合下,可以快速獲取指定分辨率和范圍的柵格數(shù)據(jù),并適合于網(wǎng)絡(luò)傳輸和渲染處理,從而保證用戶根據(jù)視景內(nèi)的范圍,在任一角度瀏覽的數(shù)據(jù)只是金字塔的子集。面向多分辨率瓦片金字塔的數(shù)據(jù)組織與調(diào)度是虛擬地球系統(tǒng)得以實(shí)現(xiàn)網(wǎng)絡(luò)三維高效可視化的核心思想。如何對柵格數(shù)據(jù)快速構(gòu)建多分辨率的金字塔一直是人們研究的熱點(diǎn)。有關(guān)文獻(xiàn)龔健雅,李斌等.當(dāng)代GIS的若干理論與技術(shù).武漢武漢測繪科技大學(xué)出版社.;吳晨琛.GeoGlobe中尺度空間數(shù)據(jù)集管理機(jī)制[D].武漢武漢大學(xué),2008.。早期對金字塔的研究重點(diǎn)主要是如何提高成像質(zhì)量和傳輸。1979年,Tanimoto等人提出了均值金字塔。均值金字塔的思想簡單而直觀,但應(yīng)用到圖像的漸進(jìn)傳輸中卻能獲得很好的效果,引起了人們的關(guān)注。
有關(guān)文獻(xiàn)朱程輝,何勇,王金玲.基于小波金字塔的快速圖像匹配算法[J] 微計(jì)算機(jī)信息,2010,(10) 127-128.。同年,K. R. Sloan和Tanimoto又提出了 Reduced-sum金字塔的結(jié)構(gòu),該結(jié)構(gòu)克服了均值金字塔數(shù)據(jù)量過大的問題,將金字塔中的像素?cái)?shù)減少到與原始圖像相同。有關(guān)文獻(xiàn)劉國權(quán),李守軒.基于小波圖像金字塔的SSDA快速模板匹配算法[J], 科技廣場,2007,(11) 134-136.。但無論是均值金字塔還是Reduced-sum金字塔,其畫面質(zhì)量都不夠理想,圖像的混疊失真較大。于是在1983年,P. J. Burt等與J. Nao等提出了高斯-拉普拉斯金字塔結(jié)構(gòu),該結(jié)構(gòu)在采樣的同時(shí)利用高斯型低通濾波器對圖像進(jìn)行平滑,從而獲得良好的視覺效^ ο有關(guān)文獻(xiàn)丁素英.基于小波變換的Laplacian金字塔圖像數(shù)據(jù)壓縮[J].濰坊學(xué)院學(xué)報(bào),2009,(04) =34-36.;葉勤,張小虎,王棟.一種基于區(qū)域生長與空間形狀約束的高分辨率遙感圖像道路提取方法[J].遙感信息,2010,(02) =25-29.。而后的學(xué)者對如何對大數(shù)據(jù)量的金字塔進(jìn)行有效的存儲和管理進(jìn)行了研究。1989 年,又有學(xué)者提出了 Difference金字塔結(jié)構(gòu),通過將相鄰層的像素相減來去除相關(guān)性,從而減少金字塔的信息熵。有關(guān)文獻(xiàn)歐陽平,張玉方.形態(tài)學(xué)開閉運(yùn)算在居民地邊緣檢測中的應(yīng)用[J].測繪通報(bào),2009,(01) :40-41·。隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,計(jì)算機(jī)能提供足夠的空間存儲金字塔數(shù)據(jù),但是隨著分辨率的提升,即使覆蓋較小區(qū)域,一個(gè)遙感數(shù)據(jù)文件的尺寸也是比較大的,可能達(dá)到上十G,甚至上百G,從這樣的超大數(shù)據(jù)文件(1個(gè)或者多個(gè))構(gòu)建出多分辨率瓦片金字塔,其瓶頸在于讀操作。目前,一般采用的金字塔構(gòu)建方法是逐層逐塊構(gòu)建金字塔,對每層金字塔都獲取逐個(gè)像素的掃描行,然后將掃描行放人緩存,當(dāng)緩存已滿時(shí)采用鄰近法替換數(shù)據(jù)。其缺點(diǎn)是多次掃描原始遙感文件,計(jì)算一個(gè)頂層瓦片時(shí),涉及到原始遙感文件的較大范圍,I/O效率低下。
發(fā)明內(nèi)容
針對目前在虛擬地球系統(tǒng)中對柵格數(shù)據(jù)構(gòu)建多分辨率金字塔的方法無法高效處理大數(shù)據(jù)量的遙感影像,為了提高構(gòu)建多分辨率金字塔效率,本發(fā)明提供的技術(shù)方案是面向虛擬地球的一種針對海量柵格數(shù)據(jù)構(gòu)建金字塔的方法,主要是針對tif、img等可以存儲大數(shù)據(jù)量格式的文件。本發(fā)明的技術(shù)方案為一種面向虛擬地球的柵格數(shù)據(jù)快速建庫方法,包括以下步驟
步驟1,讀取原始遙感影像的信息,包括原始遙感影像的波段數(shù)bn、原始遙感影像的尺寸pwXph、原始遙感影像的影像分辨率pd以及原始遙感影像對應(yīng)的地理范圍(rw,rs, re, rn);定義瓦片結(jié)構(gòu)體,所述瓦片結(jié)構(gòu)體是用于在內(nèi)存中存儲瓦片數(shù)據(jù)并對瓦片進(jìn)行標(biāo)識的數(shù)據(jù)結(jié)構(gòu)體,
步驟2,待構(gòu)建金字塔的最頂層為分辨率最低的層次,標(biāo)記為第0層;根據(jù)原始遙感影
5像對應(yīng)的地理范圍(rw,rs, re, rn)和第0層瓦片分辨率yd W],計(jì)算出第0層瓦片的起止范圍,計(jì)算方式如下,
sr
= (rw+180+le-8) /yd
er
= (re+180+le-8) /yd
sc
= (rs+90+le-8) /yd
ec
= (rn+90+le-8) /yd
其中,sr
為第0層的開始行、er
為第0層的結(jié)束行、sc
為第0層的開始列、 ec
為第0層的結(jié)束列、e為數(shù)學(xué)參數(shù);
第0層瓦片分辨率yd
根據(jù)原始遙感影像的影像分辨率pd計(jì)算,計(jì)算公式如下, yd
=pdXtilesizeX2 廠1
其中,7為預(yù)設(shè)的待構(gòu)建金字塔的層數(shù),tilesize為預(yù)設(shè)的瓦片大??; 步驟3,比較第0層一個(gè)瓦片對應(yīng)原始遙感影像所需的內(nèi)存memvolumetO]與預(yù)設(shè)的可申請的內(nèi)存,預(yù)設(shè)的可申請內(nèi)存上限為ms個(gè)字節(jié),當(dāng)所需內(nèi)存大小memvolumetO]不大于可申請內(nèi)存上限ms時(shí)進(jìn)入步驟4,否則進(jìn)入步驟5 ;
所述第0層一個(gè)瓦片對應(yīng)原始遙感影像所需的內(nèi)存大小memvolumetO]根據(jù)原始遙感影像的波段數(shù)bn計(jì)算,計(jì)算公式如下, memvolume
=pixelvolume
Xbn
其中,pixelvolumetO]為第0層中存儲一個(gè)瓦片覆蓋原始遙感影像的其中一個(gè)波段的信息所需的內(nèi)存大小,根據(jù)第0層瓦片分辨率ydW]、原始遙感影像的尺寸pwXph和原始遙感影像對應(yīng)的地理范圍(rw,rs, re, rn)計(jì)算,計(jì)算公式如下,
pixelvolume
= (yd
Xpw/(re-rw) +0. 5) X ( yd
X ph/(rn-rs)+0. 5) Xsizeof(type)
其中type為存儲像素值的數(shù)據(jù)類型,sizeof ()是獲取數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)占有字節(jié)數(shù)的函數(shù);
步驟4,逐個(gè)處理第0層的每一個(gè)瓦片,處理方式為計(jì)算第0層中某瓦片在原始遙感影像的像素覆蓋范圍,并將該范圍對應(yīng)的原始影像數(shù)據(jù)的數(shù)據(jù)塊讀入到內(nèi)存,記為數(shù)據(jù)塊i, 數(shù)據(jù)塊i對應(yīng)的第0層瓦片及其四分后代瓦片的瓦片結(jié)構(gòu)體記為集合Sti,將集合Sti初始化;遍歷集合Sti,當(dāng)遍歷到集合Sti中的某個(gè)瓦片結(jié)構(gòu)體時(shí),在數(shù)據(jù)塊i中獲取相應(yīng)的數(shù)據(jù),通過插值獲得瓦片數(shù)據(jù)并編碼;
處理第0層的所有瓦片后進(jìn)入步驟6 ;
步驟5,設(shè)某一層中存儲一個(gè)瓦片對應(yīng)的原始影像所需的內(nèi)存大小為 1^1^01111^[1^61],存儲從第0層到該層上一層的所有瓦片結(jié)構(gòu)體所需的內(nèi)存大小是 tlstuvoIume [level],設(shè) memvolume [level] +tlstuvoIume [level]取值最小的層為內(nèi)存需求最小層wl ;進(jìn)行以下步驟,
步驟5. 1,求取內(nèi)存需求最小層wl,計(jì)算公式如下, wl=max (0, L(/-e_l)/2」)
其中e = Llog>/3)」,U代表向下取整沖表示第ο層瓦片個(gè)數(shù),根據(jù)步驟2所得第0層的開始行sr
、第0層的結(jié)束行er
、第0層的開始列sc
和第0層的結(jié)束列ec
計(jì)算,計(jì)算公式如下,
6m=(er
-sr
+l) X (ec
-sc
+1)
步驟5. 2,將第0層到第wl-1層的所有瓦片結(jié)構(gòu)體記為集合ts,將集合ts初始化,并加載到內(nèi)存之中;
步驟5. 3,逐個(gè)處理第wl層的每一個(gè)瓦片,處理方式為計(jì)算第wl層中某瓦片在原始遙感影像的像素覆蓋范圍,并將該范圍對應(yīng)的原始影像數(shù)據(jù)的數(shù)據(jù)塊讀入內(nèi)存,記為數(shù)據(jù)塊 i,數(shù)據(jù)塊i對應(yīng)的第wl層瓦片及其四分后代瓦片的瓦片結(jié)構(gòu)體記為集合Sti,將集合Sti初始化;遍歷集合Sti和集合ts,
當(dāng)遍歷到集合Sti中的某個(gè)瓦片結(jié)構(gòu)體時(shí),在數(shù)據(jù)塊i中獲取相應(yīng)的數(shù)據(jù),通過插值獲得瓦片數(shù)據(jù)并編碼;
當(dāng)遍歷到集合ts中的某個(gè)瓦片結(jié)構(gòu)體時(shí),判斷瓦片的覆蓋范圍是否包括數(shù)據(jù)塊i,如果包括則插值獲得該瓦片內(nèi)相應(yīng)部分區(qū)域的瓦片數(shù)據(jù),在獲得該瓦片內(nèi)所有瓦片數(shù)據(jù)后進(jìn)行編碼;
處理第wl層的所有瓦片后進(jìn)入步驟6 ; 步驟6,輸出多分辨率金字塔。而且,步驟4和步驟5中,設(shè)置瓦片處理線程和瓦片計(jì)算線程兩類線程,并開辟兩塊內(nèi)存區(qū)間主緩存和備用緩存來存儲數(shù)據(jù)塊;
瓦片處理線程將原始遙感影像的數(shù)據(jù)塊讀入備用緩存,并在瓦片計(jì)算線程遍歷完瓦片結(jié)構(gòu)體后,將備用緩存設(shè)置為主緩存,并繼續(xù)將下一個(gè)數(shù)據(jù)塊讀入備用緩存; 瓦片計(jì)算線程讀取主緩存內(nèi)的數(shù)據(jù)塊,遍歷瓦片結(jié)構(gòu)體,插值計(jì)算瓦片數(shù)據(jù)。而且,瓦片結(jié)構(gòu)體包括變量 count、status、level、row、col、pixelSpan 禾口指針 pTileBmp,其中變量count標(biāo)識瓦片中有效值的個(gè)數(shù)、變量status標(biāo)識瓦片狀態(tài)、變量 level標(biāo)識瓦片所在的層數(shù)、變量row標(biāo)識瓦片的行號、變量col標(biāo)識瓦片的列號、變量 PixelSpan標(biāo)識瓦片中每個(gè)像素的分辨率,指針pTileBmp指向瓦片數(shù)據(jù)所在內(nèi)存位置。本發(fā)明的優(yōu)勢在于從中間層(算法對于內(nèi)存的需求是最小的層)開始構(gòu)建金字塔, 打破了以往逐層構(gòu)建的局限性,僅需掃描原始數(shù)據(jù)文件一次,減少了 1/0操作次數(shù),消除了處理海量數(shù)據(jù)時(shí)讀取數(shù)據(jù)的瓶頸問題,這對于超大文件來說提高了金字塔構(gòu)建的效率。本發(fā)明還充分利用了現(xiàn)代計(jì)算機(jī)的多處理器多核,可并行計(jì)算的特點(diǎn);采用瓦片處理線程和瓦片計(jì)算線程兩類線程同時(shí)運(yùn)行,充分利用了系統(tǒng)資源,通過配置多個(gè)瓦片計(jì)算線程,使程序讀數(shù)據(jù)和寫數(shù)據(jù)的速度相匹配,實(shí)現(xiàn)了讀寫操作的同步性,節(jié)省了讀寫操作相互等待的時(shí)間。
圖1為本發(fā)明實(shí)施例的流程圖2為本發(fā)明實(shí)施例的雙線性內(nèi)插示意圖; 圖3為本發(fā)明實(shí)施例的瓦片時(shí)空統(tǒng)一編碼示意圖。圖4為本發(fā)明實(shí)施例的數(shù)據(jù)處理流程圖。
具體實(shí)施例方式
為便于理解本發(fā)明技術(shù)方案起見,首先說明全球多分辨率金字塔全球多分辨率金字塔是基于球面的一種可以無限細(xì)分,但又不改變形狀的地球體擬合格網(wǎng),當(dāng)細(xì)分到一定程度時(shí),可以達(dá)到模擬地球表面的目的。本發(fā)明中采用的是通過等經(jīng)緯度格網(wǎng)劃分的全球多分辨率金字塔模型。在柵格數(shù)據(jù)金字塔中,按照全球等經(jīng)緯度格網(wǎng)劃分,每一層被裁切成統(tǒng)一形狀、大小的數(shù)據(jù)塊,這樣的一個(gè)數(shù)據(jù)塊稱之為瓦片。這種全球多分辨率金字塔非常適合用來組織和管理多分辨率的海量衛(wèi)星影像數(shù)據(jù),因?yàn)樗裱韵乱?guī)律
1)全球地理坐標(biāo)的經(jīng)度范圍為[-180°,+180°],緯度范圍為[-90°,+90°];
2)第k層金字塔的分辨率為第(k+Ι)層金字塔的2倍;
3)在任意層內(nèi),橫向和縱向金字塔瓦片的數(shù)目之比為2 1 ;
4)金字塔瓦片的編碼順序由左到右,由下到上;
根據(jù)上述規(guī)則,很容易計(jì)算出每層瓦片的個(gè)數(shù),同樣也能快速計(jì)算出給定經(jīng)緯度的點(diǎn)落在哪一個(gè)瓦片內(nèi)。例如,已知一個(gè)點(diǎn)的經(jīng)緯度為 (足勸,該點(diǎn)在第k層金字塔的行號RowNO和列號ColNo可以通過下面的公式計(jì)算出 RowNo= L ((0+ 90) / (180/2"")」mod f ColNo = L ((』+ 180) / (180/2"")」mod 2α+1) 其中U代表向下取整,mod是模運(yùn)算。相反的,知道一個(gè)第k層的瓦片的行列號(X,Y),同樣也可以計(jì)算出瓦片的經(jīng)度范圍west east和諱度范圍south north
west = ((χ mod 2(k+1)) X 180/2k) - 180 east = west + 180/2k south = ((y mod 2k) X 180/2k) - 90 north = south + 180/2k 因此,只需給出待構(gòu)建金字塔的層次,每層的瓦片劃分是已知的。本發(fā)明流程可采用計(jì)算機(jī)軟件技術(shù)實(shí)現(xiàn)自動運(yùn)行。以下結(jié)合附圖和實(shí)施例詳細(xì)說明本發(fā)明技術(shù)方案,參見圖1,實(shí)施例流程如下
步驟1、首先進(jìn)行預(yù)處理,包括統(tǒng)一空間參考、無效域去除和讀元數(shù)據(jù)。實(shí)施例將WGS-84坐標(biāo)系作為統(tǒng)一的空間基準(zhǔn),這樣可以保證多源地理空間數(shù)據(jù)的無縫瀏覽,也提高了數(shù)據(jù)處理的效率。具體實(shí)施時(shí),利用現(xiàn)有Erdas、Envi等遙感軟件對遙感影像進(jìn)行處理,即可將其投影坐標(biāo)轉(zhuǎn)換成WGS-84坐標(biāo)系。無效域的去除有兩種途徑,即無效值過濾與多邊形裁剪。無效值過濾方法比較簡單高效,在需要去除成像不理想的區(qū)域時(shí)則可使用多邊形裁剪。多邊形生成可以采用手工勾勒方式,在手工勾勒的基礎(chǔ)上還可以進(jìn)行精細(xì)調(diào)位。實(shí)施例中,遙感影像成像效果較好, 僅僅影像邊緣有一些無效區(qū)域,可以直接設(shè)定無效值,采用無效值過濾的方法進(jìn)行無效域去除。實(shí)施例讀取原始遙感影像(即元數(shù)據(jù))的信息,通過調(diào)用Gdal開源庫讀取遙感影像的原始數(shù)據(jù)文件信息實(shí)現(xiàn),包括原始遙感影像的波段數(shù)bn、原始遙感影像的尺寸pwXph、 原始遙感影像的影像分辨率Pd以及原始遙感影像對應(yīng)的地理范圍(rw,rs, re, rn)。實(shí)施例采用了現(xiàn)有技術(shù)中的 Gdal 庫(Geospatial Data Abstraction Library),Gdal 庫是一個(gè)在X/MIT許可協(xié)議下的開源柵格空間數(shù)據(jù)轉(zhuǎn)換庫。它利用抽象數(shù)據(jù)模型來表達(dá)所支持的各種文件格式,能夠讀取、寫入、轉(zhuǎn)換、處理各種柵格數(shù)據(jù)格式,并且是跨平臺的。
實(shí)施例定義瓦片結(jié)構(gòu)體 typedef struct tagMemTile{
int count;//定義count為整形變量 int status;//定義status為整形變量 int level;//定義level為整形變量 int row;//定義row為整形變量 int col;//定義col為整形變量 double pixelSpan;// 定義 pixelSpan 為浮數(shù) FIBITMAP* pTileBmp;// 定義 pTiIeBmp 為指向 FIBITMAP 的指針 }MemTiIe;
其中tagMemTile為結(jié)構(gòu)體名稱,MemTile為結(jié)構(gòu)體tagMemTile的變量名,count為瓦片中有效值的個(gè)數(shù),level是瓦片所在的層數(shù),row是瓦片的行號,col的瓦片的列號, pixelSpan是瓦片中一個(gè)像素的分辨率,F(xiàn)IBITMAP是FreeImage中用來存儲瓦片數(shù)據(jù)的結(jié)構(gòu),pTileBmp是指向這個(gè)結(jié)構(gòu)的指針;status為瓦片狀態(tài),可用于標(biāo)識內(nèi)存需求最小層的上層瓦片還是下層的四分瓦片以及瓦片是否已經(jīng)處理完。步驟2,待構(gòu)建金字塔的最頂層為分辨率最低的層次,標(biāo)記為第O層;根據(jù)原始遙感影像對應(yīng)的地理范圍(rw,rs, re, rn)和第O層瓦片分辨率yd W],計(jì)算出第O層瓦片的起止范圍,計(jì)算方式如下,
sr
= (rw+180+le-8) /yd
er
= (re+180+le-8) /yd
sc
= (rs+90+le-8) /yd
ec
= (rn+90+le-8) /yd
其中,sr
為第O層的開始行、er
為第O層的結(jié)束行、sc
為第O層的開始列、 ec
為第O層的結(jié)束列、e為數(shù)學(xué)參數(shù)。實(shí)施例中,第O層瓦片分辨率yd
根據(jù)原始遙感影像的影像分辨率pd計(jì)算,計(jì)算公式如下,
yd
=pdXtilesizeX2 廠1
其中,7為預(yù)設(shè)的待構(gòu)建金字塔的層數(shù),tilesize為預(yù)設(shè)的瓦片大小,即一個(gè)瓦片包含的像素?cái)?shù)目。步驟3,比較第O層一個(gè)瓦片對應(yīng)原始遙感影像所需的內(nèi)存memvolumetO]與預(yù)設(shè)的可申請的內(nèi)存,預(yù)設(shè)的可申請內(nèi)存上限為ms個(gè)字節(jié),當(dāng)所需內(nèi)存大小memvolumetO]不大于可申請內(nèi)存上限ms時(shí)進(jìn)入步驟4,否則說明第O層中一個(gè)瓦片的相關(guān)數(shù)據(jù)不可以完全載入內(nèi)存,進(jìn)入步驟5。此時(shí)第O層瓦片的瓦片結(jié)構(gòu)體的所需內(nèi)存大小可以忽略。因此實(shí)施例中,第O層存儲一個(gè)瓦片對應(yīng)原始遙感影像所需的內(nèi)存大小memvolumetO]根據(jù)原始遙感影像的波段數(shù)bn計(jì)算,計(jì)算公式如下,
memvolume
=pixelvolume
Xbn
其中,pixelvolumetO]為第0層中存儲一個(gè)瓦片覆蓋原始遙感影像的其中一個(gè)波段的信息所需的內(nèi)存大小,根據(jù)第0層瓦片分辨率ydW]、原始遙感影像的尺寸pwXph和原始遙
9感影像對應(yīng)的地理范圍(rw,rs, re, rn)計(jì)算,計(jì)算公式如下,
pixelvolume
= (yd
Xpw/(re-rw)+0.5)X ( yd
Xph/(rn-rs)+0.5) Xsizeof(type)
其中type為存儲像素值的數(shù)據(jù)類型,sizeof ()是獲取數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)占有字節(jié)數(shù)的函數(shù);
具體實(shí)施時(shí),內(nèi)存上限ms —般可設(shè)到500M,即500X1024X1024個(gè)字節(jié)。步驟4,逐個(gè)處理第0層的每一個(gè)瓦片,處理方式為計(jì)算第0層中某瓦片在原始遙感影像的像素覆蓋范圍,并將該范圍對應(yīng)的原始影像數(shù)據(jù)的數(shù)據(jù)塊讀入到內(nèi)存,記為數(shù)據(jù)塊i,數(shù)據(jù)塊i對應(yīng)的第0層瓦片及其四分后代瓦片的瓦片結(jié)構(gòu)體記為集合Sti,將集合Sti 初始化;遍歷集合Sti,當(dāng)遍歷到集合Sti中的某個(gè)瓦片結(jié)構(gòu)體時(shí),在數(shù)據(jù)塊i中獲取相應(yīng)的數(shù)據(jù),通過插值獲得瓦片數(shù)據(jù)并編碼;
處理第0層的所有瓦片后進(jìn)入步驟6。為便于實(shí)施參考起見,提供實(shí)施例計(jì)算第0層中某瓦片在原始遙感影像的像素覆蓋范圍具體實(shí)現(xiàn)方法,設(shè)瓦片對應(yīng)的地理范圍為(m_RgnWest,m_RgnEast, m_RgnSouth, m_RgnN0rth),該瓦片對應(yīng)原始影像的像素范圍為(xw,xe,ys,yn),步驟1中讀取遙感影像的元數(shù)據(jù)中遙感影像的左下角地面坐標(biāo)為(x0,y0),遙感影像的右上角地面坐標(biāo)為 (xl,yl),遙感影像像素在行方形上的地面分辨率為Dr,遙感影像像素在列方形上的地面分辨率為Dc,計(jì)算公式如下
Xw=( m_Rgnffest - x0 )/ Dc + 0. 5f ys= (yl - m_RgnSouth)/ Dr + 0. 5f xe= ( m_RgnEast - xO )/ Dc + 0. 5f yn=(yl - m_RgnNorth)/ Dr + 0. 5f 其中,f表示0.5是float類型。第0層為分辨率最低層,第0層一個(gè)瓦片對應(yīng)遙感影像的數(shù)據(jù)量大于其他各層。因此如果第0層的一個(gè)瓦片可以讀入內(nèi)存,則只需逐個(gè)計(jì)算第0層的每一個(gè)瓦片及其所有四分瓦片,得到各瓦片中所有像素值,所得結(jié)果寫入數(shù)據(jù)集中。步驟5,在第0層一個(gè)瓦片對應(yīng)遙感影像不能完全載入內(nèi)存時(shí),實(shí)施例計(jì)算出所需內(nèi)存容量最小的那一層,記為wl。即假設(shè)某一層中存儲一個(gè)瓦片對應(yīng)的原始遙感影像所需的內(nèi)存大小為memvolumetlevel],存儲從第0層到該層上一層的所有瓦片結(jié)構(gòu)體所需的內(nèi)存大小是 tlstuvolume [level],設(shè) memvoIume [level]+tlstuvoIume [level]取值最小的層為內(nèi)存需求最小層wl。倘若實(shí)施時(shí),發(fā)現(xiàn)memvolume [level]+tlstuvolume [level]仍大于內(nèi)存上限ms,可以設(shè)計(jì)此時(shí)跳出程序,提示用戶修改申請的緩存值。基于這種內(nèi)存需求最小層設(shè)定,執(zhí)行以下步驟
步驟5. 1,求取內(nèi)存需求最小層wl。從第wl層開始計(jì)算多分辨率金字塔,算法對于內(nèi)存的需求是最小的。這樣可以根據(jù)設(shè)置的緩存大小確定從哪一層開始構(gòu)建,實(shí)施例中Wl=Hiax(0,L a-e-l)/2」)
其中e = Llog>/3)」,U代表向下取整沖表示第ο層瓦片個(gè)數(shù),根據(jù)步驟2所得第0層的開始行sr
、第0層的結(jié)束行er
、第0層的開始列sc
和第0層的結(jié)束列ec
計(jì)算,計(jì)算公式如下,m=(er
-sr
+l) X (ec
-sc
+1)
為便于理解本發(fā)明技術(shù)方案起見,下面給出了實(shí)施例中求取內(nèi)存需求最小層層數(shù)方式的具體說明
設(shè)原始遙感影像有b個(gè)波段,輸出的金字塔有/層,自上而下,第0層(分辨率最低層) 有《(!11彡1)個(gè)瓦片,第廠1層(分辨率最高層)則有個(gè)瓦片,總共有(m/3) X (47-1) 個(gè)瓦片。每個(gè)瓦片像素大小是&如果從第(/-1)層開始,即緩存第(/-1)層以上所有瓦片結(jié)構(gòu)體,計(jì)為 fe/3) X(P^-I),則所需內(nèi)存為
Memvolume-I [7-1] +tlstuvolume U~l]=bXs2 X (Qn/3) X (4α_1)-1)) + bXs2X4° =bXs2(ipi/ ,) (4『"-Ι) + 4°)
如果從第(/-2)層開始,即緩存從第(/-2)層以上的所有瓦片,則所需內(nèi)存為 memvolume [7-2] +tlstuvolume [7-2] =bXs2{ Qn/3) (4α_2)-1) + 41) 如果從第左(0彡左彡7-1)層開始,即緩存從第左層以上的所有瓦片,則所需內(nèi)存為 Tk = memvolumeM+tlstuvolumeM=/ X52X (Qn/3) (Ai-I) + 4α+υ)。Tk+1_Tk = 3XbXs2X (Qn/3) Xa+2)),可見7;"和厶大小由Zli = / X(7+2) 來決定,其中,z = /3。設(shè)4e </K4(e+1),由于 彡l,e彡-1,分兩種情況來討論
1) (he)彡2,此時(shí),Zli彡4(時(shí))_4時(shí)-2) ^=0,即‘恒為正值,因此左=0
時(shí)內(nèi)存需求最小。2)a_e)>2,此時(shí)
設(shè)、l-e-2、=2h, Ah = nX4A-4(J-A_2) 彡 4(e+A)~4 (e+li=0, Ah^1 = / X< 4(e+A)-4(e+A+1)<0,即T她彡TkKT^iy因而々= 力時(shí)內(nèi)存需求最小。設(shè)(/-e_2)=2A+l,zlA+1= /7χ4( +1)-4(Μ 彡 4(e+A+1)-4 (e+h)>Q,Ah = X 4A_4(7女2) < 4fe+A+1)-4(e+A+1)=0jpr_ 7;,因而仁0H1)時(shí)內(nèi)存需求最小。綜上所述,A=max(0, L (Pe-I)/2」)時(shí),算法對內(nèi)存的需求最小,其中e = Llog40 /3)」。當(dāng)《=1,即第0層僅有1個(gè)瓦片,此時(shí)左=max(0,>^/2」)=1_//2」,即在等于>"http://2」時(shí)內(nèi)存需求最小。計(jì)算出內(nèi)存需求最小層wl= max(0, L (/-e_l)/2」)后,就可以按對第0層到第 wl-1層、第wl層到第7 -1層分別按兩種不同方式計(jì)算各層瓦片的瓦片數(shù)據(jù)。對第0層到第wl-1層,是將瓦片結(jié)構(gòu)體初始化后加載到內(nèi)存中,每從原始數(shù)據(jù)文件讀出一個(gè)數(shù)據(jù)塊, 遍歷這些瓦片如果某瓦片中有像素所需數(shù)據(jù)位于該數(shù)據(jù)塊內(nèi),插值計(jì)算出該像素的值。而對于第《1層及該層以下的瓦片則和步驟4處理方式一致。實(shí)施例采用步驟5. 2和步驟5. 3 實(shí)現(xiàn)。步驟5. 2,將第0層到第wl-1層的所有瓦片結(jié)構(gòu)體記為集合ts,將集合ts初始化, 并加載到內(nèi)存之中。例如第0層到第wl-1層某瓦片pMemTile的層行列為(k,rrl,ccl),瓦片分辨率為Dc,瓦片大小為tilesize,則初始化該瓦片為
pMemTile=new MemTile ; //創(chuàng)建一個(gè)新的瓦片結(jié)構(gòu)體 pMemTile_>count=0 ; //將 count 初始化為0 pMemTile->level=k;//對層號進(jìn)行賦值pMemTile->row=rrl ;//對行號進(jìn)行賦值 pMemTile->col=ccl;// 對列號進(jìn)行賦值 pMemTile->pixelSpan=Dc/tilesize;// 計(jì)算瓦片的像素分辨率并賦值給pixelSpan pMemTi 1 e->pTi 1 eBmp=FreeImage_ Allocate (tilesize, tilesize, 32) ;//為 pTileBmp 分配內(nèi)存 pMemTile_>status=l ;// 標(biāo)識該瓦片為上層瓦片
步驟5. 3,逐個(gè)處理第wl層的每一個(gè)瓦片,處理方式為計(jì)算第wl層中某瓦片在原始遙感影像的像素覆蓋范圍,并將該范圍對應(yīng)的原始影像數(shù)據(jù)的數(shù)據(jù)塊讀入內(nèi)存,記為數(shù)據(jù)塊 i,數(shù)據(jù)塊i對應(yīng)的第wl層瓦片及其四分后代瓦片的瓦片結(jié)構(gòu)體記為集合Sti,將集合Sti初始化;遍歷集合Sti和集合ts,
當(dāng)遍歷到集合Sti中的瓦片結(jié)構(gòu)體時(shí),在數(shù)據(jù)塊i中獲取相應(yīng)的數(shù)據(jù),通過插值獲得瓦片數(shù)據(jù)并編碼;
當(dāng)遍歷到集合ts中的瓦片結(jié)構(gòu)體時(shí),判斷瓦片的覆蓋范圍是否包括數(shù)據(jù)塊i,如果包括則插值獲得該瓦片內(nèi)相應(yīng)部分區(qū)域的瓦片數(shù)據(jù),在獲得該瓦片內(nèi)所有瓦片數(shù)據(jù)后進(jìn)行編碼。當(dāng)然,不包括則不進(jìn)行任何處理。例如第wl層到第/ -1層某瓦片PMemTile的層行列為(k,rrl,ccl),瓦片分辨率為Dc,瓦片大小為tilesize,則初始化該瓦片為
pMemTile=new MemTile ; //創(chuàng)建一個(gè)新的瓦片結(jié)構(gòu)體 pMemTile_>count=0 ; //將 count 初始化為0 pMemTile->level=k;//對層號進(jìn)行賦值pMemTile_>row=rrl ;//對行號進(jìn)行賦值 pMemTile->col=ccl;//對列號進(jìn)行賦值 pMemTile->pixelSpan=Dc/tilesize ;// 計(jì)算瓦片的像素分辨率并賦值給pixelSpan pMemTile_>pTiIeBmp=NULL ;//暫不為pTiIeBmp分配內(nèi)存pMemTile->StatuS=-l;//標(biāo)識該瓦片為wl層或下層瓦片
計(jì)算第層中某瓦片在原始遙感影像的像素覆蓋范圍,與步驟4計(jì)算第0層中某瓦片在原始遙感影像的像素覆蓋范圍具體實(shí)現(xiàn)方法類似
設(shè)第wl層某瓦片對應(yīng)的地理范圍為(m_RgnWest, m_RgnEast, m_RgnSouth, m_ RgnNorth),該瓦片對應(yīng)原始影像的像素范圍為(xw,xe, ys,yn),步驟1中讀取遙感影像的元數(shù)據(jù)中遙感影像的左下角地面坐標(biāo)為(xO,yO),遙感影像的右上角地面坐標(biāo)為 (xl,yl),遙感影像像素在行方形上的地面分辨率為Dr,遙感影像像素在列方形上的地面分辨率為Dc,計(jì)算公式如下
Xw=( m_Rgnffest - xO )/ Dc + 0. 5f ys= (yl - m_RgnSouth)/ Dr + 0. 5f xe=( m_RgnEast - xO )/ Dc + 0. 5f yn= (yl - m_RgnNorth)/ Dr + 0. 5f 其中,f表示0.5是float類型。當(dāng)遍歷完所有第wl層的瓦片后,即將原始影像掃描一遍,0到wl-Ι層的瓦片數(shù)據(jù)也就計(jì)算完畢(如果瓦片覆蓋的范圍超出了原始影像的范圍,則以無效值處理)。對于集合 Sti中的瓦片結(jié)構(gòu)體,通過插值獲得瓦片數(shù)據(jù)后可以立即編碼;對于集合ts中的瓦片結(jié)構(gòu)體,因?yàn)槊總€(gè)數(shù)據(jù)塊可能只對應(yīng)瓦片內(nèi)部分區(qū)域,可以將第wl層的所有瓦片對應(yīng)的影像數(shù)據(jù)掃描一遍,即對原始文件掃描一遍后,再進(jìn)行編碼。為了便于提高瓦片的處理,具體實(shí)施時(shí)可以設(shè)定當(dāng)0到wl-Ι層的某瓦片處理完后,將status的值設(shè)為0,之后便不用計(jì)算這個(gè)瓦片是否是在目前內(nèi)存中數(shù)據(jù)塊的范圍內(nèi)了。
為了提高處理效率,實(shí)施例在步驟4和步驟5中,設(shè)置瓦片處理線程和瓦片計(jì)算線程兩類線程,并開辟兩塊內(nèi)存區(qū)間主緩存和備用緩存來存儲數(shù)據(jù)塊;
瓦片處理線程將原始遙感影像的數(shù)據(jù)塊讀入備用緩存,并在瓦片計(jì)算線程遍歷完瓦片結(jié)構(gòu)體后,將備用緩存設(shè)置為主緩存,并繼續(xù)將下一個(gè)數(shù)據(jù)塊讀入備用緩存; 瓦片計(jì)算線程讀取主緩存內(nèi)的數(shù)據(jù)塊,遍歷瓦片結(jié)構(gòu)體,插值計(jì)算瓦片數(shù)據(jù)。根據(jù)硬件的條件不同,通過調(diào)整瓦片計(jì)算線程的數(shù)目,使程序讀數(shù)據(jù)和寫數(shù)據(jù)的速度相匹配,實(shí)現(xiàn)了讀寫操作的同步性,節(jié)省了讀寫操作相互等待的時(shí)間。步驟4和5中,具體插值獲得瓦片數(shù)據(jù)實(shí)現(xiàn)可采用現(xiàn)有技術(shù),為便于實(shí)施參考起見,提供實(shí)施例的插值處理方法說明如下
首先根據(jù)瓦片地理范圍,計(jì)算其像素范圍,將該范圍的像素通過Gdal開源庫讀入內(nèi)存。創(chuàng)建的金字塔瓦片里每個(gè)點(diǎn)不可能和全球基礎(chǔ)數(shù)據(jù)文件中的每個(gè)像素一一對應(yīng),所以必須對其進(jìn)行重采樣。遙感影像采用最近鄰采樣算法,直接取與P(U)點(diǎn)位置最近像元F 的像素值為所需點(diǎn)的像素值作為采樣值,即m=nm \為最鄰近點(diǎn),其影像坐標(biāo)值為(、-,徹)
權(quán)利要求
1. 一種面向虛擬地球的柵格數(shù)據(jù)快速建庫方法,其特征在于,包括以下步驟 步驟1,讀取原始遙感影像的信息,包括原始遙感影像的波段數(shù)bn、原始遙感影像的尺寸pwXph、原始遙感影像的影像分辨率pd以及原始遙感影像對應(yīng)的地理范圍(rw,rs, re, rn);定義瓦片結(jié)構(gòu)體,所述瓦片結(jié)構(gòu)體是用于在內(nèi)存中存儲瓦片數(shù)據(jù)并對瓦片進(jìn)行標(biāo)識的數(shù)據(jù)結(jié)構(gòu)體;步驟2,待構(gòu)建金字塔的最頂層為分辨率最低的層次,標(biāo)記為第0層;根據(jù)原始遙感影像對應(yīng)的地理范圍(rw,rs, re, rn)和第0層瓦片分辨率yd W],計(jì)算出第0層瓦片的起止范圍,計(jì)算方式如下,sr
= (rw+180+le-8) /yd
er
= (re+180+le-8) /yd
sc
= (rs+90+le-8) /yd
ec
= (rn+90+le-8) /yd
其中,sr
為第0層的開始行、er
為第0層的結(jié)束行、sc
為第0層的開始列、 ec
為第0層的結(jié)束列、e為數(shù)學(xué)參數(shù);第0層瓦片分辨率yd
根據(jù)原始遙感影像的影像分辨率pd計(jì)算,計(jì)算公式如下, yd
=pdXtilesizeX2 廠1其中,7為預(yù)設(shè)的待構(gòu)建金字塔的層數(shù),tilesize為預(yù)設(shè)的瓦片大??; 步驟3,比較第0層一個(gè)瓦片對應(yīng)原始遙感影像所需的內(nèi)存memvolumetO]與預(yù)設(shè)的可申請的內(nèi)存,設(shè)預(yù)設(shè)的可申請內(nèi)存上限為ms個(gè)字節(jié),當(dāng)所需內(nèi)存大小memvolumetO]不大于可申請內(nèi)存上限ms時(shí)進(jìn)入步驟4,否則進(jìn)入步驟5 ;所述第0層一個(gè)瓦片對應(yīng)原始遙感影像所需的內(nèi)存大小memvolumetO]根據(jù)原始遙感影像的波段數(shù)bn計(jì)算,計(jì)算公式如下, memvolume
=pixelvolume
Xbn其中,pixelvolumetO]為第0層中存儲一個(gè)瓦片覆蓋原始遙感影像的其中一個(gè)波段的信息所需的內(nèi)存大小,根據(jù)第0層瓦片分辨率ydW]、原始遙感影像的尺寸pwXph和原始遙感影像對應(yīng)的地理范圍(rw,rs, re, rn)計(jì)算,計(jì)算公式如下,pixelvolume
= (yd
Xpw/(re-rw)+0.5)X ( yd
Xph/(rn-rs)+0.5) Xsizeof(type)其中type為存儲像素值的數(shù)據(jù)類型,sizeof ()是獲取數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)占有字節(jié)數(shù)的函數(shù);步驟4,逐個(gè)處理第0層的每一個(gè)瓦片,處理方式為計(jì)算第0層中某瓦片在原始遙感影像的像素覆蓋范圍,并將該范圍對應(yīng)的原始影像數(shù)據(jù)的數(shù)據(jù)塊讀入到內(nèi)存,記為數(shù)據(jù)塊i, 數(shù)據(jù)塊i對應(yīng)的第0層瓦片及其四分后代瓦片的瓦片結(jié)構(gòu)體記為集合Sti,將集合Sti初始化;遍歷集合Sti,當(dāng)遍歷到集合Sti中的某個(gè)瓦片結(jié)構(gòu)體時(shí),在數(shù)據(jù)塊i中獲取相應(yīng)的數(shù)據(jù),通過插值獲得瓦片數(shù)據(jù)并編碼;處理第0層的所有瓦片后進(jìn)入步驟6 ;步驟5,設(shè)某一層中存儲一個(gè)瓦片對應(yīng)的原始影像所需的內(nèi)存大小為 1^1^01111^[1^61],存儲從第0層到該層上一層的所有瓦片結(jié)構(gòu)體所需的內(nèi)存大小是tlstuvoIume [level],設(shè) memvoIume [level]+tlstuvoIume [level]取值最小的層為內(nèi)存需求最小層wl ;進(jìn)行以下步驟,步驟5. 1,求取內(nèi)存需求最小層wl,計(jì)算公式如下,wl=max (O, L(/-e_l)/2」)其中e = Llog>/3)」,U代表向下取整沖表示第ο層瓦片個(gè)數(shù),根據(jù)步驟2所得第O層的開始行sr
、第O層的結(jié)束行er
、第O層的開始列sc
和第O層的結(jié)束列ec
計(jì)算,計(jì)算公式如下,m= (er
-sr
+1) * (ec
-sc
+1)步驟5. 2,將第0層到第wl-1層的所有瓦片結(jié)構(gòu)體記為集合ts,將集合ts初始化,并加載到內(nèi)存之中;步驟5. 3,逐個(gè)處理第wl層的每一個(gè)瓦片,處理方式為計(jì)算第wl層中某瓦片在原始遙感影像的像素覆蓋范圍,并將該范圍對應(yīng)的原始影像數(shù)據(jù)的數(shù)據(jù)塊讀入內(nèi)存,記為數(shù)據(jù)塊 i,數(shù)據(jù)塊i對應(yīng)的第wl層瓦片及其四分后代瓦片的瓦片結(jié)構(gòu)體記為集合Sti,將集合Sti初始化;遍歷集合Sti和集合ts,當(dāng)遍歷到集合Sti中的某個(gè)瓦片結(jié)構(gòu)體時(shí),在數(shù)據(jù)塊i中獲取相應(yīng)的數(shù)據(jù),通過插值獲得瓦片數(shù)據(jù)并編碼;當(dāng)遍歷到集合ts中的某個(gè)瓦片結(jié)構(gòu)體時(shí),判斷瓦片的覆蓋范圍是否包括數(shù)據(jù)塊i,如果包括則插值獲得該瓦片內(nèi)相應(yīng)部分區(qū)域的瓦片數(shù)據(jù),在獲得該瓦片內(nèi)所有瓦片數(shù)據(jù)后進(jìn)行編碼;處理第wl層的所有瓦片后進(jìn)入步驟6 ;步驟6,輸出多分辨率金字塔。
2.如權(quán)利要求1所述面向虛擬地球的柵格數(shù)據(jù)快速建庫方法,其特征在于步驟4和步驟5中,設(shè)置瓦片處理線程和瓦片計(jì)算線程兩類線程,并開辟兩塊內(nèi)存區(qū)間主緩存和備用緩存來存儲數(shù)據(jù)塊;瓦片處理線程將原始遙感影像的數(shù)據(jù)塊讀入備用緩存,并在瓦片計(jì)算線程遍歷完瓦片結(jié)構(gòu)體后,將備用緩存設(shè)置為主緩存,并繼續(xù)將下一個(gè)數(shù)據(jù)塊讀入備用緩存;瓦片計(jì)算線程讀取主緩存內(nèi)的數(shù)據(jù)塊,插值計(jì)算瓦片數(shù)據(jù)。
3.如權(quán)利要求1或2所述面向虛擬地球的柵格數(shù)據(jù)快速建庫方法,其特征在于瓦片結(jié)構(gòu)體包括變量 count、status、level、row、col、pixelSpan 禾口指針 pTileBmp,其中變量 count標(biāo)識瓦片中有效值的個(gè)數(shù)、變量status標(biāo)識瓦片狀態(tài)、變量level標(biāo)識瓦片所在的層數(shù)、變量row標(biāo)識瓦片的行號、變量col標(biāo)識瓦片的列號、變量pixelSpan標(biāo)識瓦片中每個(gè)像素的分辨率,指針PTileBmp指向瓦片數(shù)據(jù)所在內(nèi)存位置。
全文摘要
本發(fā)明涉及一種面向虛擬地球的柵格數(shù)據(jù)快速建庫方法。該方法提出,如果第0層一個(gè)瓦片對應(yīng)的原始遙感影像數(shù)據(jù)無法一次完全載入內(nèi)存,從中間層(內(nèi)存需求最小層)開始構(gòu)建金字塔。這樣打破了以往逐層構(gòu)建的局限性,僅需掃描原始數(shù)據(jù)文件一次,減少了I/O操作次數(shù),消除了處理海量數(shù)據(jù)時(shí)讀取數(shù)據(jù)的瓶頸問題。本發(fā)明還設(shè)計(jì)了瓦片處理線程和瓦片計(jì)算線程兩類線程,讓兩類線程同時(shí)運(yùn)行,充分利用了系統(tǒng)資源,根據(jù)硬件不同的條件,配置多個(gè)瓦片計(jì)算線程,使程序讀數(shù)據(jù)和寫數(shù)據(jù)的速度相匹配,實(shí)現(xiàn)了讀寫操作的同步性,節(jié)省了讀寫操作相互等待的時(shí)間。提高了金字塔構(gòu)建的效率,尤其適合于對超大遙感數(shù)據(jù)文件的處理。
文檔編號G06F19/00GK102509022SQ20111036670
公開日2012年6月20日 申請日期2011年11月18日 優(yōu)先權(quán)日2011年11月18日
發(fā)明者向隆剛, 曾珍 申請人:武漢大學(xué)