国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Matlab對(duì)基于二進(jìn)制-XML混合格式的SMOS鹽度數(shù)據(jù)的提取方法與實(shí)現(xiàn)

2011-12-28 08:17:40陳建張韌王輝贊安玉柱
海洋通報(bào) 2011年6期
關(guān)鍵詞:二進(jìn)制鹽度字節(jié)

陳建,張韌,王輝贊,2,安玉柱,2

(1.解放軍理工大學(xué) 氣象學(xué)院 全軍海洋水文環(huán)境數(shù)值模擬中心, 江蘇 南京 211101;2.國(guó)家海洋局第二海洋研究所 衛(wèi)星海洋環(huán)境動(dòng)力學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室, 浙江 杭州 310012)

Matlab對(duì)基于二進(jìn)制-XML混合格式的SMOS鹽度數(shù)據(jù)的提取方法與實(shí)現(xiàn)

陳建1,張韌1,王輝贊1,2,安玉柱1,2

(1.解放軍理工大學(xué) 氣象學(xué)院 全軍海洋水文環(huán)境數(shù)值模擬中心, 江蘇 南京 211101;2.國(guó)家海洋局第二海洋研究所 衛(wèi)星海洋環(huán)境動(dòng)力學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室, 浙江 杭州 310012)

基于二進(jìn)制-XML混合文件格式的SMOS鹽度數(shù)據(jù)的處理和延伸應(yīng)用仍處于初級(jí)階段,其前提是對(duì)SMOS數(shù)據(jù)的提取。本文詳細(xì)介紹了SMOS的文件格式和利用Matlab對(duì)SMOS文件進(jìn)行讀寫(xiě)操作的方法,在此基礎(chǔ)上給出了提取SMOS數(shù)據(jù)的流程圖和實(shí)例,為SMOS數(shù)據(jù)產(chǎn)品的開(kāi)發(fā)打下了基礎(chǔ)。

二進(jìn)制;XML;SMOS;鹽度;提取

土壤濕度和海洋鹽度衛(wèi)星(Soil Moisture and Ocean Salinity,SMOS)是歐空局地球探索者機(jī)遇項(xiàng)目的一個(gè)組成部分,整個(gè)項(xiàng)目計(jì)劃由8顆衛(wèi)星組成,SMOS是該項(xiàng)目的第2顆衛(wèi)星[1]。

海洋鹽度在影響大洋環(huán)流、海氣相互作用等全球性氣候過(guò)程及決定蒸發(fā)與降水平衡等方面起著重要作用,是理解全球海洋循環(huán)和海洋在地球氣候中作用的一個(gè)重要參數(shù)。雖然鹽度在大氣海洋預(yù)測(cè)模型中廣泛使用,卻一直沒(méi)有方法直接地、全球尺度地測(cè)量這一關(guān)鍵變量,SMOS填補(bǔ)了這一空白,可提供全球范圍內(nèi)、高頻率、業(yè)務(wù)化的海表鹽度信息。SMOS的主要目標(biāo)是提供兩個(gè)關(guān)鍵變量:陸表土壤水分和海表鹽度。鹽度方面測(cè)量目標(biāo)為:精度0.1psu,時(shí)空分辨率10天/200 km或30天/ 100 km。SMOS攜帶了1臺(tái)L波段(21 cm,1.4 GHz)的合成孔徑成像微波輻射計(jì)MIRAS,有Y型的3個(gè)徑向臂[2]。

SMOS衛(wèi)星于2009年11月發(fā)射并傳回首批觀測(cè)圖像,2010年5月底結(jié)束試運(yùn)行,進(jìn)入正式運(yùn)行階段。衛(wèi)星任務(wù)的先期重點(diǎn)放在了鹽度反演等一些低級(jí)別處理上[3],對(duì)資料的同化研究將是今后工作的重點(diǎn),因此很有必要對(duì)資料的讀寫(xiě)方法進(jìn)行探討。

