程昌玉 梁海河 蔡 宏
1(湖北省氣象信息與技術(shù)保障中心 湖北 武漢 430074) 2(中國氣象局氣象探測中心 北京 100086)
美國下一代天氣雷達(dá)(NEXRAD)在建設(shè)初期針對美國的天氣氣候特點(diǎn)開發(fā)了大量有效的雷達(dá)氣象產(chǎn)品。為適應(yīng)雷達(dá)探測新技術(shù)發(fā)展、業(yè)務(wù)應(yīng)用的需求,美國在20世紀(jì)90年代中期進(jìn)行了產(chǎn)品升級計(jì)劃[1-2], 包括建立開放的產(chǎn)品生成系統(tǒng) (ORPG)、數(shù)據(jù)采集系統(tǒng)(ORDA)、主用戶處理單元(OPUP)實(shí)現(xiàn)對 WSR-88D 原有結(jié)構(gòu)、指標(biāo)參數(shù)和探測能力的全面改造升級[3-4]。目前,ORPG的版本中已實(shí)現(xiàn)對雙偏振天氣雷達(dá)的兼容和支持。
我國布網(wǎng)的CINRAD天氣雷達(dá)產(chǎn)品算法也基本繼承了WSR-88D天氣雷達(dá)較早期的版本。我國各地的災(zāi)害性天氣存在的差異較大,使得產(chǎn)品系統(tǒng)和算法也有著較大的差異性。CINRAD 氣象產(chǎn)品系統(tǒng)(RPG) 封閉式、單一整體的框架結(jié)構(gòu),不能較好地適應(yīng)區(qū)域性的災(zāi)害天氣的監(jiān)測要求。此外,探測資料的數(shù)據(jù)質(zhì)量直接影響著天氣雷達(dá)效益的發(fā)揮。國內(nèi)外針對天氣雷達(dá)地物、超折射、徑向干擾、晴空等非降水回波展開了的研究,取得了相當(dāng)?shù)某晒鸞5-9]。但由于當(dāng)前RPG系統(tǒng)框架結(jié)構(gòu)的局限性,造成無法對新功能產(chǎn)品算法進(jìn)行升級、擴(kuò)展。
目前,CINRAD 監(jiān)測網(wǎng)具有S、C波段,共6 種型號的天氣雷達(dá), 這就要求在RPG與雷達(dá)數(shù)據(jù)采集子系統(tǒng)RDA之間建立具有很強(qiáng)兼容的體系和方式。同時(shí),如何將其他行業(yè)的天氣雷達(dá)數(shù)據(jù)融合到CINRAD監(jiān)測網(wǎng)中,提高我國天氣雷達(dá)資料密度[10],也是需要考慮的問題。
為較好地適應(yīng)CINRAD天氣雷達(dá)資料的應(yīng)用需求變化和新技術(shù)發(fā)展趨勢,本文基于ORPG的開放型系統(tǒng)框架進(jìn)行應(yīng)用研究,設(shè)計(jì)CINRAD 公共業(yè)務(wù)開發(fā)集成和測試環(huán)境(CRPG)。實(shí)現(xiàn)繼承WSR-88D開放雷達(dá)產(chǎn)品發(fā)生器系統(tǒng)(ORPG)成熟技術(shù)、算法;利用開源的API接口,根據(jù)天氣雷達(dá)資料應(yīng)用和產(chǎn)品算法研究的需要,進(jìn)行新的功能產(chǎn)品算法的升級擴(kuò)展。
ORPG系統(tǒng)采用分層結(jié)構(gòu)設(shè)計(jì),依據(jù)功能分為物理層、網(wǎng)絡(luò)層、操作系統(tǒng)層、應(yīng)用層等。ORPG系統(tǒng)設(shè)計(jì)為使應(yīng)用程序具備可移植性,應(yīng)用程序設(shè)計(jì)時(shí)進(jìn)行封裝和底層的服務(wù)軟件進(jìn)行隔離,各層間通過的標(biāo)準(zhǔn)API調(diào)用實(shí)現(xiàn)層與層之間的功能服務(wù)[10-11]。
ORPG系統(tǒng)有一系列的獨(dú)立執(zhí)行程序,包括基數(shù)據(jù)獲取、外部數(shù)據(jù)獲取、產(chǎn)品生成、產(chǎn)品分布等,主要功能單元如圖1所示。應(yīng)用程序模塊具有很強(qiáng)的功能性,通過標(biāo)準(zhǔn)的API與系統(tǒng)的其他部分相互作用。應(yīng)用程序的模塊由一個(gè)或多個(gè)相互關(guān)聯(lián)的進(jìn)程構(gòu)成,只能使用標(biāo)準(zhǔn)的程序(專門的API函數(shù)構(gòu)成)與其他應(yīng)用程序和系統(tǒng)的資源通信。
ORPG軟件設(shè)計(jì)為許多的高度模塊和獨(dú)立進(jìn)程。根據(jù)需求的變化,通過標(biāo)準(zhǔn)應(yīng)用程序接口(API)可以有效地將新的應(yīng)用算法程序引入ORPG。
ORPG系統(tǒng)設(shè)計(jì)為一個(gè)“數(shù)據(jù)”驅(qū)動(dòng)的軟件系統(tǒng),通過“數(shù)據(jù)消息事件”實(shí)現(xiàn)任務(wù)應(yīng)用程序的調(diào)度,包括徑向RADIAL_DATA、仰角ELEVATION_DATA、體掃VOLUME_DATA等數(shù)據(jù)類型。通常所有應(yīng)用任務(wù)程序均處于“等待狀態(tài)”,直到驅(qū)動(dòng)數(shù)據(jù)或事件的到來,才被“喚醒”去響應(yīng)數(shù)據(jù)或事件的請求。系統(tǒng)任務(wù)間通信方式為: 1) 任務(wù)響應(yīng)于由其他任務(wù)發(fā)布的事件;2) 采用基于數(shù)據(jù)流線性緩沖的概念[12]。ORPG采用獨(dú)特、靈活的線性緩沖區(qū)Linear Buffer進(jìn)行任務(wù)通信和數(shù)據(jù)管理,包括通信消息傳遞、數(shù)據(jù)傳遞、數(shù)據(jù)緩沖和存儲(chǔ)等。
由于ORPG模塊化設(shè)計(jì)及可擴(kuò)展特性,可以通過創(chuàng)建新模塊、更改原有模塊來構(gòu)建適合我國天氣雷達(dá)CRPG系統(tǒng)環(huán)境。CRPG基于ORPG的框架、采用底層API函數(shù)進(jìn)行設(shè)計(jì)和開發(fā),CPRG的簡要框圖如圖2所示。其中,白色背景部分代表原有的ORPG模塊;灰色背景則是根據(jù)天氣雷達(dá)的實(shí)際情況和參數(shù)需要更換,修改或新開發(fā)的模塊。

