曹丹陽,霍 然,孫 凌,高 磊
(1. 北方工業大學 北京 100144;2. 國家衛星氣象中心 北京 100081;3. 中國氣象局中國遙感衛星輻射測量和定標重點開放實驗室 北京 100081)
衛星遙感在大尺度環境監測、全球和氣候變化研究中占有重要地位[1]。隨著遙感資料在全球變化、環境監測、數值預報預測中的應用日益深入,我國自主衛星數據的輻射精度和穩定度問題正在成為制約其高效應用的瓶頸。由于發射前測試有限、無可靠星上定標等原因,為保障衛星遙感器可見光波段的在軌輻射質量,需要采取替代方法進行遙感器在軌輻射特性分析,基于穩定地球目標的衛星觀測模擬則是其中的重要手段之一[2]。本文面向可見光波段衛星觀測模擬和分析的軟件開發需求,針對Aqua MODIS和FY-3B MERSI的可見光波段,實現了全球深海晴空目標的衛星入瞳反射率模擬,以及模擬結果展示分析。
由于可見光波段的輻射傳輸計算耗時多,為了高效完成大數據量的輻射傳輸模擬計算,基于前期研究已經針對性建立了輻射傳輸模擬集群[3]。本文主要工作是完成衛星觀測模擬前處理與輻射傳輸模擬集群的對接、對模擬結果進行展示分析,建立了為可見光波段衛星遙感器在軌輻射特性分析提供支撐的軟件系統。
基于項目的需求,首先,本文所開發的系統主要針對深海晴空目標數據進行分析,因此需要對衛星數據進行觀測模擬前的預處理工作,篩選出深海晴空數據。其次,由于可見光輻射傳輸模擬計算耗時多,體量大,為了高效完成輻射傳輸模擬計算,需要基于前期研究的模擬計算集群,設計與開發針對此集群的任務上傳、計算結果的下載、調度與監控功能。最后,對模擬計算的結果進行數據分析和建模效果分析,設計與開發了可視化功能。根據以上需求分析,系統的體系結構如圖1所示。
根據需求提出的業務流程及需要實現的各項功能,系統主要劃分為3個模塊,詳細劃分及基本功能如圖2所示。
其中預處理模塊的主要功能是將衛星原始HDF文件中的數據按特定方案過濾、提取,生成可供模擬計算的預處理后任務列表;集群對接模塊接收這個列表,逐行遍歷,根據時間位置信息獲取對應的環境數據,寫成任務輸入文件提交給集群。隨后下載集群返回的計算結果文件,整理后寫成用于分析的.CSV模擬結果文件。并在此過程中提供監控功能;分析與可視化模塊主要針對模擬結果文件,對模擬計算的結果和建模效果進行分析。完成對數據標準化制圖,輸出統計信息或模型參數,并提供前臺展示功能。

圖1 系統體系結構Fig.1 S ystem architecture

圖2 軟件功能結構圖Fig.2 Softw are functional structure
(1)Python
關于開發語言的選擇,由于Python語言開發效率高、跨平臺性便于移植、擁有豐富的第三方擴展庫,便于進行數據分析處理、機器學習算法的應用等,同樣可以作為網站后臺為前端展示提供支持,所以該項目決定采用Python作為開發語言。
(2)MySQL
在與集群對接模塊,任務的上傳下載等過程中,需要對計算任務或批次進行必要的管理、查看、監控。所以將使用數據庫管理這些過程。MySQL數據庫是一種關系型數據庫,因其高效、開源、可移植性好、為多種語言提供 API、支持大量數據的查詢存儲等優良特性,為本項目所采用的數據庫[5]。
(3)Django
系統的展示部分采用B/S結構。在網站后端框架的選擇上,Python語言中有多款不同的 Web 框架,Django是最有代表性的一個。它是一款開源框架,采用了MVC設計模式,自帶ORM框架,便于與數據庫交互,還有表單、模板、緩存等許多實用功能[3]。因而Django作為本項目所采用的后臺Web框架。
(4)數據可視化
數據可視化是一種表示數據或信息的技術,它將數據或信息編碼為包含在圖形里的可見對象,如點、線、條等,目的是將信息更加清晰有效地傳達給用戶,是數據分析或數據科學的關鍵技術之一流行的數據可視化框架種類繁多,在本文中主要應用了基于Python的Matplotlib、Basemap等擴展庫。
系統運行硬件環境最低配置:CPU 2.0GHZ 4核;內存4 GB;磁盤1 TB;網卡。系統運行軟件環境:Python 2.7及相關擴展庫;MySQL 5.7;Visual C++運行庫>2010
(1)功能說明
預處理模塊的主要功能是提取衛星數據并按過濾方案過濾掉不適宜進行傳輸模擬計算的坐標點,該模塊流程圖如圖3所示。
(2)實現方式
預處理模塊的輸入是衛星原始數據,HDF格式。HDF是一種可以存儲圖像信息以及其他與圖像相關數據集的文件格式[1]。如MODIS觀測數據,分辨率為 2040×1354。每個像素點對應實際位置坐標點,存儲有該位置的經緯度值、可見光波段反射率和其它遙感數據。對HDF文件的讀取使用了Python第三方擴展庫pyhdf;過濾方案的各項過濾閾值作為參數傳入該模塊的函數,便于根據實際需求調整,過濾過程中必要的矩陣計算使用了科學計算庫Numpy來實現。經過預處理過程中根據業務需求的過濾步提取驟后,每個像素點對應一條數據寫入任務列表中,該模塊的輸出是所計算當天(如列表中數據為MODIS 2009-01-01日掃描數據)的預處理后任務列表.txt文件。