SMOS衛(wèi)星數(shù)據(jù)產(chǎn)品包含了L2和L3,其中L2產(chǎn)品是指軌道級(jí)分辨率的鹽度產(chǎn)品,而L3產(chǎn)品則是網(wǎng)格化的鹽度產(chǎn)品,兩者的文件格式和處理方法基本一致。這里以L2產(chǎn)品為例,介紹鹽度數(shù)據(jù)的提取方法。

1 SMOS文件格式

大SMOS資料采用的是二進(jìn)制-XML混合格式的存儲(chǔ)方式,即1個(gè)SMOS產(chǎn)品由1個(gè)頭文件和1個(gè)數(shù)據(jù)塊文件組成,兩個(gè)文件分享同一個(gè)文件名,僅用不同的擴(kuò)展名來(lái)區(qū)分:頭文件為“.HDR”,實(shí)為ASCII格式的XML文件;而數(shù)據(jù)塊文件為“.DBL”,為二進(jìn)制格式。

頭文件包含固定頭文件和可變頭文件,其中固定頭文件對(duì)所有數(shù)據(jù)類型結(jié)構(gòu)都相同,可變頭文件則允許對(duì)不同的數(shù)據(jù)類型有不同的定義和結(jié)構(gòu)信息,因此其下又包含主要產(chǎn)品頭文件MPH和特定產(chǎn)品頭文件SPH。數(shù)據(jù)塊文件包括一個(gè)或多個(gè)數(shù)據(jù)集,每個(gè)數(shù)據(jù)集又包括一系列統(tǒng)一的數(shù)據(jù)集記錄。頭文件和數(shù)據(jù)塊文件通過(guò).ZIP格式對(duì)外發(fā)布[4]。

SMOS衛(wèi)星數(shù)據(jù)的格式是由遙感數(shù)據(jù)的特性決定的:在一軌數(shù)據(jù)中,經(jīng)處理得到的地球物理學(xué)變量多達(dá)105個(gè),用二進(jìn)制格式來(lái)存儲(chǔ)能節(jié)約空間、且存儲(chǔ)便捷、精度較高;而對(duì)應(yīng)的描述、認(rèn)證、處理、時(shí)間、軌道、儀器等信息對(duì)同一軌道是相同的,且具有典型的層次結(jié)構(gòu),需用一種結(jié)構(gòu)化的標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言來(lái)存儲(chǔ),XML即是個(gè)很好的選擇。

為此,歐空局提供了一組二進(jìn)制-XML庫(kù)函數(shù),用來(lái)讀取二進(jìn)制-文本混合格式,它用一個(gè)XML架構(gòu)來(lái)定義文件中數(shù)據(jù)的順序和類型,通過(guò)簡(jiǎn)單地改變XML架構(gòu)來(lái)改變給定混合文件的讀寫(xiě)格式。該組庫(kù)函數(shù)基于二進(jìn)制XML描述語(yǔ)言將數(shù)據(jù)存儲(chǔ)為二進(jìn)制文件并能恢復(fù)數(shù)據(jù),基于地球探測(cè)者文件處理庫(kù)將數(shù)據(jù)存儲(chǔ)為XML文件并能恢復(fù)數(shù)據(jù)。

綜上,SMOS文件的結(jié)構(gòu)如圖1。

由于二進(jìn)制-XML庫(kù)是用C++寫(xiě)的,其對(duì)象處理程序和應(yīng)用程序接口也是針對(duì)C++的,即便SMOS網(wǎng)站上提供了相應(yīng)的說(shuō)明,由于其配置復(fù)雜,仍給提取SMOS數(shù)據(jù)帶來(lái)了較大的困難。此外,還有一些專業(yè)的軟件,如SMOS-Viewer等也能對(duì)SMOS數(shù)據(jù)進(jìn)行操作,但功能非常有限。而Matlab借助其簡(jiǎn)潔的XML接口、固有的任意大小和類型的二進(jìn)制數(shù)據(jù)定位和讀寫(xiě)功能、以及強(qiáng)大的矩陣計(jì)算能力和簡(jiǎn)單的語(yǔ)法,可以作為讀取SMOS文件的入門工具。

