申 煥,石曉春,邱宏華
(廣東省國(guó)土資源測(cè)繪院,廣東 廣州510500)
隨著遙感技術(shù)和數(shù)字?jǐn)z影技術(shù)的快速發(fā)展,遙感影像數(shù)據(jù)的應(yīng)用越來(lái)越廣泛,已成為重要的數(shù)據(jù)源和數(shù)據(jù)更新的手段[1]。近年來(lái),遙感技術(shù)研究的力度不斷加大,各種新衛(wèi)星不斷升空,遙感數(shù)據(jù)源呈現(xiàn)出高空間分辨率、高光譜分辨率、高時(shí)間分辨率的發(fā)展趨勢(shì),傳感器常常接收到超過(guò)1G的大數(shù)據(jù)量遙感影像[2]。
有效處理海量遙感影像數(shù)據(jù),是解決諸如氣象預(yù)報(bào)、資源普查、導(dǎo)航定位、農(nóng)業(yè)生產(chǎn)、環(huán)境監(jiān)測(cè)等領(lǐng)域遙感產(chǎn)品生產(chǎn)系統(tǒng)的大規(guī)模復(fù)雜應(yīng)用的關(guān)鍵。國(guó)內(nèi)外許多學(xué)者已進(jìn)行大量研究,如袁帥等[3]在ArcInfo和Oracle8i的基礎(chǔ)上,通過(guò)對(duì)影像數(shù)據(jù)分塊存儲(chǔ)、建立空間索引、元數(shù)據(jù)存儲(chǔ)、完成了海量影像數(shù)據(jù)的管理;王俊等[4]對(duì)多圖幅海量數(shù)據(jù)電子地圖快速顯示做了一系列研究;朱江等[5]基于Geo-Raster實(shí)現(xiàn)了海量影像數(shù)據(jù)的在線發(fā)布和共享;王佳等[6]提出了一種面向海量空間數(shù)據(jù)的并行UNION查詢技術(shù)。針對(duì)目前通用的順序處理已不能滿足海量數(shù)據(jù)運(yùn)算要求的問(wèn)題,基于MPI并行處理開發(fā)環(huán)境,進(jìn)行了海量遙感影像并行處理研究,大幅度地提高了海量遙感影像數(shù)據(jù)的運(yùn)算速度。
遙感影像切分即將整幅遙感影像按照其金字塔分層的級(jí)別分割成若干小的圖片,每個(gè)切片單獨(dú)存儲(chǔ)為一個(gè)文件,并按照一定的規(guī)則存儲(chǔ)在文件系統(tǒng)中。遙感影像合成即將切片目錄中的所有切片拼合在一起,形成一幅完整的影像,且該完整影像需復(fù)制切片的空間參考、仿射變換等信息。在影像切分之前,必須預(yù)先定義一組標(biāo)準(zhǔn)的影像切分參數(shù),影像切分參數(shù)既能保證影像切分過(guò)程的一致性,也能保證影像切分后的影像切片信息描述的完整性。影像切分參數(shù)是影像根據(jù)以切片為單位顯示或處理時(shí)坐標(biāo)映射、影像顯示的核心參數(shù),包括:
1)切片大?。═ileSize:xSize,ySize)
影像經(jīng)過(guò)切分后生成許多小塊的圖片,稱為切片(tile)。切片的寬(xSize)和高(ySize)一般相等,亦即我們通常使用正方形的切片,以像素為單位,通常有
切片的寬、高的尺寸應(yīng)以大于等于128像素為佳。
2)圖片格式
可以選用Png或Jpeg,圖像質(zhì)量比較好,并支持Alpha通道。
3)坐標(biāo)系統(tǒng)
國(guó)際上坐標(biāo)系統(tǒng)普遍采用的是歐洲石油勘探組織(EPSG),坐標(biāo)參考系數(shù)集的編碼表示法,各大GIS軟件廠商幾乎都支持EPSG表示法,GDAL同樣支持EPSG表示法。開放地理信息聯(lián)盟(OGC),標(biāo)準(zhǔn)中間參考系統(tǒng)的(SRID)與EPSG的空間參考系統(tǒng)的ID是一致的。
4)金字塔分級(jí)數(shù)
金字塔分級(jí)數(shù)是根據(jù)切片的尺寸來(lái)計(jì)算的。對(duì)于同一幅影像,不同大小的切片對(duì)應(yīng)不同的金字塔分級(jí)數(shù)。確定了金字塔分級(jí)數(shù),對(duì)原始影像重采樣,建立影像金字塔。
5)仿射變換
仿射變換用含有6個(gè)元素的雙精度浮點(diǎn)數(shù)數(shù)組來(lái)表示,描述了地圖上像元行列坐標(biāo)到地理參考空間的映射。
6)顏色對(duì)照表
16位的遙感影像(含1個(gè)波段)通常含有一個(gè)顏色對(duì)照表的記錄,其DN值(Data Number)在0~255區(qū)間內(nèi)取值,0~255內(nèi)的每一個(gè)值對(duì)應(yīng)著一個(gè)顏色值,DN值與顏色值的一一對(duì)應(yīng),便構(gòu)成了顏色對(duì)照表。
消息傳遞接口(MPI)是目前比較流行的并行計(jì)算開發(fā)環(huán)境之一。MPI是一個(gè)并行計(jì)算消息傳遞接口標(biāo)準(zhǔn),由 MPI論壇(MPI Forum)推出,該標(biāo)準(zhǔn)的目的是提高并行程序的可移植性和開發(fā)效率。MPI論壇是由歐美主要的并行計(jì)算機(jī)生產(chǎn)商,大學(xué)、政府實(shí)驗(yàn)室和工廠研究人員組成的一個(gè)非官方組織。MPI論壇在1994年6月正式推出了MPI的第一個(gè)版本MPI 1.0,又于1995年6月推出了MPI 1.1,對(duì)原有的版本進(jìn)行了修改、完善和補(bǔ)充。1997年7月推出的MPI 2.0版本中,又加入了遠(yuǎn)程存儲(chǔ)訪問(wèn)、并行I/O、動(dòng)態(tài)進(jìn)程管理等內(nèi)容。MPI現(xiàn)在已經(jīng)成為產(chǎn)業(yè)界廣泛支持的并行計(jì)算標(biāo)準(zhǔn)。
MPI.NET開發(fā)環(huán)境配置前需安裝以下應(yīng)用程序:首先安裝 Microsoft Visual Studio 2005或更高版本;其次安裝 MS-MPI,可安裝 Microsoft HPC SDK 或者 Microsoft Compute Cluster Pack SDK,其中包含編寫MPI程序需要的 MS-MPI的頭文件。
上述文件安裝之后,即可安裝MPI.NET軟件開發(fā)包,接著在Path環(huán)境變量中加入“C:\Program Files\Microsoft Compute Cluster Pack\Bin\mpiexec.exe”,再打開命令提示符窗口,將當(dāng)前目錄改變到MPI.NET的安裝目錄下(默認(rèn)為C:\Program Files\MPI.NET),最后輸入命令“mpiexec.exe–n 8PingPong.exe”,執(zhí)行效果如圖1所示。
圖1 MPI運(yùn)行示例
圖1中所示,mpiexec程序啟動(dòng)了PingPong程序的8個(gè)進(jìn)程,在PingPong中,秩(rank)為0的進(jìn)程(這里為主進(jìn)程)向其它進(jìn)程發(fā)送ping命令,然后返回運(yùn)行這些進(jìn)程的計(jì)算機(jī)名,因?yàn)檫@里的8個(gè)進(jìn)程運(yùn)行在一臺(tái)計(jì)算機(jī)上,這8個(gè)進(jìn)程返回的計(jì)算機(jī)名是相同的。如果PingPong程序運(yùn)行正確的話,說(shuō)明MPI.NET安裝成功,其后就可以開發(fā)MPI并行程序。
遙感影像的存儲(chǔ)是二維數(shù)組,大部分遙感影像的處理都是對(duì)像素值的逐點(diǎn)處理,因此遙感影像的并行處理過(guò)程如下:
1)影像切分
利用影像切分算法將遙感影像切分成若干個(gè)合適的切片,具體算法如下:
①計(jì)算金字塔分級(jí)數(shù)
假設(shè)原始影像的寬度為RasterXSize,高度為RasterYSize,切片的尺寸為TileSize,則有:
將xLevel和yLevel兩者取整后的最大整數(shù)作為金字塔的分級(jí)數(shù)。
②建立金字塔并重采樣
GDAL提供的重采樣的方法有Nearest、GAUSS、CUBIC、AVERAGE、MODE、AVERAGE_M(jìn)AGPHASE等,這里選用Nearest方法。
這樣便建立了影像金字塔,每一個(gè)overview對(duì)應(yīng)金字塔的一層,overviewId=-1代表原始影像,overviewId的值越小,其比例尺越小,其分辨率越大。
③計(jì)算金字塔各層的仿射變換參數(shù)
如上所述,overviewid=-1代表原始影像,Transform[1]和Transform[5]分別表示影像在X方向和Y方向的分辨率,那么影像金字塔overviewid所對(duì)應(yīng)的分辨率為
式中,xResolution、yResolution分別為原始影像在x方向和y方向的分辨率。
④坐標(biāo)系統(tǒng)
利用GetProjection()方法讀取原始影像的坐標(biāo)系統(tǒng):string proj=ds.GetProjection();
該方法的返回值為WKT格式的空間參考系,再利用SetProjection()方法設(shè)定切片的坐標(biāo)系統(tǒng):dsTile.SetProjection(proj);
⑤設(shè)定顏色對(duì)照表
利用GetRasterColorTable()方法獲取原始影像相應(yīng)波段的顏色對(duì)照表:ColorTable ct=bandIn.GetRasterColorTable();
再利用原始影像相應(yīng)波段的顏色對(duì)照表設(shè)定切片相應(yīng)波段的顏色對(duì)照表:
bandOut.SetRasterColorTable(ct);
⑥切圖,生成切片
已知原始影像的寬為RasterXSize,高為RasterYSize,切片尺寸為TileSize。
其中,nTileX、nTileY分別為在X、Y 方向上能夠切分的足額切片數(shù),nPixelRemX、nPixelRemY分別為在X、Y方向上剩余部分。首先切分足額的切片部分,再切分X、Y方向的剩余部分,當(dāng)剩余部分的寬度或高度<TileSize,無(wú)DN值處,以0值填充。
⑦記錄原始影像大小
為了以后將切片合成為整幅影像的需要,需使用一個(gè)文本文件,記錄原始影像的尺寸(因切片的綜合尺寸與原始影像的尺寸不一定相符)。
2)按行對(duì)影像進(jìn)行分塊計(jì)算
每個(gè)切片的高度為h,并行運(yùn)算計(jì)算機(jī)的節(jié)點(diǎn)數(shù)為n.將切片分成n塊,每塊有連續(xù)r行向量,r=h/n的整數(shù)部分,余數(shù)部分留給主節(jié)點(diǎn)處理。
3)將n塊數(shù)據(jù)用send方法發(fā)送到各個(gè)計(jì)算節(jié)點(diǎn)因采用主從模式,秩(rank)為0的節(jié)點(diǎn)為主節(jié)點(diǎn),主節(jié)點(diǎn)負(fù)責(zé)發(fā)送n塊數(shù)據(jù),接收各個(gè)節(jié)點(diǎn)的計(jì)算結(jié)果,并處理第0塊數(shù)據(jù)和余數(shù)部分的數(shù)據(jù)。
4)各個(gè)子節(jié)點(diǎn)通過(guò)Receive方法接收從主節(jié)點(diǎn)發(fā)送來(lái)的數(shù)據(jù)塊,采用一定的算法進(jìn)行影像處理運(yùn)算,并將運(yùn)算結(jié)果通過(guò)Send方法發(fā)回主節(jié)點(diǎn)。
5)主節(jié)點(diǎn)利用Receive方法接收各個(gè)子節(jié)點(diǎn)的運(yùn)算結(jié)果,將各運(yùn)算結(jié)果合并,生成影像切片的最終處理結(jié)果。
6)繼續(xù)循環(huán),并行處理下一個(gè)影像切片。
7)影像合成
各切片均處理完成后,應(yīng)用影像合成算法合成完整影像的最終運(yùn)算結(jié)果,影像合成算法如下:
①?gòu)那衅夸浵碌膕izenote.txt文件中讀取完整影像的尺寸信息,讀取得到影像的寬度和高度,分別記為xSize、ySize;②創(chuàng)建用戶指定格式的數(shù)據(jù)類型的驅(qū)動(dòng)以用來(lái)創(chuàng)建新的柵格文件;③讀取空間參考、仿射變換等信息;④創(chuàng)建數(shù)據(jù)集,并給其設(shè)置空間參考、仿射變換等信息;⑤遍歷讀取切片的DN值,并寫入新建的數(shù)據(jù)集中;⑥保存文件。
當(dāng)前所使用的并行處理遙感影像的技術(shù)是將主節(jié)點(diǎn)運(yùn)算量按計(jì)算機(jī)節(jié)點(diǎn)平均分配,各子節(jié)點(diǎn)處理完后,將處理結(jié)果發(fā)回主節(jié)點(diǎn),主節(jié)點(diǎn)將運(yùn)算結(jié)果合并。這種不考慮子節(jié)點(diǎn)性能和運(yùn)算時(shí)間的并行處理方式稱為靜態(tài)負(fù)載均衡。在今后的研究中,應(yīng)該考慮使用動(dòng)態(tài)負(fù)載均衡技術(shù),即主節(jié)點(diǎn)負(fù)責(zé)發(fā)送數(shù)據(jù),子節(jié)點(diǎn)負(fù)責(zé)處理數(shù)據(jù),子節(jié)點(diǎn)處理完將結(jié)果返回給主節(jié)點(diǎn),主節(jié)點(diǎn)接收到處理結(jié)果后,再次向該子節(jié)點(diǎn)發(fā)送待處理數(shù)據(jù)。這樣,子節(jié)點(diǎn)一直有任務(wù)在進(jìn)行,直至所有任務(wù)結(jié)束。
[1]王永會(huì),宋曉宇,沈 暉.基于OLE Automation的GIS系統(tǒng)的開發(fā)方法[J].沈陽(yáng)建筑工程學(xué)院學(xué)報(bào),2000,16(2):140-142.
[2]王 橋,鄭丙輝.環(huán)境遙感技術(shù)研究與應(yīng)用進(jìn)展[J].衛(wèi)星應(yīng)用,2006,14(1):35-40.
[3]袁 帥,宋曉宇,王永會(huì),等.GIS海量影像數(shù)據(jù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].沈陽(yáng)建筑工程學(xué)院,2003,19(3):236-239.
[4]王 俊,張文詩(shī),王建濤.多圖幅海量數(shù)據(jù)電子地圖快速顯示的研究與實(shí)現(xiàn)[J].測(cè)繪工程,2003,12(3):18-20.
[5]朱 江,張立立,曾志明,等.海量影像數(shù)據(jù)的發(fā)布集群系統(tǒng)與應(yīng)用[J].地球信息科學(xué),2006,8(2):101-105.
[6]王 佳,楊樹強(qiáng),賈 焰.面向海量數(shù)據(jù)的并行UNION查詢技術(shù)研究與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2006,23(10):68-71.