圖3 預處理模塊流程圖Fig.3 Preprocessing module flow chart
(1)功能說明
高效率地完成輻射傳輸模擬計算是項目中一個重要難點。由于輻射傳輸模擬是一個很耗時的工作,為了提高計算效率,本文使用了輻射傳輸模擬集群[3],該集群是專門開發的一款分布式計算集群,由服務節點調度,集群中每個計算節點分別運行輻射傳輸模式進行入瞳反射率模擬。集群軟件具備完善的說明文檔和調用 API。本模塊的主要功能就是實現與輻射傳輸模擬集群的對接,模塊的數據流圖如圖 4所示。
(2)數據庫表設計
為了實現與集群的對接,完成對中間數據的存儲和管理,使用了數據庫 Mysql。根據需求,數據庫主要包含兩個物理模型:批次和任務。詳細的數據庫表設計及說明如表1、表2所示。
(3)實現方式
1. 上傳任務

圖4 與集群對接模塊數據流圖Fig.4 Cluster docking module data flow graph

表1 批次表Tab.1 Bat table

表2 任務表Tab.2 Ta sk table
該函數接收預處理后的任務列表,首先根據所計算天在批次表建立批次記錄。隨后遍歷任務列表每條數據,根據每條數據對應的時間、經緯度從環境數據文件中提取環境數據。確認環境數據有效性后,以HTTP GET請求向集群請求任務號。在本模塊中HTTP請求主要由第三方庫Requests來實現。獲取任務號后,將集群接收的計算輸入信息按標準寫成文件,以HTTP POST方式將任務號和計算輸入文件提交給集群。集群返回成功后,將該條記錄對應的任務號、狀態號、數據信息存入任務表。并對批次表中該批次的計數進行更新。
容錯機制:上傳進程如果崩潰或斷電,恢復重傳的方式主要依靠表中字段任務名,任務名由批次+時間+行列號組成,確保唯一性。通過在任務列表中逐條遍歷找到對應位置恢復重傳;在上傳過程中由于網絡傳輸故障或集群服務器異常導致的上傳失敗,主要解決方式依靠狀態號的變化,如在與集群建立連接或任務上傳失敗時,會將任務號設為填充值,上傳內容暫時存入任務表中的上傳內容字段,狀態號設為未上傳,繼續執行程序。當網絡或服務器恢復正常時,啟動補傳程序,查詢狀態號屬于未上傳的任務重新上傳。
2. 下載任務
該函數輸入為欲下載的批次名,根據批次名在任務表中查詢對應批次中狀態號屬于已上傳成功的任務,通過任務號向集群發起HTTP GET請求,下載對應的計算結果文件,把計算結果存入任務表中對應任務的下載內容字段,狀態號設為已下載,并更新批次表中計數。
3. 輸出結果文件
該函數輸入為批次名,根據批次名在任務表中查詢對應批次中狀態號屬于已下載的任務,把任務的原始數據和下載的計算結果按指定格式寫成CSV的結果文件并輸出。
4. 監控管理
為便于用戶隨時查詢計算情況,該模塊對數據庫的批次表和任務表提供了監控界面,批次表包含增刪改操作,任務表提供了根據關鍵詞的查詢搜索、詳細信息查看等功能。具體的實現方式,網站后臺基于Django框架;HUI作為前端展示框架,保證了界面的簡潔與美觀。
(1)功能說明
該模塊接收經過輻射傳輸模擬的.CSV結果文件,它的主要功能是分析輻射傳輸模擬的計算結果和建模效果。包括對數據集信息的統計,按需求標準化制圖、前臺展示等功能。通過與衛星遙感器觀測數據對比,分析模擬值與觀測值的相關性、誤差、與誤差相關的參數等。以確保模擬仿真的準確率和可靠性。
(2)主要函數設計
數據讀取與統計:數據的讀取和處理主要應用了第三方庫 Pandas。Pandas是一種基于 Numpy的為解決數據分析任務而創建的工具,提供了高效地操作大型數據集的函數或方法。除讀取數據外,該方法同時提供對數據集的精確統計功能,包括各波段對模擬值觀測值的均值、標準差、均方根誤差、相關系數等統計信息,并以文件形式輸出,便于用戶查看分析。
相關性分析散點圖:該函數接收兩個參數序列,主要功能是分析其相關性。以自變量因變量二維散點圖的形式制圖,色標表示數據點密度。并以基本的一次線性回歸模型擬合散點,輸出權值和偏移。模型擬合則使用了機器學習庫Scikit-learn中的線性回歸模型。在圖中也標注了兩個參數序列的基本統計信息和相關系數等。
誤差分布直方圖:該函數主要接受輻射傳輸模擬值與觀測值,分別計算其絕對誤差、相對誤差,并以直方圖形式制圖,便于用戶了解誤差的分布情況。圖中也包含誤差的均值、標準差等統計信息空間分布散點圖:由于該項目針對全球范圍數據進行模擬仿真,因此分析誤差或不同參數與空間的相關性是十分重要的,該函數接收一個包含經度、緯度、參數的三維序列。以經緯度為坐標,打在全球圖上,色標表示參數值。便于用戶直觀的從空間分布中分析數據。實現方式主要基于第三方庫Basemap。
模型分析:該函數針對特定時間、波段的觀測數據和模擬數據,根據用戶選取的建模方式進行建模擬合。把擬合模型的系數、預測誤差等標準化制圖,并以文件形式輸出模型系數。具體的回歸模型實現方式主要采用了機器學習庫Scikit-learn和科學計算庫Numpy。
(3)前端展示
在百萬級的數據中,讀取數據和繪圖的都是耗時操作,其速率制約了圖片實時生成或查看。因此,在該模塊中,首先按需求批次生成好圖片。圖片的展示查看主要通過標準化圖名、存儲路徑來實現。在前端以HUI為基礎,根據用戶選擇的查詢條件,合成對應圖片路徑,并在前臺展示。
該系統可完成針對 Aqua MODIS和 FY-3B MERSI的可見光波段觀測模擬與分析。以 MODIS為例,選取了2009年1月-6月每月第一日的數據。經過質控篩選,每日參與輻射傳輸模擬計算的數據約為30萬條。
輻射傳輸模擬集群采用了20個計算節點,1個服務節點,計算效率達到大約每日3萬條。通過與集群的對接,數據全部計算完成。如圖5為計算過程中對批次信息的監控。
隨后對模擬計算的結果進行分析,如圖 6是1月3波段觀測值與模擬值得相關性分析散點圖。
如圖7是1月3波段的誤差空間分布圖。
建模分析效果如圖8是對1月9波段進行單列擬合方式的模型效果圖。
本文面向基于洋面目標的可見光波段衛星觀測模擬和分析的需求,在前期輻射傳輸模擬集群系統的基礎上,完成了衛星觀測模擬前處理、與輻射傳輸模擬集群對接、對模擬計算結果的分析、建模分析等各項功能。該系統已用于Aqua MODIS和FY-3B MERSI的數據處理分析,為可見光波段衛星遙感器在軌輻射特性分析研究提供了一款有效地支撐軟件系統。