圖 1 SMOS文件結(jié)構(gòu)圖Fig.1 SMOS file structure chart

2 Matlab讀寫(xiě)函數(shù)

2.1 Matlab對(duì)XML文件的讀取

語(yǔ)法:DOMnode = xmlread(filename)

函數(shù)描述:讀取一個(gè)名為filename的XML文件,并且返回代表著被解析的文本的Document Object Model節(jié)點(diǎn)。

2.2 Matlab對(duì)二進(jìn)制文件的讀寫(xiě)

用到的函數(shù)有fopen、fread、fwrite、fseek、fclose,詳細(xì)說(shuō)明參見(jiàn)Matlab幫助[5]。在下一節(jié)中僅就SMOS文件讀取中涉及到的相關(guān)要點(diǎn)做必要介紹。

3 SMOS衛(wèi)星L2產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)和讀寫(xiě)方法

下面以鹽度L2產(chǎn)品中的用戶數(shù)據(jù)產(chǎn)品(Level 2 Ocean Salinity User Data Product , MIR_OSUDP2)為例,具體說(shuō)明讀寫(xiě)SMOS數(shù)據(jù)的方法。

3.1 頭文件

首先用xmlread語(yǔ)句將XML文檔解析為DOM模型。XML DOM是XML Document Object Model的縮寫(xiě),即XML文檔對(duì)象模型[6]。根據(jù) DOM,XML文檔中的每個(gè)成分都是一個(gè)節(jié)點(diǎn):整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn);每個(gè)XML標(biāo)簽是一個(gè)元素節(jié)點(diǎn);包含在 XML 元素中的文本是文本節(jié)點(diǎn);每一個(gè)XML 的屬性是一個(gè)屬性節(jié)點(diǎn);注釋屬于注釋節(jié)點(diǎn)。如圖2。

在 DOM處理中一個(gè)普遍的錯(cuò)誤是:認(rèn)為元素節(jié)點(diǎn)包含文本。其實(shí),元素節(jié)點(diǎn)的文本是存儲(chǔ)在文本節(jié)點(diǎn)中的,而文本是文本節(jié)點(diǎn)的值。例如在圖2中,元素節(jié)點(diǎn)<Ascending_Flag>擁有一個(gè)值為“D”的文本節(jié)點(diǎn),“D”不是< Ascending_Flag >元素的值。

圖 2 XML文檔與DOM模型的對(duì)應(yīng)關(guān)系Fig.2 Correspondence between XML documents and DOM model

讀取擁有某個(gè)標(biāo)簽名或在節(jié)點(diǎn)樹(shù)中位置已知的節(jié)點(diǎn)的值的方法如下:

(1)用getElementsByTagName(TagName)獲取擁有指定標(biāo)簽名的所有節(jié)點(diǎn),或者利用節(jié)點(diǎn)間的關(guān)系對(duì)某個(gè)節(jié)點(diǎn)用getChildNodes方法獲取其所有子節(jié)點(diǎn),依次逐級(jí)進(jìn)行。

(2)用item(i)獲取第i個(gè)子節(jié)點(diǎn),索引i從0開(kāi)始。

注意:a、文本是作為一種獨(dú)立的節(jié)點(diǎn)存在的,即文本節(jié)點(diǎn)。對(duì)于非根非末節(jié)點(diǎn),按照規(guī)定,文本節(jié)點(diǎn)的索引是先于相對(duì)應(yīng)的元素節(jié)點(diǎn)的,即對(duì)平級(jí)節(jié)點(diǎn)中第j個(gè)元素節(jié)點(diǎn),其索引為2*j-1,其相應(yīng)文本節(jié)點(diǎn)索引為2*j-2(即使為空);對(duì)于根節(jié)點(diǎn),只有1個(gè)索引為0的元素節(jié)點(diǎn);當(dāng)文本節(jié)點(diǎn)為末節(jié)點(diǎn)時(shí)(如圖2中值為“D”的文本節(jié)點(diǎn)),只有1個(gè)索引為0的文本節(jié)點(diǎn);

