曹丹陽(yáng),霍 然,孫 凌,高 磊
(1. 北方工業(yè)大學(xué) 北京 100144;2. 國(guó)家衛(wèi)星氣象中心 北京 100081;3. 中國(guó)氣象局中國(guó)遙感衛(wèi)星輻射測(cè)量和定標(biāo)重點(diǎn)開(kāi)放實(shí)驗(yàn)室 北京 100081)
衛(wèi)星遙感在大尺度環(huán)境監(jiān)測(cè)、全球和氣候變化研究中占有重要地位[1]。隨著遙感資料在全球變化、環(huán)境監(jiān)測(cè)、數(shù)值預(yù)報(bào)預(yù)測(cè)中的應(yīng)用日益深入,我國(guó)自主衛(wèi)星數(shù)據(jù)的輻射精度和穩(wěn)定度問(wèn)題正在成為制約其高效應(yīng)用的瓶頸。由于發(fā)射前測(cè)試有限、無(wú)可靠星上定標(biāo)等原因,為保障衛(wèi)星遙感器可見(jiàn)光波段的在軌輻射質(zhì)量,需要采取替代方法進(jìn)行遙感器在軌輻射特性分析,基于穩(wěn)定地球目標(biāo)的衛(wèi)星觀測(cè)模擬則是其中的重要手段之一[2]。本文面向可見(jiàn)光波段衛(wèi)星觀測(cè)模擬和分析的軟件開(kāi)發(fā)需求,針對(duì)Aqua MODIS和FY-3B MERSI的可見(jiàn)光波段,實(shí)現(xiàn)了全球深海晴空目標(biāo)的衛(wèi)星入瞳反射率模擬,以及模擬結(jié)果展示分析。
由于可見(jiàn)光波段的輻射傳輸計(jì)算耗時(shí)多,為了高效完成大數(shù)據(jù)量的輻射傳輸模擬計(jì)算,基于前期研究已經(jīng)針對(duì)性建立了輻射傳輸模擬集群[3]。本文主要工作是完成衛(wèi)星觀測(cè)模擬前處理與輻射傳輸模擬集群的對(duì)接、對(duì)模擬結(jié)果進(jìn)行展示分析,建立了為可見(jiàn)光波段衛(wèi)星遙感器在軌輻射特性分析提供支撐的軟件系統(tǒng)。
基于項(xiàng)目的需求,首先,本文所開(kāi)發(fā)的系統(tǒng)主要針對(duì)深海晴空目標(biāo)數(shù)據(jù)進(jìn)行分析,因此需要對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行觀測(cè)模擬前的預(yù)處理工作,篩選出深海晴空數(shù)據(jù)。其次,由于可見(jiàn)光輻射傳輸模擬計(jì)算耗時(shí)多,體量大,為了高效完成輻射傳輸模擬計(jì)算,需要基于前期研究的模擬計(jì)算集群,設(shè)計(jì)與開(kāi)發(fā)針對(duì)此集群的任務(wù)上傳、計(jì)算結(jié)果的下載、調(diào)度與監(jiān)控功能。最后,對(duì)模擬計(jì)算的結(jié)果進(jìn)行數(shù)據(jù)分析和建模效果分析,設(shè)計(jì)與開(kāi)發(fā)了可視化功能。根據(jù)以上需求分析,系統(tǒng)的體系結(jié)構(gòu)如圖1所示。
根據(jù)需求提出的業(yè)務(wù)流程及需要實(shí)現(xiàn)的各項(xiàng)功能,系統(tǒng)主要?jiǎng)澐譃?個(gè)模塊,詳細(xì)劃分及基本功能如圖2所示。
其中預(yù)處理模塊的主要功能是將衛(wèi)星原始HDF文件中的數(shù)據(jù)按特定方案過(guò)濾、提取,生成可供模擬計(jì)算的預(yù)處理后任務(wù)列表;集群對(duì)接模塊接收這個(gè)列表,逐行遍歷,根據(jù)時(shí)間位置信息獲取對(duì)應(yīng)的環(huán)境數(shù)據(jù),寫(xiě)成任務(wù)輸入文件提交給集群。隨后下載集群返回的計(jì)算結(jié)果文件,整理后寫(xiě)成用于分析的.CSV模擬結(jié)果文件。并在此過(guò)程中提供監(jiān)控功能;分析與可視化模塊主要針對(duì)模擬結(jié)果文件,對(duì)模擬計(jì)算的結(jié)果和建模效果進(jìn)行分析。完成對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化制圖,輸出統(tǒng)計(jì)信息或模型參數(shù),并提供前臺(tái)展示功能。
圖1 系統(tǒng)體系結(jié)構(gòu)Fig.1 S ystem architecture
圖2 軟件功能結(jié)構(gòu)圖Fig.2 Softw are functional structure
(1)Python
關(guān)于開(kāi)發(fā)語(yǔ)言的選擇,由于Python語(yǔ)言開(kāi)發(fā)效率高、跨平臺(tái)性便于移植、擁有豐富的第三方擴(kuò)展庫(kù),便于進(jìn)行數(shù)據(jù)分析處理、機(jī)器學(xué)習(xí)算法的應(yīng)用等,同樣可以作為網(wǎng)站后臺(tái)為前端展示提供支持,所以該項(xiàng)目決定采用Python作為開(kāi)發(fā)語(yǔ)言。
(2)MySQL
在與集群對(duì)接模塊,任務(wù)的上傳下載等過(guò)程中,需要對(duì)計(jì)算任務(wù)或批次進(jìn)行必要的管理、查看、監(jiān)控。所以將使用數(shù)據(jù)庫(kù)管理這些過(guò)程。MySQL數(shù)據(jù)庫(kù)是一種關(guān)系型數(shù)據(jù)庫(kù),因其高效、開(kāi)源、可移植性好、為多種語(yǔ)言提供 API、支持大量數(shù)據(jù)的查詢(xún)存儲(chǔ)等優(yōu)良特性,為本項(xiàng)目所采用的數(shù)據(jù)庫(kù)[5]。
(3)Django
系統(tǒng)的展示部分采用B/S結(jié)構(gòu)。在網(wǎng)站后端框架的選擇上,Python語(yǔ)言中有多款不同的 Web 框架,Django是最有代表性的一個(gè)。它是一款開(kāi)源框架,采用了MVC設(shè)計(jì)模式,自帶ORM框架,便于與數(shù)據(jù)庫(kù)交互,還有表單、模板、緩存等許多實(shí)用功能[3]。因而Django作為本項(xiàng)目所采用的后臺(tái)Web框架。
(4)數(shù)據(jù)可視化
數(shù)據(jù)可視化是一種表示數(shù)據(jù)或信息的技術(shù),它將數(shù)據(jù)或信息編碼為包含在圖形里的可見(jiàn)對(duì)象,如點(diǎn)、線、條等,目的是將信息更加清晰有效地傳達(dá)給用戶(hù),是數(shù)據(jù)分析或數(shù)據(jù)科學(xué)的關(guān)鍵技術(shù)之一流行的數(shù)據(jù)可視化框架種類(lèi)繁多,在本文中主要應(yīng)用了基于Python的Matplotlib、Basemap等擴(kuò)展庫(kù)。
系統(tǒng)運(yùn)行硬件環(huán)境最低配置:CPU 2.0GHZ 4核;內(nèi)存4 GB;磁盤(pán)1 TB;網(wǎng)卡。系統(tǒng)運(yùn)行軟件環(huán)境:Python 2.7及相關(guān)擴(kuò)展庫(kù);MySQL 5.7;Visual C++運(yùn)行庫(kù)>2010
(1)功能說(shuō)明
預(yù)處理模塊的主要功能是提取衛(wèi)星數(shù)據(jù)并按過(guò)濾方案過(guò)濾掉不適宜進(jìn)行傳輸模擬計(jì)算的坐標(biāo)點(diǎn),該模塊流程圖如圖3所示。
(2)實(shí)現(xiàn)方式
預(yù)處理模塊的輸入是衛(wèi)星原始數(shù)據(jù),HDF格式。HDF是一種可以存儲(chǔ)圖像信息以及其他與圖像相關(guān)數(shù)據(jù)集的文件格式[1]。如MODIS觀測(cè)數(shù)據(jù),分辨率為 2040×1354。每個(gè)像素點(diǎn)對(duì)應(yīng)實(shí)際位置坐標(biāo)點(diǎn),存儲(chǔ)有該位置的經(jīng)緯度值、可見(jiàn)光波段反射率和其它遙感數(shù)據(jù)。對(duì)HDF文件的讀取使用了Python第三方擴(kuò)展庫(kù)pyhdf;過(guò)濾方案的各項(xiàng)過(guò)濾閾值作為參數(shù)傳入該模塊的函數(shù),便于根據(jù)實(shí)際需求調(diào)整,過(guò)濾過(guò)程中必要的矩陣計(jì)算使用了科學(xué)計(jì)算庫(kù)Numpy來(lái)實(shí)現(xiàn)。經(jīng)過(guò)預(yù)處理過(guò)程中根據(jù)業(yè)務(wù)需求的過(guò)濾步提取驟后,每個(gè)像素點(diǎn)對(duì)應(yīng)一條數(shù)據(jù)寫(xiě)入任務(wù)列表中,該模塊的輸出是所計(jì)算當(dāng)天(如列表中數(shù)據(jù)為MODIS 2009-01-01日掃描數(shù)據(jù))的預(yù)處理后任務(wù)列表.txt文件。
圖3 預(yù)處理模塊流程圖Fig.3 Preprocessing module flow chart
(1)功能說(shuō)明
高效率地完成輻射傳輸模擬計(jì)算是項(xiàng)目中一個(gè)重要難點(diǎn)。由于輻射傳輸模擬是一個(gè)很耗時(shí)的工作,為了提高計(jì)算效率,本文使用了輻射傳輸模擬集群[3],該集群是專(zhuān)門(mén)開(kāi)發(fā)的一款分布式計(jì)算集群,由服務(wù)節(jié)點(diǎn)調(diào)度,集群中每個(gè)計(jì)算節(jié)點(diǎn)分別運(yùn)行輻射傳輸模式進(jìn)行入瞳反射率模擬。集群軟件具備完善的說(shuō)明文檔和調(diào)用 API。本模塊的主要功能就是實(shí)現(xiàn)與輻射傳輸模擬集群的對(duì)接,模塊的數(shù)據(jù)流圖如圖 4所示。
(2)數(shù)據(jù)庫(kù)表設(shè)計(jì)
為了實(shí)現(xiàn)與集群的對(duì)接,完成對(duì)中間數(shù)據(jù)的存儲(chǔ)和管理,使用了數(shù)據(jù)庫(kù) Mysql。根據(jù)需求,數(shù)據(jù)庫(kù)主要包含兩個(gè)物理模型:批次和任務(wù)。詳細(xì)的數(shù)據(jù)庫(kù)表設(shè)計(jì)及說(shuō)明如表1、表2所示。
(3)實(shí)現(xiàn)方式
1. 上傳任務(wù)
圖4 與集群對(duì)接模塊數(shù)據(jù)流圖Fig.4 Cluster docking module data flow graph
表1 批次表Tab.1 Bat table
表2 任務(wù)表Tab.2 Ta sk table
該函數(shù)接收預(yù)處理后的任務(wù)列表,首先根據(jù)所計(jì)算天在批次表建立批次記錄。隨后遍歷任務(wù)列表每條數(shù)據(jù),根據(jù)每條數(shù)據(jù)對(duì)應(yīng)的時(shí)間、經(jīng)緯度從環(huán)境數(shù)據(jù)文件中提取環(huán)境數(shù)據(jù)。確認(rèn)環(huán)境數(shù)據(jù)有效性后,以HTTP GET請(qǐng)求向集群請(qǐng)求任務(wù)號(hào)。在本模塊中HTTP請(qǐng)求主要由第三方庫(kù)Requests來(lái)實(shí)現(xiàn)。獲取任務(wù)號(hào)后,將集群接收的計(jì)算輸入信息按標(biāo)準(zhǔn)寫(xiě)成文件,以HTTP POST方式將任務(wù)號(hào)和計(jì)算輸入文件提交給集群。集群返回成功后,將該條記錄對(duì)應(yīng)的任務(wù)號(hào)、狀態(tài)號(hào)、數(shù)據(jù)信息存入任務(wù)表。并對(duì)批次表中該批次的計(jì)數(shù)進(jìn)行更新。
容錯(cuò)機(jī)制:上傳進(jìn)程如果崩潰或斷電,恢復(fù)重傳的方式主要依靠表中字段任務(wù)名,任務(wù)名由批次+時(shí)間+行列號(hào)組成,確保唯一性。通過(guò)在任務(wù)列表中逐條遍歷找到對(duì)應(yīng)位置恢復(fù)重傳;在上傳過(guò)程中由于網(wǎng)絡(luò)傳輸故障或集群服務(wù)器異常導(dǎo)致的上傳失敗,主要解決方式依靠狀態(tài)號(hào)的變化,如在與集群建立連接或任務(wù)上傳失敗時(shí),會(huì)將任務(wù)號(hào)設(shè)為填充值,上傳內(nèi)容暫時(shí)存入任務(wù)表中的上傳內(nèi)容字段,狀態(tài)號(hào)設(shè)為未上傳,繼續(xù)執(zhí)行程序。當(dāng)網(wǎng)絡(luò)或服務(wù)器恢復(fù)正常時(shí),啟動(dòng)補(bǔ)傳程序,查詢(xún)狀態(tài)號(hào)屬于未上傳的任務(wù)重新上傳。
2. 下載任務(wù)
該函數(shù)輸入為欲下載的批次名,根據(jù)批次名在任務(wù)表中查詢(xún)對(duì)應(yīng)批次中狀態(tài)號(hào)屬于已上傳成功的任務(wù),通過(guò)任務(wù)號(hào)向集群發(fā)起HTTP GET請(qǐng)求,下載對(duì)應(yīng)的計(jì)算結(jié)果文件,把計(jì)算結(jié)果存入任務(wù)表中對(duì)應(yīng)任務(wù)的下載內(nèi)容字段,狀態(tài)號(hào)設(shè)為已下載,并更新批次表中計(jì)數(shù)。
3. 輸出結(jié)果文件
該函數(shù)輸入為批次名,根據(jù)批次名在任務(wù)表中查詢(xún)對(duì)應(yīng)批次中狀態(tài)號(hào)屬于已下載的任務(wù),把任務(wù)的原始數(shù)據(jù)和下載的計(jì)算結(jié)果按指定格式寫(xiě)成CSV的結(jié)果文件并輸出。
4. 監(jiān)控管理
為便于用戶(hù)隨時(shí)查詢(xún)計(jì)算情況,該模塊對(duì)數(shù)據(jù)庫(kù)的批次表和任務(wù)表提供了監(jiān)控界面,批次表包含增刪改操作,任務(wù)表提供了根據(jù)關(guān)鍵詞的查詢(xún)搜索、詳細(xì)信息查看等功能。具體的實(shí)現(xiàn)方式,網(wǎng)站后臺(tái)基于Django框架;HUI作為前端展示框架,保證了界面的簡(jiǎn)潔與美觀。
(1)功能說(shuō)明
該模塊接收經(jīng)過(guò)輻射傳輸模擬的.CSV結(jié)果文件,它的主要功能是分析輻射傳輸模擬的計(jì)算結(jié)果和建模效果。包括對(duì)數(shù)據(jù)集信息的統(tǒng)計(jì),按需求標(biāo)準(zhǔn)化制圖、前臺(tái)展示等功能。通過(guò)與衛(wèi)星遙感器觀測(cè)數(shù)據(jù)對(duì)比,分析模擬值與觀測(cè)值的相關(guān)性、誤差、與誤差相關(guān)的參數(shù)等。以確保模擬仿真的準(zhǔn)確率和可靠性。
(2)主要函數(shù)設(shè)計(jì)
數(shù)據(jù)讀取與統(tǒng)計(jì):數(shù)據(jù)的讀取和處理主要應(yīng)用了第三方庫(kù) Pandas。Pandas是一種基于 Numpy的為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的工具,提供了高效地操作大型數(shù)據(jù)集的函數(shù)或方法。除讀取數(shù)據(jù)外,該方法同時(shí)提供對(duì)數(shù)據(jù)集的精確統(tǒng)計(jì)功能,包括各波段對(duì)模擬值觀測(cè)值的均值、標(biāo)準(zhǔn)差、均方根誤差、相關(guān)系數(shù)等統(tǒng)計(jì)信息,并以文件形式輸出,便于用戶(hù)查看分析。
相關(guān)性分析散點(diǎn)圖:該函數(shù)接收兩個(gè)參數(shù)序列,主要功能是分析其相關(guān)性。以自變量因變量二維散點(diǎn)圖的形式制圖,色標(biāo)表示數(shù)據(jù)點(diǎn)密度。并以基本的一次線性回歸模型擬合散點(diǎn),輸出權(quán)值和偏移。模型擬合則使用了機(jī)器學(xué)習(xí)庫(kù)Scikit-learn中的線性回歸模型。在圖中也標(biāo)注了兩個(gè)參數(shù)序列的基本統(tǒng)計(jì)信息和相關(guān)系數(shù)等。
誤差分布直方圖:該函數(shù)主要接受輻射傳輸模擬值與觀測(cè)值,分別計(jì)算其絕對(duì)誤差、相對(duì)誤差,并以直方圖形式制圖,便于用戶(hù)了解誤差的分布情況。圖中也包含誤差的均值、標(biāo)準(zhǔn)差等統(tǒng)計(jì)信息空間分布散點(diǎn)圖:由于該項(xiàng)目針對(duì)全球范圍數(shù)據(jù)進(jìn)行模擬仿真,因此分析誤差或不同參數(shù)與空間的相關(guān)性是十分重要的,該函數(shù)接收一個(gè)包含經(jīng)度、緯度、參數(shù)的三維序列。以經(jīng)緯度為坐標(biāo),打在全球圖上,色標(biāo)表示參數(shù)值。便于用戶(hù)直觀的從空間分布中分析數(shù)據(jù)。實(shí)現(xiàn)方式主要基于第三方庫(kù)Basemap。
模型分析:該函數(shù)針對(duì)特定時(shí)間、波段的觀測(cè)數(shù)據(jù)和模擬數(shù)據(jù),根據(jù)用戶(hù)選取的建模方式進(jìn)行建模擬合。把擬合模型的系數(shù)、預(yù)測(cè)誤差等標(biāo)準(zhǔn)化制圖,并以文件形式輸出模型系數(shù)。具體的回歸模型實(shí)現(xiàn)方式主要采用了機(jī)器學(xué)習(xí)庫(kù)Scikit-learn和科學(xué)計(jì)算庫(kù)Numpy。
(3)前端展示
在百萬(wàn)級(jí)的數(shù)據(jù)中,讀取數(shù)據(jù)和繪圖的都是耗時(shí)操作,其速率制約了圖片實(shí)時(shí)生成或查看。因此,在該模塊中,首先按需求批次生成好圖片。圖片的展示查看主要通過(guò)標(biāo)準(zhǔn)化圖名、存儲(chǔ)路徑來(lái)實(shí)現(xiàn)。在前端以HUI為基礎(chǔ),根據(jù)用戶(hù)選擇的查詢(xún)條件,合成對(duì)應(yīng)圖片路徑,并在前臺(tái)展示。
該系統(tǒng)可完成針對(duì) Aqua MODIS和 FY-3B MERSI的可見(jiàn)光波段觀測(cè)模擬與分析。以 MODIS為例,選取了2009年1月-6月每月第一日的數(shù)據(jù)。經(jīng)過(guò)質(zhì)控篩選,每日參與輻射傳輸模擬計(jì)算的數(shù)據(jù)約為30萬(wàn)條。
輻射傳輸模擬集群采用了20個(gè)計(jì)算節(jié)點(diǎn),1個(gè)服務(wù)節(jié)點(diǎn),計(jì)算效率達(dá)到大約每日3萬(wàn)條。通過(guò)與集群的對(duì)接,數(shù)據(jù)全部計(jì)算完成。如圖5為計(jì)算過(guò)程中對(duì)批次信息的監(jiān)控。
隨后對(duì)模擬計(jì)算的結(jié)果進(jìn)行分析,如圖 6是1月3波段觀測(cè)值與模擬值得相關(guān)性分析散點(diǎn)圖。
如圖7是1月3波段的誤差空間分布圖。
建模分析效果如圖8是對(duì)1月9波段進(jìn)行單列擬合方式的模型效果圖。
本文面向基于洋面目標(biāo)的可見(jiàn)光波段衛(wèi)星觀測(cè)模擬和分析的需求,在前期輻射傳輸模擬集群系統(tǒng)的基礎(chǔ)上,完成了衛(wèi)星觀測(cè)模擬前處理、與輻射傳輸模擬集群對(duì)接、對(duì)模擬計(jì)算結(jié)果的分析、建模分析等各項(xiàng)功能。該系統(tǒng)已用于Aqua MODIS和FY-3B MERSI的數(shù)據(jù)處理分析,為可見(jiàn)光波段衛(wèi)星遙感器在軌輻射特性分析研究提供了一款有效地支撐軟件系統(tǒng)。
圖5 集群對(duì)接模塊監(jiān)控圖Fig.5 Cluster docking module monitoring chart
圖6 相關(guān)性分析散點(diǎn)圖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] 孫凌, 郭茂華, 徐娜, 張立軍, 劉京晶, 胡秀清, 李元, 戎志國(guó). 基于敦煌場(chǎng)地定標(biāo)的FY-3 MERSI反射太陽(yáng)波段在軌響應(yīng)變化分析. 光譜學(xué)與光譜分析, 32(7), pp. 1869-1877, 2012.
[3] 王昊. 大數(shù)據(jù)環(huán)境下面向FY3的輻射計(jì)算與分析研究[D].北方工業(yè)大學(xué),
[4] 范文星. 基于Django的網(wǎng)絡(luò)運(yùn)維管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué), 2012, 39(S2): 175-177.
[5] 吳滄舟, 蘭逸正, 張輝. 基于MySQL數(shù)據(jù)庫(kù)的優(yōu)化[J]. 電子科技, 2013, 26(9): 182-184.
[6] 彭鵬, 彭佳紅. 基于多元線性回歸模型的電力負(fù)荷預(yù)測(cè)研究[J]. 中國(guó)安全生產(chǎn)科學(xué)技術(shù), 2011, 7(9): 158-161.
[7] 高榮強(qiáng), 范世福, 嚴(yán)衍祿, 等. 近紅外光譜的數(shù)據(jù)預(yù)處理研究[J]. 光譜學(xué)與光譜分析, 2004, 24(12): 1563-1565.
[8] 李廣云, 李明磊, 王力, 等. 地面激光掃描點(diǎn)云數(shù)據(jù)預(yù)處理綜述[J]. 測(cè)繪通報(bào), 2015(11): 1-3.
[9] 王光遠(yuǎn), 周東強(qiáng), 趙煜. 遙感衛(wèi)星在軌微振動(dòng)測(cè)量數(shù)據(jù)分析[J]. 宇航學(xué)報(bào), 2015, 36(3): 261-267.
[10] 唐啟義. 實(shí)用統(tǒng)計(jì)分析及其DPS數(shù)據(jù)處理系統(tǒng)[電子資源][M]. 科學(xué)出版社, 2002.
[11] 沙定國(guó). 誤差分析與測(cè)量不確定度評(píng)定[M]. 中國(guó)計(jì)量出版社, 2003.
[12] 王冉陽(yáng). 基于Django和Python的Web開(kāi)發(fā)[J]. 電腦編程技巧與維護(hù), 2009(2): 56-58.