圖5 集群對接模塊監控圖Fig.5 Cluster docking module monitoring chart

圖6 相關性分析散點圖Fig.6 Correlation analysis scatter plot

圖7 誤差空間分布圖Fig.7 Error spatial distribution diagram

圖8 模型效果圖Fig.8 Model effect diagram
[1] E. J. Kwiatkowska, B. A. Franz, G. Meister, C. R. McClain,and X. Xiong, “Cross calibration of ocean-color bands from Moderate-Resolution Imaging Spectroradiometer on Terra platform, ” Applied Optics, 47(36), pp. 6796–6810, 2008.
[2] 孫凌, 郭茂華, 徐娜, 張立軍, 劉京晶, 胡秀清, 李元, 戎志國. 基于敦煌場地定標的FY-3 MERSI反射太陽波段在軌響應變化分析. 光譜學與光譜分析, 32(7), pp. 1869-1877, 2012.
[3] 王昊. 大數據環境下面向FY3的輻射計算與分析研究[D].北方工業大學,
[4] 范文星. 基于Django的網絡運維管理系統的設計與實現[J].計算機科學, 2012, 39(S2): 175-177.
[5] 吳滄舟, 蘭逸正, 張輝. 基于MySQL數據庫的優化[J]. 電子科技, 2013, 26(9): 182-184.
[6] 彭鵬, 彭佳紅. 基于多元線性回歸模型的電力負荷預測研究[J]. 中國安全生產科學技術, 2011, 7(9): 158-161.
[7] 高榮強, 范世福, 嚴衍祿, 等. 近紅外光譜的數據預處理研究[J]. 光譜學與光譜分析, 2004, 24(12): 1563-1565.
[8] 李廣云, 李明磊, 王力, 等. 地面激光掃描點云數據預處理綜述[J]. 測繪通報, 2015(11): 1-3.
[9] 王光遠, 周東強, 趙煜. 遙感衛星在軌微振動測量數據分析[J]. 宇航學報, 2015, 36(3): 261-267.
[10] 唐啟義. 實用統計分析及其DPS數據處理系統[電子資源][M]. 科學出版社, 2002.
[11] 沙定國. 誤差分析與測量不確定度評定[M]. 中國計量出版社, 2003.
[12] 王冉陽. 基于Django和Python的Web開發[J]. 電腦編程技巧與維護, 2009(2): 56-58.