劉 歡,陳能成,陳澤強
(武漢大學 測繪遙感信息工程國家重點實驗室,武漢 430079)
海水表面溫度是一種重要的海洋環境參數,被廣泛應用于海洋動力過程、海氣相互作用和全球氣候變化等研究領域中.但就傳統原位測量方式而言,其設備成本代價高、站點分布離散、監測范圍有限,無法滿足較大區域范圍、較長時間序列和連續性觀測的需求.針對以上不足,McMillin[1]最早提出使用遙感影像劈窗算法反演地表溫度.隨著遙感技術和衛星反演算法的成熟,覃志豪等[2]提出采用MODIS遙感影像反演海表溫度產品,并應用于相關大尺度、長周期的研究中.同時伴隨遙感數據的海量增長和應用算法復雜度的急劇增加,傳統計算方式難以滿足日常的影像計算需求.朱義明、付天新等[3,4]使用MapReduce編程模型對遙感影像實現了并行處理.Almeer、常生鵬等[5,6]使用Hadoop實現了圖像處理中的濾波、銳化、增強和分割等算法.劉震[7]提出了一種基于五元組的遙感圖像并行處理方法.以上遙感數據并行計算研究均采用離線存儲的方式,數據下載、人工預處理程度高;算法設計的參數變量較單一,對于中間輸入參數較多的劈窗算法并沒有提供相應的解決方案參考;沒有充分利用RDD窄依賴特性提高計算的效率.本文綜合相關研究和算法特性,提出了一種基于Apache Spark的MODIS海表溫度快速反演方法,融合在線獲取、實時解析、彈性分布式數據集處理和適于快速計算的反演算法提高海量遙感數據處理效率.
本文研究涉及的主要方法有MODIS影像在線獲取與動態解析、適于快速計算的改進劈窗算法和基于Apache Spark的遙感影像計算過程優化.MODIS影像在線獲取與動態解析使用自動化的影像查詢機制提高影像定制的效率;適于快速計算的改進劈窗算法通過減少輸入參數,降低模型復雜度的形式提高算法的時空效率;基于Apache Spark的遙感影像計算過程優化通過RDD窄依賴關系減少計算過程中的網絡數據交換延遲.
針對人工影像數據獲取的低效性,本文采用自動化影像條件查詢與多線程下載程序實現海量數據自定義批量下載,避免了中間過程的人工干預,提高了影像獲取的效率.美國宇航局以RESTful API方式提供了查詢MODIS影像元數據和服務器存儲路徑的網絡請求方法.如圖1,用戶可以通過不同的網頁請求參數獲取不同的影像元數據信息.如通過searchForFiles頁面傳遞產品名稱、數據集編號、時空范圍和影像狀態信息等參數查詢研究區影像ID列表;通過getFileProperties頁面傳遞影像ID列表查詢具體影像的狀態信息,并據此下載影像或提交訂單;通過getFileUrls頁面獲取影像的服務器路徑,并據此下載相應的影像數據文件.本文為了提高處理效率,避免磁盤IO,在數據處理前將影像文件以字節數組的形式緩存在內存中.
針對影像數據提取與解析過程,本文采用一種適于并行化處理的第三方處理方案.MODIS L1B數據文件存儲格式是一種自描述多對象超文本文件格式——HDF4.HDF4通過數據描述符和數據元素來管理不同的數據對象.數據描述符包含了標識符、參照數、數據偏移長度和數據長度.通過相應的數據描述符可以將文件中不同對象的數據提取出來,達到解析的目的.Spark兼容所有Hadoop支持的文件格式,但是對于如HDF4這樣的遙感數據并不提供原生的支持,需要通過自定義的方式進行解析.目前常用的第三方解析方案有美國國家超級計算機應用中心基于C語言的解析方案和美國大氣研究中心基于Java的解析方案.本文考慮到Spark運行于Java虛擬機支持的開發環境和平臺可移植性的需求,采用基于Java的解決方案.通過自定義的解析程序,可以將Spark不識別的HDF4文件數據,提取轉化為其支持并行化的操作數據.

圖1 影像獲取流程
劈窗算法,是一種利用相鄰兩個熱紅外通道對大氣水汽吸收作用的差異特性,通過波段組合消除大氣影響,最終將海表溫度表達為波段亮度溫度函數的方法.本文利用影像元數據、影像值和大氣參數擬合公式,減少反演過程中參數輸入和擬合的效率損耗,避免計算節點間數據交換.其具體算法流程如圖2.
1.2.1 輻射定標
MODIS L1B數據文件中保存的波段像元值為16位量化級數.根據MODIS用戶手冊[8]所述,反演計算中所需的輻射亮度值需要通過以下公式進行計算:

其中,Radiance為輻射校正后的波段輻射亮度,Scale和Offsets為MODIS元數據提供的定標參數,DN為波段量化級數.

圖2 劈窗算法處理流程
1.2.2 大氣水分含量
大氣透過率通常是根據與大氣水分含量的關系計算而得.Kaufman和Gao[9]提出利用MODIS相應光譜范圍的波段函數組合獲取大氣水分含量的方法,相較地面觀測數據,其誤差在5%~10%之間.

其中,ω為大氣水分含量(g·cm–2),α=0.02,β=0.632,ρi為波段的地面反射率.
1.2.3 大氣透過率
大氣透過率與大氣水分含量的關系一般通過大氣傳輸模型模擬確定.毛克彪等[10]針對大氣傳輸模型參數難以實時獲取的問題,利用神經網絡擬合MODTRAN模型,獲得了了以下統計回歸表達式,其波段反射率平均誤差不大于0.008.