b、屬性雖然也是節(jié)點(diǎn)的一種,但獲取屬性節(jié)點(diǎn)列表需要用getAttributes方法,而非getChildNodes。

(3)得到某個(gè)末節(jié)點(diǎn)后,用getData獲取節(jié)點(diǎn)中的數(shù)據(jù)(如圖2中的文本值“D”)。

例如,在L2數(shù)據(jù)處理中,需要將上升軌道和下降軌道的數(shù)據(jù)分開(kāi)處理,而這一信息是存儲(chǔ)在與元素節(jié)點(diǎn)<Ascending_Flag>相聯(lián)系的文本節(jié)點(diǎn)值“D”中的,根據(jù)圖2所示結(jié)構(gòu),有兩種方法得到其值:

這樣就完成了對(duì)軌道類型信息的讀取。頭文件中其它信息的讀取方法類似。

3.2 數(shù)據(jù)塊文件

在一個(gè)數(shù)據(jù)塊文件中,首先是此文件包含的網(wǎng)格點(diǎn)的數(shù)目:1個(gè)4字節(jié)整數(shù);然后是各個(gè)網(wǎng)格點(diǎn)的內(nèi)容,包括:

(1)網(wǎng)格點(diǎn)標(biāo)識(shí):1個(gè)4字節(jié)整數(shù);

(2)地理坐標(biāo),即經(jīng)緯度:2個(gè)4字節(jié)浮點(diǎn)數(shù);

(3)地球物理變量,即3個(gè)正演模型和1個(gè)簡(jiǎn)單模型反演的鹽度值、誤差及相關(guān)輔助參數(shù):22個(gè)4字節(jié)浮點(diǎn)數(shù);

(4)控制標(biāo)志:每個(gè)模型各4個(gè)字節(jié)(以比特為單位的23個(gè)控制標(biāo)志和9個(gè)空標(biāo)志),共16字節(jié);

(5)控制描述:4個(gè)1字節(jié)整數(shù)和26個(gè)2字節(jié)整數(shù);

(6) 科學(xué)標(biāo)志:每個(gè)模型各4個(gè)字節(jié)(以比特為單位的22個(gè)控制標(biāo)志和10個(gè)空標(biāo)志),共16字節(jié);

(7)科學(xué)描述:1個(gè)2字節(jié)整數(shù)。

可見(jiàn),在一個(gè)無(wú)格式有數(shù)據(jù)類型的二進(jìn)制數(shù)據(jù)塊中,涵蓋了不同類型、不同長(zhǎng)度的各種儲(chǔ)存方式,因此需要其儲(chǔ)存方式的說(shuō)明。有兩種方法可以明確:一是借助專業(yè)的SMOS可視化工具如上文提到的SMOS-Viewer,二是參考L2數(shù)據(jù)說(shuō)明書(shū)[4]。

在L2產(chǎn)品的處理過(guò)程中,提取每一像素點(diǎn)地球物理變量的同時(shí),常常還需要提取相應(yīng)的質(zhì)量控制信息[7],而二者通常是不同數(shù)據(jù)類型的,前者為浮點(diǎn)型,后者為整型或者bit型,這樣就需要將其按照不同的格式分別提取,例如,提取4字節(jié)浮點(diǎn)數(shù)、1bit型、2字節(jié)整型時(shí),需要將fread中的讀取格式分別設(shè)置為'float32'、'ubit1'和'uint16'。

4 SMOS數(shù)據(jù)提取的實(shí)現(xiàn)及應(yīng)用