圖2 CPRG的簡要框圖
ORPG和CRPG一個(gè)區(qū)別是RDA和RPG間通信方式。WSR-88D雷達(dá)系統(tǒng)的RDA與ORPG為雙向通信,ORPG可以發(fā)送控制指令到RDA,也可以接收狀態(tài)信息和雷達(dá)數(shù)據(jù)。構(gòu)建的CRPG系統(tǒng)后,它與CINRAD雷達(dá)系統(tǒng)RDA和CRPG之間是單向連接,由CRPG的無法實(shí)現(xiàn)對RDA子系統(tǒng)的控制。
RDA子系統(tǒng)提供的許多功能,對CRPG來說相當(dāng)重要。因此,需要設(shè)計(jì)通信管理模塊和預(yù)處理器模塊(PPM)等接口進(jìn)行子系統(tǒng)間的銜接,如圖3所示。經(jīng)PPM轉(zhuǎn)換后,輸出的數(shù)據(jù)就可直接進(jìn)入ORPG內(nèi)部原有基數(shù)據(jù)預(yù)處理(PBD)任務(wù)模塊進(jìn)行處理。

圖3 PPM接口模塊
目前主要利用該環(huán)境進(jìn)行天氣雷達(dá)資料應(yīng)用、產(chǎn)品新算法方面的研究,本文僅對數(shù)據(jù)預(yù)處理接口PPM部分進(jìn)行介紹。
數(shù)據(jù)預(yù)處理模塊(PPM)包含主要功能:PPM包含一個(gè)雷達(dá)數(shù)據(jù)格式轉(zhuǎn)換功能,CINRAD天氣雷達(dá)探測的徑向數(shù)據(jù)轉(zhuǎn)化為ORPG系統(tǒng)內(nèi)部基數(shù)據(jù)的徑向消息格式。PPM模塊的流程圖,如圖4所示。

