• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      轉(zhuǎn)換多時(shí)空層次Micaps格點(diǎn)數(shù)據(jù)文件為GrADS格式

      2012-09-21 08:46:24李衛(wèi)紅陳增會(huì)
      關(guān)鍵詞:數(shù)據(jù)格式數(shù)據(jù)文件格點(diǎn)

      姚 愚, 李衛(wèi)紅, 羅 園, 陳增會(huì)

      (昆明市氣象局,云南昆明 650034)

      0 引言

      GrADS(Grid Analysis and Display System)是一套應(yīng)用廣泛、使用方便的科學(xué)數(shù)據(jù)繪圖軟件包,具有較強(qiáng)的數(shù)據(jù)計(jì)算和分析能力,可輸出等值線、色溫圖、流線、風(fēng)矢量、折線圖、直方圖等多樣化的圖形,已成為氣象科研領(lǐng)域通用的標(biāo)準(zhǔn)圖形環(huán)境之一[1-4]。目前氣象臺(tái)站預(yù)報(bào)業(yè)務(wù)中應(yīng)用的多是基于Micaps系統(tǒng)的以文本格式存儲(chǔ)的數(shù)據(jù)文件,GrADS只能識(shí)別以二進(jìn)制格式存儲(chǔ)的數(shù)據(jù),必須編程實(shí)現(xiàn)將Micaps格式的數(shù)據(jù)文件轉(zhuǎn)換為GrADS的數(shù)據(jù)格式,并生成相應(yīng)的數(shù)據(jù)描述文件(CTL文件),才能由GrADS正確調(diào)用。以往關(guān)于這類格式轉(zhuǎn)換的研究已較多[5-10],但大都只能對(duì)單個(gè)Micaps格式的數(shù)據(jù)文件進(jìn)行轉(zhuǎn)換,不能實(shí)現(xiàn)將多個(gè)變量、多個(gè)垂直層次和多個(gè)時(shí)間層次的數(shù)據(jù)寫為一個(gè)GrADS格式的文件,CTL文件不能自動(dòng)生成,限制了GrADS計(jì)算和作圖功能的發(fā)揮。轉(zhuǎn)換程序多在DOS環(huán)境下運(yùn)行,操作不便,難以維護(hù)更新。在Delphi編程環(huán)境下,應(yīng)用面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的思想,利用類的封裝性、繼承性和多態(tài)性原理,編程實(shí)現(xiàn)便捷高效地將Micaps的4類和11類格點(diǎn)數(shù)據(jù)文件轉(zhuǎn)換為GrADS格式的數(shù)據(jù)文件,克服了以往類似研究的不足,為氣象數(shù)據(jù)的圖形化操作提供支持。

      1 基礎(chǔ)類的設(shè)計(jì)

      類是OOP中的核心概念[11-12],應(yīng)用類的封裝性、繼承性和多態(tài)性原理可降低處理復(fù)雜問(wèn)題的難度,提高程序開(kāi)發(fā)效率,增加代碼的可復(fù)用性和易維護(hù)性。根據(jù)具體問(wèn)題進(jìn)行類的設(shè)計(jì)是OOP程序開(kāi)發(fā)的關(guān)鍵。GrADS格點(diǎn)數(shù)據(jù)文件是二進(jìn)制順序無(wú)格式流式文件,按經(jīng)度、緯度、高度、變量和時(shí)間的次序排列。在最復(fù)雜的情況下,轉(zhuǎn)換GrADS格點(diǎn)數(shù)據(jù)文件需要5重循環(huán)設(shè)計(jì)。Micaps系統(tǒng)利用目錄名來(lái)區(qū)分變量種類和垂直層次,用文件名區(qū)分時(shí)間層次,用文件擴(kuò)展名區(qū)分預(yù)報(bào)時(shí)效。Micaps格式的4類和11類數(shù)據(jù)文件分別存儲(chǔ)畫等值線和畫風(fēng)場(chǎng)流線的格點(diǎn)數(shù)據(jù),存儲(chǔ)格式均為“文件頭+數(shù)據(jù)塊”的形式。一個(gè)4類格式的文件存儲(chǔ)一種變量一個(gè)時(shí)次一個(gè)高度層次的數(shù)據(jù),按經(jīng)緯度順序排列,有一個(gè)“數(shù)據(jù)塊”。11類格式文件基本與4類文件相同,只是存儲(chǔ)了U和V兩個(gè)變量,可看作有兩個(gè)“數(shù)據(jù)塊”??紤]到不同數(shù)據(jù)應(yīng)用環(huán)境和用戶對(duì)數(shù)據(jù)變量、垂直層次、時(shí)間層次和預(yù)報(bào)時(shí)效選擇的多樣性,針對(duì)以上GrADS和Micaps的數(shù)據(jù)文件存儲(chǔ)特性,設(shè)計(jì)了如圖1所示的類的繼承結(jié)構(gòu)用以轉(zhuǎn)換Micaps格式的格點(diǎn)數(shù)據(jù)文件為GrADS的數(shù)據(jù)格式文件。

      1.1 TTxtData2BinFile類設(shè)計(jì)

      TTxtData2BinFile類主要功能是把字符串?dāng)?shù)組中的數(shù)據(jù)逐個(gè)分離并順序?qū)懭攵M(jìn)制文件,它是圖1中所有類的基類,其TxtData屬性是一個(gè)字符串?dāng)?shù)據(jù),用于存放用戶選定的多個(gè)Micaps格式的4類或11類文件中“數(shù)據(jù)塊”內(nèi)容,BinFileName屬性存放生成的二進(jìn)制文件的文件名。WriteMessage過(guò)程記錄類的執(zhí)行信息至Mes-sageList屬性中。GetDataFromStr過(guò)程用于逐一分離由空格分隔的字符串內(nèi)容。GetBinFile過(guò)程用于將TxtData中的數(shù)據(jù)按順序?qū)懭攵M(jìn)制文件,其主要代碼段如下:

      GetBinFile過(guò)程中SingleData不斷循環(huán)賦值為從 TxtData中順序分離的單個(gè)數(shù)據(jù),再由BinFileStream的Write過(guò)程寫入到文件流中,可視為完成了轉(zhuǎn)換GrADS數(shù)據(jù)文件所需的5重循環(huán)中的按經(jīng)緯度兩重循環(huán)。全部數(shù)據(jù)寫入完成后,調(diào)用BinFileStream的Free過(guò)程保存文件并釋放對(duì)象。

      圖1 轉(zhuǎn)換Micaps數(shù)據(jù)文件為GrADS格式的類繼承結(jié)構(gòu)

      1.2 TM2G-Base抽象類設(shè)計(jì)

      TM2G-Base抽象類由TTxtData2BinFile類繼承而來(lái),定義了由Micaps格式的數(shù)據(jù)文件轉(zhuǎn)換為GrADS格式文件的接口。TM2G-Base類的內(nèi)部屬性保存了用戶選擇的每個(gè)Micaps的4類或11類格式文件的相關(guān)信息,包括Micaps文件的目錄名、文件名和擴(kuò)展名、高度層次、時(shí)間層次、變量名稱、數(shù)據(jù)起止經(jīng)緯度、格點(diǎn)數(shù)、經(jīng)緯度分辯率、“數(shù)據(jù)塊”個(gè)數(shù)等,這些信息將用于隨后的數(shù)據(jù)轉(zhuǎn)換過(guò)程中。

      TM2G-Base類定義了一組方法用于獲取上述文件信息,這些方法中有些是實(shí)方法,即在TM2G-Base類定義時(shí)即加以實(shí)現(xiàn),主要用于獲取Micaps的4類或11類文件的“文件頭”中的信息及對(duì)TxtData中的“數(shù)據(jù)塊”進(jìn)行重排序。SetPara方法可從Micaps數(shù)據(jù)文件中獲取“文件頭”的起止經(jīng)緯度、經(jīng)緯度格點(diǎn)數(shù)、經(jīng)緯度分辨率等信息。如果選定的Micaps數(shù)據(jù)文件的緯向分辨率小于0,表示該文件中數(shù)據(jù)由北向南排列,而GrADS格式文件中的數(shù)據(jù)缺省是由南向北排列,此時(shí)需調(diào)用ReverseYDirection方法對(duì)TxtData中的相應(yīng)的“數(shù)據(jù)塊”按行重排序。當(dāng)轉(zhuǎn)換Micaps格式的11類文件時(shí),需調(diào)用Arrange11方法,將TxtData中對(duì)應(yīng)“數(shù)據(jù)塊”中U分量數(shù)據(jù)按次序集中排列,之后再放V分量數(shù)據(jù),以適應(yīng)GrADS對(duì)數(shù)據(jù)存放的要求。

      利用類的多態(tài)性原理,在OOP程序設(shè)計(jì)時(shí),可在基類定義通用數(shù)據(jù)接口,在基類的不同子類中去實(shí)現(xiàn)這些接口,以便在不同處理環(huán)境下對(duì)同一問(wèn)題采用同一解決方案[11-12]。在實(shí)際應(yīng)用中,不同用戶對(duì)要進(jìn)行轉(zhuǎn)換的變量種類的選擇各不相同,例如用戶可選擇Micaps高空實(shí)況數(shù)據(jù)(位于high目錄下)、物理量數(shù)據(jù)(位于physic目錄下)、T639數(shù)值預(yù)報(bào)產(chǎn)品(位于T639目錄下)、歐洲中期數(shù)值預(yù)報(bào)產(chǎn)品(位于ecmwf目錄下)或其它種類的數(shù)據(jù)文件進(jìn)行轉(zhuǎn)換,這些不同種類的Micaps文件數(shù)據(jù)格式相同,數(shù)據(jù)轉(zhuǎn)換的操作步驟類似。為使程序功能易于維護(hù)、增加代碼的復(fù)用性,并提供用戶對(duì)Micaps數(shù)據(jù)文件選擇的靈活性,本文將TM2G-Base設(shè)計(jì)為抽象類,在其內(nèi)部成員中定義了一組虛函數(shù)(過(guò)程),用于獲取用戶在不同數(shù)據(jù)需求下所選擇的每個(gè)Micaps文件的變量名稱、目錄名、數(shù)據(jù)文件類別、垂直層次、時(shí)間層次等相關(guān)信息,并保存至類的內(nèi)部成員中。這些虛函數(shù)(過(guò)程)主要有:SetMicapsFilesList方法對(duì)所選每個(gè)Micaps數(shù)據(jù)文件的全路徑名按垂直層次、變量名稱和時(shí)間層次排序并存放至MicapsFilesList屬性中,GetTxtDataFromMicapsFile方法按照MicapsFilesList屬性中文件名順序,逐一獲取對(duì)應(yīng)Micaps數(shù)據(jù)文件的“數(shù)據(jù)塊”至TxtData成員中,相當(dāng)于完成前述5重循環(huán)中的另外3重循環(huán),SetOutputFileName方法確定生成的GrADS格式數(shù)據(jù)文件名和CTL文件名,WriteCTLFile方法根據(jù)保存的信息生成CTL文件內(nèi)容。以上虛函數(shù)均在TM2G-Base類的子類中實(shí)現(xiàn)。例如圖1中由TM2G-Base派生的TMicapsHigh2GradsFile類專門用于轉(zhuǎn)換Micaps的高空實(shí)況數(shù)據(jù),TMicapsPhysic2GradsFile類則用于轉(zhuǎn)換物理量數(shù)據(jù)。還可從TM2GBase類派生出其它的類,以適應(yīng)用戶在不同數(shù)據(jù)需求下的對(duì)Micaps文件的多樣化選擇,如轉(zhuǎn)換T639或歐洲中期數(shù)據(jù)預(yù)報(bào)產(chǎn)品的Micaps數(shù)據(jù)文件等。

      圖2是數(shù)據(jù)轉(zhuǎn)換的流程圖。

      圖2 Micaps格式數(shù)據(jù)文件轉(zhuǎn)換為Grads格式文件的流程圖

      2 應(yīng)用類的實(shí)現(xiàn)

      2.1 TMicapsHigh2GradsFile和TMicapsPhysic2GradsFile類設(shè)計(jì)

      TMicapsHigh2GradsFile類和TMicapsPhysic2GradsFile類均由TM2G-Base類派生,分別用于轉(zhuǎn)換High目錄和Physic目錄下的4類和11類格點(diǎn)數(shù)據(jù)文件。它們同程序界面相關(guān)聯(lián),實(shí)現(xiàn)在TM2G-Base類中繼承的各個(gè)虛函數(shù)(過(guò)程)。TMicapsHigh2GradsFile類可轉(zhuǎn)換High目錄下的高度場(chǎng)、溫度場(chǎng)、溫度露點(diǎn)差場(chǎng)、全風(fēng)速場(chǎng)、流場(chǎng)共5種Micaps格式的數(shù)據(jù)文件,程序界面如圖3(a)。注意用戶所選擇的多個(gè)Micaps格式的4類和11類數(shù)據(jù)文件應(yīng)具有相同的起止經(jīng)緯度和經(jīng)緯度分辯率。TMicapsPhysic2GradsFile類的設(shè)計(jì)類似,它可轉(zhuǎn)換Physic目錄下的全部物理量數(shù)據(jù)文件,程序界面如圖3(b)。

      圖3 轉(zhuǎn)換High和Physic目錄下Micaps格式的4類和11類數(shù)據(jù)文件的程序界面

      2.2 程序運(yùn)行

      在圖3(a)所示界面中,選擇對(duì)2012年5月11日的5種實(shí)況數(shù)據(jù)的全部垂直層次進(jìn)行轉(zhuǎn)換,包括08時(shí)和20時(shí)2個(gè)時(shí)間層次,這些數(shù)據(jù)均位于high目錄下,“UV-流場(chǎng)”是Micaps的11類數(shù)據(jù)文件,其余四種均是4類數(shù)據(jù)文件。點(diǎn)擊“轉(zhuǎn)換高空觀測(cè)實(shí)況數(shù)據(jù)”按鈕,生成GrADS數(shù)據(jù)格式文件High-120218-120219.dat和描述文件High-120218-120219.ctl,兩個(gè)文件在GrADS操作環(huán)境下可正常使用,與原Micaps文件核對(duì)數(shù)據(jù)無(wú)誤,按鈕代碼如下。圖4(a)是用GrADS作的2012年5月11日08時(shí)500hPa的高度場(chǎng)和風(fēng)場(chǎng)疊加圖。

      圖3(b)所示界面中,選擇對(duì)2012年5月11日的13種物理量數(shù)據(jù)的全部垂直層次進(jìn)行轉(zhuǎn)換,包括08時(shí)和20時(shí)2個(gè)時(shí)間層次,這些數(shù)據(jù)均位于physic目錄下,均為Micaps的4類數(shù)據(jù)文件,點(diǎn)擊“轉(zhuǎn)換物理量實(shí)況數(shù)據(jù)”按鈕,生成GrADS數(shù)據(jù)格式文件Physic-120218-120219.dat和描述文件Physic-120218-120219.ctl,在GrADS下打開(kāi)后與原Micaps文件核對(duì)數(shù)據(jù)無(wú)誤。圖4b是用GrADS作的2012年5月11日08時(shí)沿25°N的水汽通量散度垂直剖面圖。

      圖4 利用2012年5月11日的Micaps數(shù)據(jù)文件進(jìn)行轉(zhuǎn)換和作圖

      3 結(jié)束語(yǔ)

      Micaps格式的格點(diǎn)數(shù)據(jù)文件轉(zhuǎn)換為GrADS數(shù)據(jù)格式文件是氣象臺(tái)站預(yù)報(bào)和科研業(yè)務(wù)中常遇到的問(wèn)題。本文應(yīng)用面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)中類的封裝性、繼承性和多態(tài)性原理,根據(jù)Micaps的4類和11類格點(diǎn)數(shù)據(jù)文件的存儲(chǔ)特征和GrADS二進(jìn)制文件寫入數(shù)據(jù)的規(guī)則,將數(shù)據(jù)轉(zhuǎn)換過(guò)程中所需的5重循環(huán)設(shè)計(jì)、對(duì)11類數(shù)據(jù)文件中U和V“數(shù)據(jù)塊”的重排序等步驟合理分解,并考慮到在不同數(shù)據(jù)環(huán)境和用戶需求下對(duì)Micaps不同變量種類的數(shù)據(jù)文件選取存在多樣性,利用Delphi設(shè)計(jì)了一組具有繼承關(guān)系的類,實(shí)現(xiàn)了把多變量、多垂直層次和多時(shí)間層次的Micaps格式數(shù)據(jù)文件轉(zhuǎn)換為GrADS數(shù)據(jù)格式文件的程序設(shè)計(jì),并可自動(dòng)生成CTL文件,有利于充分發(fā)揮GrADS強(qiáng)大的數(shù)據(jù)計(jì)算和作圖功能。程序在Windows下運(yùn)行,具有操作簡(jiǎn)便、界面友好、運(yùn)行可靠的特點(diǎn),其功能易于維護(hù)和擴(kuò)充,例如可由TM2G-Base類派生其它的類,以適應(yīng)不同操作環(huán)境和用戶需求下轉(zhuǎn)換數(shù)據(jù)的需要。

      致謝:感謝昆明市科技局(昆科計(jì)字08S080002號(hào))對(duì)本文的資助

      [1] 劉輝權(quán),肖天貴,邱靜雅.氣象預(yù)報(bào)預(yù)警系統(tǒng)開(kāi)發(fā)中VB與GrADS、FORTRAN混合編程技術(shù)[J].成都信息工程學(xué)院院報(bào),2011,26(2):208-214.

      [2] 楊兆禮,萬(wàn)齊林.實(shí)例分析如何用GrADS實(shí)現(xiàn)NetCDF格式轉(zhuǎn)換[J].廣東氣象,2008,30(5):47-49.

      [3] 何瀚原,李清華,孫燕.利用GrADS軟件繪制山西區(qū)域氣象要素圖[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2007,17(7):302-303.

      [4] 高文良,陳忠明,閔文彬.氣象繪圖軟件GrADS使用要點(diǎn)[J].四川氣象,2002,22(2):49-50.

      [5] 吳艷青.GrADS繪圖軟件在臺(tái)站業(yè)務(wù)中的應(yīng)用[J].遼寧氣象,2003,19(1):27-30.

      [6] 李毓富,姬鴻麗,王貴鵬.用GrADS制作T639數(shù)值產(chǎn)品要素圖[J].氣象與環(huán)境科學(xué),2009,32(增刊):315-319.

      [7] 彭芳,吳古匯.GrADS繪圖軟件在Micaps站點(diǎn)資料的應(yīng)用[J].貴州氣象,2009,33(6):30-32.

      [8] 葉朗明,管勇,蘇耀墀.應(yīng)用GrADS繪制Ncep再分析資料及Micaps格點(diǎn)資料[J].氣象研究與應(yīng)用,2009,30(增刊):117-118.

      [9] 楊建民,王宗仁,張紅英.GrADS腳本語(yǔ)言在格點(diǎn)資料轉(zhuǎn)化中的應(yīng)用[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2007,17(31):196-197.

      [10] 況雪源.GrADS繪圖系統(tǒng)在站點(diǎn)等值線中的應(yīng)用[J].廣西氣象,2001,22(2):53-56.

      [11] Marco Cantu.DELPHI6從入門到精通[M].北京:電子工業(yè)出版社,2002:38-51,62-75.

      [12] Kent Reisdorph.輕松掌握DELPHI4[M].北京:電子工業(yè)出版社,1999:2-3,70-97.

      猜你喜歡
      數(shù)據(jù)格式數(shù)據(jù)文件格點(diǎn)
      帶有超二次位勢(shì)無(wú)限格點(diǎn)上的基態(tài)行波解
      一種電離層TEC格點(diǎn)預(yù)測(cè)模型
      帶可加噪聲的非自治隨機(jī)Boussinesq格點(diǎn)方程的隨機(jī)吸引子
      在智能交通系統(tǒng)中PLC數(shù)據(jù)格式轉(zhuǎn)換方法的研究
      數(shù)據(jù)文件恢復(fù)專題問(wèn)答
      數(shù)據(jù)文件安全管控技術(shù)的研究與實(shí)現(xiàn)
      SQL數(shù)據(jù)文件恢復(fù)工具
      格點(diǎn)和面積
      論子函數(shù)在C語(yǔ)言數(shù)據(jù)格式輸出中的應(yīng)用
      DWG與SHP數(shù)據(jù)格式互轉(zhuǎn)換方法研究——以龍巖規(guī)劃測(cè)繪數(shù)據(jù)為例
      神池县| 海林市| 秦安县| 奉节县| 岑溪市| 泽库县| 廊坊市| 中江县| 涟水县| 郁南县| 澳门| 新建县| 五原县| 安岳县| 垫江县| 汶上县| 武穴市| 克东县| 陇西县| 沧州市| 韶关市| 离岛区| 静乐县| 政和县| 应城市| 桐城市| 荆州市| 南皮县| 仙游县| 泰州市| 福鼎市| 凤阳县| 西青区| 宣威市| 南城县| 东山县| 海淀区| 兴海县| 长海县| 宜都市| 罗甸县|