根據(jù)上述介紹,在Matlab中讀寫(xiě)二進(jìn)制-XML混合格式文件的函數(shù)、提取SMOS數(shù)據(jù)的流程圖如圖3 所示。在圖3中,左邊的流程是讀入HDR文件中的分類標(biāo)志數(shù)據(jù)、并篩選相應(yīng)DBL文件中的地球物理變量數(shù)據(jù)讀入Matlab;右邊是新建一個(gè)二進(jìn)制文件,并將讀入的地球物理變量數(shù)據(jù)寫(xiě)入此文件。循環(huán)往復(fù),直到讀寫(xiě)完所有滿足要求的SMOS文件。

SMOS L2數(shù)據(jù)包含的各類地理坐標(biāo)、地球物理變量和控制標(biāo)志及描述非常多,包括一些并不常用的輔助數(shù)據(jù)、亮溫級(jí)數(shù)據(jù)等,因此一晝夜的SMOS L2數(shù)據(jù)大小將達(dá)到GB級(jí),數(shù)據(jù)量非常巨大。而在實(shí)際的應(yīng)用中通常只需要用到與海表鹽度SSS直接相關(guān)的極少數(shù)據(jù),如SSS及其坐標(biāo)、誤差、質(zhì)量控制和描述信息,因此對(duì)于SMOS L2數(shù)據(jù)的提取不但是進(jìn)一步開(kāi)發(fā)L3及更高級(jí)產(chǎn)品的必要環(huán)節(jié),還可以節(jié)省存儲(chǔ)空間,提高工作效率。

圖 3 SMOS數(shù)據(jù)提取流程圖Fig.3 Flow diagram of SMOS data extracting

圖 4 太平洋區(qū)域2010年11月1日軌道鹽度值Fig.4 Orbit based salinity in the Pacific on November 1, 2010

在L2資料同化為L(zhǎng)3資料的過(guò)程中,首先要鑒別和篩選原始L2數(shù)據(jù),篩選方法包括將上升/下降軌道數(shù)據(jù)分開(kāi)處理、剔除可用亮溫或正確亮溫?cái)?shù)據(jù)較少的反演結(jié)果、僅使用通過(guò)質(zhì)量控制的L2數(shù)據(jù)等等。如圖4,給出了太平洋區(qū)域2010年11月1日質(zhì)量控制前后的軌道鹽度,由圖可見(jiàn):由于早晚日照等測(cè)量條件的差別,除了高緯度之外,同一天的同一點(diǎn)上,上升和下降軌道測(cè)得的值是明顯不同的;經(jīng)過(guò)質(zhì)量控制的數(shù)據(jù)剔除了高緯、軌道邊緣、尤其是海岸附近不準(zhǔn)確的反演結(jié)果,質(zhì)量大為提高。這些經(jīng)過(guò)篩選的數(shù)據(jù)才可以用來(lái)進(jìn)行接下來(lái)的去偏、濾波、插值等一系列處理[8]。

5 結(jié) 論

以上的應(yīng)用實(shí)例表明,Matlab在基于二進(jìn)制-XML混合格式的SMOS鹽度數(shù)據(jù)的提取中有著很好的應(yīng)用,并且憑借其強(qiáng)大的數(shù)值運(yùn)算和可視化功能,具有對(duì)SMOS數(shù)據(jù)進(jìn)行二次開(kāi)發(fā)的能力。其對(duì)文件進(jìn)行操作更加簡(jiǎn)單直觀,免去了庫(kù)函數(shù)配置的繁瑣。相對(duì)來(lái)說(shuō),L3文件內(nèi)容更為簡(jiǎn)單一些,僅由地理坐標(biāo)、地球物理變量和控制標(biāo)志3部分組成,其提取方法類似。

致謝:感謝歐洲航天局(European Space Agency)提供SMOS L2數(shù)據(jù)。

[1]Jordi F, Adriano C, Andres B.SMOS: The Challenging Sea Surface Salinity Measurement From Space [J].Proceedings of the IEEE, 2010, 98(5): 649-665.