圖4 PPM模塊流程圖
PPM模塊設(shè)計(jì)為一個(gè)無限循環(huán)程序,持續(xù)檢測基數(shù)據(jù)的到來并做相應(yīng)的處理。如圖4所示,經(jīng)程序初始化,PPM進(jìn)入到一個(gè)無限循環(huán)。在每個(gè)循環(huán)重復(fù)的開始,程序?qū)妮斎霐?shù)據(jù)所在對應(yīng)的線性緩沖區(qū)(LB)讀取一個(gè)完整的CINRAD雷達(dá)徑向消息。之后,檢測每條消息包含的通信狀態(tài)的變化和數(shù)據(jù)格式。PPM模塊通過保留ORPG體掃編號,記錄當(dāng)前仰角的徑向數(shù)目、尋找PPI層掃和體掃的開始和結(jié)束標(biāo)志。數(shù)據(jù)轉(zhuǎn)換首先是將CINRAD雷達(dá)徑向頭轉(zhuǎn)換系統(tǒng)指定的雷達(dá)基數(shù)據(jù)徑向頭。將雷達(dá)格式徑向基數(shù)據(jù)中一個(gè)完整的數(shù)據(jù)消息,存入給基數(shù)據(jù)的線性緩沖區(qū)。氣象算法任務(wù)被該數(shù)據(jù)被驅(qū)動(dòng)“喚醒”后,直接讀取基數(shù)據(jù)線性緩沖區(qū)的消息,調(diào)用各氣象產(chǎn)品算法用于生成產(chǎn)品。
ORPG系統(tǒng)的算法應(yīng)用程序都是以任務(wù)的方式運(yùn)行的,采用接口模塊化結(jié)構(gòu)。CINRAD可以充分利用ORPG的API函數(shù)來設(shè)計(jì)開發(fā)新算法模塊。新的氣象算法任務(wù)可以基于原始基數(shù)據(jù)資料或中間雷達(dá)氣象產(chǎn)品進(jìn)行開發(fā),完成后被系統(tǒng)集成和現(xiàn)有任務(wù)并行運(yùn)行。算法/產(chǎn)品生成子系統(tǒng)框圖,如圖5所示。

圖5 算法/產(chǎn)品子系統(tǒng)的框圖
ORPG提供了兩種WSR-88D算法API接口的封裝。在設(shè)計(jì)和開發(fā)應(yīng)用層軟件時(shí),通常調(diào)用API函數(shù)實(shí)現(xiàn)和系統(tǒng)的銜接。算法API框圖如圖6所示,由圖可知API接口函數(shù)和ORPG底層服務(wù)依賴關(guān)系。API層包括fortran算法API、C算法API、及擴(kuò)展的API(計(jì)劃)三個(gè)庫,是基于底層ORPG庫和ORPG共享庫liborpg開發(fā)的。這樣有利于將應(yīng)用程序與低層的系統(tǒng)軟件和操作系統(tǒng)層分離。