其中,τi為i波段的大氣透過率,ω為上一步所求大氣水分含量.考慮到反演計算過程中外部模型參數計算與輸入會引起節點間數據交換的效率損耗,本文采用以上統計回歸表達式計算大氣透過率.
1.2.4 線性組合系數[11]
地表比輻射率主要取決于地表的物質組成,就海表溫度反演而言,其地表類型單一,因此直接取相應的水體比輻射率.

1.2.5 亮度溫度
亮度溫度是與物體在相同頻率下具有相同輻射率的黑體的絕對溫度,是海表溫度反演的重要參數之一.利用普朗克黑體輻射方程可以直接求解相應波段的亮度溫度.

其中,Ti為 波段的亮度溫度,k31,1=729.541 636 W·m–2·sr–1·μm–1,k32,1=474.684 7799 W·m–2·sr–1·μm–1,k31,2=1304.413 871K,k32,2=1196.978 785 K
1.2.6 海表溫度反演
覃志豪等[2]綜合研究國內外17種劈窗算法,通過比較其參數復雜性和算法精度,在保證較高反演精度的情況下提出了線性反演公式.其具有良好的反演精度,已被應用于農業旱災監測.本文基于簡化輸入參數,減少像元間計算引起的節點數據交換的需要,采用以下線性反演公式進行海表溫度的快速反演.

其中,Ts是海表溫度(℃),T31和T32分別是MODIS第31 和 32 波段的亮度溫度,A0、A1和A2是劈窗算法參數.
針對基于Spark的海表溫度反演,本文綜合考慮了算法時間復雜度和空間復雜度,采用如圖3所示計算流程.

圖3 基于Spark的計算流程
網絡下載的影像文件以獨立影像的形式保存在分布式文件系統中(本文采用的是HDFS).為減少影像處理時節點間的數據傳輸,數據塊的大小一般按照影像文件的大小分塊.如數據容量最大為169 MB,分塊大小應至少設置為169 MB才能保證不會因文件分塊導致跨節點訪問.Spark作業開始時,影像文件以絕對路徑集合的形式傳入,經并行化操作構建包含有n個分區的鍵值對彈性分布式數據集(以下簡稱RDD).其中,鍵名為每個文件的絕對路徑字符串,鍵值為相應的影像文件.利用第三方解析方案提取出每個影像文件中的波段數據.針對每個影像的波段數據,按照算法設計,結合Spark提供的轉換算子和動作算子按照劈窗算法執行相同的波段組合函數,進行海表溫度的反演.為了避免數據節點間的數據塊傳輸和RDD間的組合計算,從創建鍵值對RDD-0到生成鍵值對RDD-2的過程中,通過對影像文件分塊優化、算法過程優化和計算過程優化實現RDD間的窄依賴關系.最終的反演結果保存到分布式文件系統中.
本文實驗數據采用MODIS L1B Terra星載數據(https://ladsweb.modaps.eosdis.nasa.gov/search/),數據空間范圍涵蓋山東半島、渤海灣一帶,時間范圍為2015年1月1日至2015年12月25日,共計6634景,總計1000 GB.由于本文采用的劈窗算法需要可見光波段參與計算,因此實驗數據均為白晝期間獲取的影像.
整個集群構建在相對封閉的千兆局域網中.集群采用主從式架構,使用商用臺式機作為節點硬件基礎.
主節點負責整個集群的任務提交、分配、管理與匯總,不參與數據計算過程.從節點負責數據的分布式存儲與實際計算.集群及節點詳細硬件配置如圖4和表1.
為了保持節點行為的一致性,所有節點均采用相同的軟件配置.操作系統選用的是CentOS,在其上構建程序運行所需的Java和Scala運行環境.Hadoop框架提供計算平臺所需的分布式文件系統HDFS和統一的資源調度機制YARN.軟件環境配置如表2.
實驗結果按照是否使用Spark集群計算框架,分為單機結果和集群結果.單機結果在單一計算節點上本地運行獲取,集群結果在YARN Cluster模式下獲取.每種結果均采用不同的數據量作為變量進行測試:10 GB(66 景)、50 GB(329 景)、100 GB(658 景)、500 GB(3347景)和1000 GB(6634景).每項數據均在相同實驗條件下重復三次,取平均值.具體實驗結果如表3.

圖4 Spark集群硬件體系架構

表1 集群節點主要硬件配置

表2 集群節點主要軟件配置
在單機模式下,Scala程序能夠實現約每秒0.04 GB(或每秒0.29個影像文件)的處理能力.在加入Spark并行處理框架后,Scala程序能夠實現約每秒0.40 GB(或每秒2.67個影像文件)的處理能力.總體上,在集群模式下影像處理的效率約為單機模式的10倍.就不同的數據量而言,當數據量較小時,由于集群啟動、并行化和任務調度等的開銷,處理效率低于平均水平.當數據量在50~500 GB時,影像處理效率呈現略微上升的態勢.但當數據量達到1000 GB時,影像的處理效率出現小幅度回落.可能在集群硬件資源達到飽和時,在相同分區數量下,單一分區的處理粒度加大,處理任務間的間隙、資源調度與任務分發延遲加大,導致了效率的下降.

表3 對比實驗結果
本文提出了一種將Spark大數據并行計算技術應用于海表溫度反演的方法.通過將自動化影像獲取過程、簡化算法流程和RDD窄依賴并行計算結合,實現了一種海表溫度快速反演的機制.通過對比單機模式和集群模式的處理效率,驗證了基于Apache Spark的海表溫度反演方法的快速計算能力.通過將大數據并行計算技術應用于遙感圖像處理,可以有效提高數據產品的更新頻率,為大范圍、長周期和高分辨率的海洋、氣象觀測提供良好的支持.本文采用的改進簡化劈窗算法和RDD窄依賴特性也可以應用于其他遙感產品生產和海量數據并行計算過程.