[2]Yann H K, Philippe W, Wigneron J P.The SMOS Mission: New Tool for Monitoring Key Elements of the Global Water Cycle [J].Proceedings of the IEEE, 2010, 98(5): 666-687.

[3]Sonia Z, Jacqueline B, Jordi F.Overview of the SMOS Sea Surface Salinity Prototype Processor [J].IEEE Trans Geosci Remote Sens, 2008, 46(3): 621-645.

[4]Bengoa B M, Zapata M R.SMOS Level 2 and auxiliary data products specification [OL].http://earth.esa.int/object/ index.cfm? fobjectid=6895.2009-05-04/2010-11-01.

[5]占君.MATLAB函數(shù)查詢手冊(cè) [M].北京: 機(jī)械工業(yè)出版社, 2011.

[6]王建.基于DOM的XML數(shù)據(jù)訪問(wèn)技術(shù) [J].計(jì)算機(jī)與數(shù)字工程, 2008, 36(2): 65-67.

[7]Gabriel J, Damià G.Accuracy of SMOS level 3 SSS products related to observational errors [J].IEEE Trans Geosci Remote Sens, 2010, 48(4): 1694-1701.

[8]Gabriel J, Damià G.Toward SMOS L4 SSS products: Improving L3 SSS with auxiliary SSS data [J].IEEE Trans Geosci Remote Sens, 2010, 48(5): 2204-2214.

Method and application of extracting SMOS salinity data based on hybrid binary-XML file format with Matlab

CHEN Jian1, ZHANG Ren1, WANG Hui-zan1,2, AN Yu-zhu1,2

(1.PLA Research Center of Ocean Environment Numerical Simulation, Institute of Meteorology, PLA University of Science and Technology, Nanjing 211101, China; 2.State Key Laboratory of Satellite Ocean Environment Dynamics, Second Institute of Oceanography, State Oceanic Administration, Hangzhou 310012, China)

SMOS salinity data based on file format of hybrid binary-XML has just been processed and applied in the primary stage and extracting SMOS data is its premise.This paper presents a process of read-write hybrid binary-XML file format in details and gives a flow chart and an example of extracting SMOS data, laying the foundation of developing SMOS salinity product.

binary; XML; SMOS; salinity; extracting

P717

A

1001-6932(2011)06-0692-05

2011-02-13;

2011-05-26

中國(guó)自然科學(xué)基金 (41075045 )。

陳建 ( 1986-),男,江蘇徐州人,博士研究生,主要從事海洋數(shù)據(jù)處理研究。電子郵箱:chenj03@126.com。

張韌 ( 1963-),男,四川峨眉人,博士,教授,博導(dǎo),主要從事海氣相互作用研究。電子郵箱:zren63@126.com。

猜你喜歡
二進(jìn)制鹽度字節(jié)
用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
有趣的進(jìn)度
二進(jìn)制在競(jìng)賽題中的應(yīng)用
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
簡(jiǎn)談MC7字節(jié)碼
鹽度和pH對(duì)細(xì)角螺耗氧率和排氨率的影響
鹽度脅迫對(duì)入侵生物福壽螺的急性毒性效應(yīng)
適用于高鹽度和致密巖層驅(qū)油的表面活性劑
膠州灣夏季鹽度長(zhǎng)期輸運(yùn)機(jī)制分析
色达县| 澄城县| 鞍山市| 梓潼县| 绥宁县| 新安县| 吴川市| 南通市| 乡宁县| 五指山市| 新邵县| 天津市| 扶绥县| 温州市| 大冶市| 开远市| 阳城县| 铜陵市| 桂平市| 迭部县| 玉田县| 柳林县| 公主岭市| 南岸区| 东源县| 南城县| 合肥市| 汽车| 拉孜县| 乃东县| 凤山县| 五常市| 晴隆县| 黄石市| 泸定县| 凌源市| 田林县| 互助| 长垣县| 南川市| 宣威市|