圖6 API函數(shù)和ORPG底層服務(wù)
本文以天氣雷達(dá)聯(lián)合雨量計(jì)定量估測降水的平均校準(zhǔn)法,介紹ORPG系統(tǒng)下新算法的開發(fā)、集成。在觀測區(qū)域上有N個(gè)雨量計(jì),以地面雨量計(jì)實(shí)測值作為真值Gi,雷達(dá)估測值為Ii。平均校準(zhǔn)因子為:
平均校準(zhǔn)就是將F與觀測區(qū)域內(nèi)各點(diǎn)的雷達(dá)估測雨強(qiáng)值I相乘,得出區(qū)域的降水分布。
ORPG產(chǎn)品算法的任務(wù),需要讀取必要的適配數(shù)據(jù)信息,產(chǎn)品生成控制信息及系統(tǒng)配置信息。同時(shí),也將尋找可用的產(chǎn)品信息(驅(qū)動(dòng)數(shù)據(jù))作為輸入。如果輸入可用,就會(huì)讀取相應(yīng)的數(shù)據(jù)進(jìn)行處理,并生成相應(yīng)的產(chǎn)品(立即產(chǎn)品或最終產(chǎn)品)。最后,通過修改配置任務(wù)屬性(task_table文件)、配置產(chǎn)品屬性(product_tables文件)等文件,確保任務(wù)的正常運(yùn)行[8]。
3.2.1 輸入和輸出類型的注冊
任務(wù)中都必須注冊輸入、輸出的數(shù)據(jù)類型體掃類型VOLUME_BASED,用于控制輸入數(shù)據(jù)的同步。ORPG采用“數(shù)據(jù)驅(qū)動(dòng)”模式對產(chǎn)品/算法任務(wù)進(jìn)行控制。每個(gè)任務(wù)由特有的驅(qū)動(dòng)輸入進(jìn)行喚醒。
3.2.2 任務(wù)初始化
每個(gè)任務(wù)都需要通過調(diào)用task_initialize接口函數(shù)來初始化支持工作平臺,使用RPG支持庫。這個(gè)函數(shù)同時(shí)也定義了任務(wù)的類型VOLUME_BASED,用于過程的控制。如果任務(wù)定義為VOLUMM_BASED類型,則任務(wù)將在體掃結(jié)束后對數(shù)據(jù)進(jìn)行處理。
3.2.3 任務(wù)主程序
ORPG中,主程序是用一個(gè)無限循環(huán)來實(shí)現(xiàn)產(chǎn)品算法,是整個(gè)算法任務(wù)功能的核心。主要包括:循環(huán)控制、輸入數(shù)據(jù)的讀取、算法處理、產(chǎn)品的存貯。
循環(huán)控制:進(jìn)入循環(huán)后,調(diào)用RPGC_wait_act 等待函數(shù)控制循環(huán),直到待定的輸入數(shù)據(jù)可用。
輸入數(shù)據(jù)讀取:ORPG中,使用線性緩沖區(qū)(LB)存在數(shù)據(jù)和生成產(chǎn)品的消息。驅(qū)動(dòng)數(shù)據(jù)消息到達(dá)后,通過調(diào)用RPGC_get_input就可以讀取輸入數(shù)據(jù)到指定的內(nèi)存中。
算法處理:完成對輸入數(shù)據(jù)的處理、應(yīng)用氣象算法生成各種產(chǎn)品。
產(chǎn)品輸出:算法處理完成后,生成的中間或最終產(chǎn)品,通過RPGC_get_outbuf將內(nèi)存中的消息數(shù)據(jù)寫入指定的LB內(nèi)。
該降水校準(zhǔn)算法集成運(yùn)行后。利用北京多普勒天氣雷達(dá)2009年7月17日4:12-6:00的原始體掃資料和雨量計(jì)資料,對天氣雷達(dá)聯(lián)合雨量計(jì)定量估測降水進(jìn)行試驗(yàn),輸出的降水分布如圖7所示。

圖7 1小時(shí)累積降水
(1) 本文對開放型雷達(dá)產(chǎn)品生成系統(tǒng)的結(jié)構(gòu)和運(yùn)行方式進(jìn)行研究。根據(jù)ORPG的模塊化設(shè)計(jì)及可擴(kuò)展特性,構(gòu)建適合CINRAD天氣雷達(dá)系統(tǒng)的公共業(yè)務(wù)開發(fā)和測試環(huán)境(CRPG)系統(tǒng)是可行的。
(2) 介紹了ORPG系統(tǒng)下氣象算法開發(fā)設(shè)計(jì)、集成的流程和方法,并通過實(shí)例進(jìn)行產(chǎn)品算法的實(shí)驗(yàn)測試。結(jié)果表明基于該環(huán)境,可以快速、高效地進(jìn)行多普勒雷達(dá)產(chǎn)品算法的研發(fā)、應(yīng)用研究。同時(shí),也可以有效擺脫算法產(chǎn)品開發(fā)對雷達(dá)生成廠家過度的依賴。
(3) 目前,ORPG項(xiàng)目發(fā)展到ORPG Build15,集成了大量雙偏振雷達(dá)探測算法和產(chǎn)品。我國CINRAD天氣雷達(dá)網(wǎng)正處于雙偏振技術(shù)的升級改造過程。下一步,將進(jìn)行ORPG系統(tǒng)在雙偏振CINRAD天氣雷達(dá)上的應(yīng)用研究。