田 程,鐘 健,雷登林,彭 茜,倪 雷
(貴州省貴陽市氣象局,貴州 貴陽 550002)
中小尺度天氣系統(tǒng)引發(fā)的突發(fā)氣象災(zāi)害(暴雨、冰雹、雷暴、龍卷、大風(fēng)等)常常對工農(nóng)業(yè)生產(chǎn)和百姓的生命財(cái)產(chǎn)造成極大的損失和危害。在短期預(yù)報(bào)對中小尺度天氣系統(tǒng)預(yù)報(bào)比較困難的情況下,用天氣雷達(dá)實(shí)時(shí)觀測資料進(jìn)行預(yù)警顯得尤為重要。天氣雷達(dá)資料以其較高的時(shí)空分辨率在臨近預(yù)報(bào)及天氣預(yù)警方面具有獨(dú)特的優(yōu)勢。氣象業(yè)務(wù)上強(qiáng)對流天氣預(yù)警主要依賴于天氣雷達(dá)的實(shí)時(shí)監(jiān)測,因此各類短臨預(yù)報(bào)軟件是否能及時(shí)獲取天氣雷達(dá)資料就顯得非常重要。目前,雷達(dá)拼圖、MICAPS4雷達(dá)模塊、GR2、SWAN等短臨預(yù)報(bào)軟件的基礎(chǔ)數(shù)據(jù)來源于標(biāo)準(zhǔn)化命名的敏視達(dá)格式雷達(dá)基數(shù)據(jù),此數(shù)據(jù)由雷達(dá)站配備的RPGCA程序負(fù)責(zé)標(biāo)準(zhǔn)化命名、壓縮和上傳省局服務(wù)器。
中小尺度天氣系統(tǒng)一般生成和消亡都比較快,留給預(yù)報(bào)員預(yù)報(bào)及預(yù)警的時(shí)間非常有限,但是RPGCA程序并不能實(shí)時(shí)處理和上傳雷達(dá)數(shù)據(jù),有可能造成數(shù)分鐘的數(shù)據(jù)延遲,占用了本來就不多的預(yù)警時(shí)間,不僅如此,經(jīng)過貴陽雷達(dá)站對RPGCA程序長期業(yè)務(wù)運(yùn)行發(fā)現(xiàn),該程序有時(shí)不能完全上傳所有基數(shù)據(jù),并且上傳過程中占用較大系統(tǒng)資源,可能造成上傳電腦死機(jī)。這些弊端不僅增加了雷達(dá)探測人員的工作量,也對實(shí)時(shí)性要求較高的短時(shí)臨近預(yù)警業(yè)務(wù)造成了較大影響。據(jù)筆者了解,其它型號天氣雷達(dá)類似功能由RPGCD程序來實(shí)現(xiàn),RPGCD程序也有RPGCA程序相似的弊端。同行針對這些弊端已經(jīng)開發(fā)了新的程序[1],但是這些程序無法在貴陽的CINRAD/CD型雷達(dá)上使用,所以針對RPGCA程序的弊端貴陽雷達(dá)站開發(fā)了RPGCA改進(jìn)版,新版本程序提高了CINRAD/CD型雷達(dá)基數(shù)據(jù)上傳的時(shí)效性,同時(shí)也減少了網(wǎng)絡(luò)帶寬的占用率,在數(shù)據(jù)上傳出錯(cuò)時(shí)通過聲音和文字進(jìn)行報(bào)警,并能手動(dòng)或自動(dòng)補(bǔ)傳數(shù)據(jù)。新程序的使用提高了國家局考核標(biāo)準(zhǔn)下的傳輸及時(shí)率,有效提高CINRAD/CD型雷達(dá)資料應(yīng)用的時(shí)效性和雷達(dá)數(shù)據(jù)的可用性,滿足了CINRAD/CD型雷達(dá)基數(shù)據(jù)上傳的要求,可以在同型號天氣雷達(dá)站推廣使用。
CINRAD/CD雷達(dá)體掃后生成的*.05V基數(shù)據(jù)經(jīng)Radar Products Generation(RPG)軟件轉(zhuǎn)錄后得到以archive.001-archive999為文件名的敏視達(dá)格式基數(shù)據(jù)文件,RPGCA程序定時(shí)將這些文件的文件名修改為標(biāo)準(zhǔn)化命名的文件名,然后將標(biāo)準(zhǔn)化命名后的基數(shù)據(jù)文件壓縮上傳至省局服務(wù)器。RPGCA程序改名、壓縮、上傳這一過程不是實(shí)時(shí)進(jìn)行的,起初設(shè)置為間隔6 min監(jiān)測一次數(shù)據(jù)文件,造成敏視達(dá)格式基數(shù)據(jù)可能會(huì)延遲6 min才傳到省局,后經(jīng)省局要求將此間隔修改為1 min,按照這種方式設(shè)置,雖然時(shí)效性得到了保障,但是在新的原始基數(shù)據(jù)文件生成前,RPGCA程序每過1 min就重復(fù)改名、壓縮、上傳同一個(gè)文件,這給省地網(wǎng)絡(luò)造成了較大負(fù)擔(dān),也給省局的相關(guān)數(shù)據(jù)處理帶來了麻煩,同時(shí)還占用了大量的本地計(jì)算機(jī)資源,造成本地計(jì)算機(jī)死機(jī)。有時(shí)雷達(dá)工作正常,但省地網(wǎng)出現(xiàn)故障,RPGCA程序即停止工作,當(dāng)省地網(wǎng)絡(luò)恢復(fù)正常后,RPGCA程序無法處理舊的原始雷達(dá)基數(shù)據(jù)文件,造成網(wǎng)絡(luò)故障期間標(biāo)準(zhǔn)化命名的敏視達(dá)格式雷達(dá)基數(shù)據(jù)丟失。RPGCA程序在出故障時(shí)沒有聲音報(bào)警提醒雷達(dá)探測人員解決相應(yīng)故障,其上傳過程中耗用系統(tǒng)資源較大,并且有時(shí)不能完全上傳所有基數(shù)據(jù)。[1]針對上述RPGCA程序的弊端,筆者使用C#開發(fā)了RPGCA改進(jìn)版。
新程序的改名和壓縮功能必須與原有軟件一模一樣,所以得研究PGCA程序是如何實(shí)現(xiàn)改名和壓縮功能的。
首先需要把原始的敏視達(dá)格式雷達(dá)基數(shù)據(jù)標(biāo)準(zhǔn)化命名,標(biāo)準(zhǔn)化的文件名如下“Z_RADR_I_Z9851_20180101005942_O_DOR_CD_CAP.bin”,其中只有“Z9851”和“20180101005942”兩個(gè)字段是變化的。“Z9851”字段是貴陽雷達(dá)站的站號,其它CD型天氣雷達(dá)站的這個(gè)字段就是其臺(tái)站號。“20180101005942”字段是archive基數(shù)據(jù)文件的生成時(shí)間(世界時(shí)),因?yàn)閍rchive文件不是一次寫入完成的,需要6~7 s才寫入完成,所以不能用archive文件的創(chuàng)建時(shí)間作為此字段,而應(yīng)該以archive文件的最后一次寫入時(shí)間作為該字段。RPGCA改進(jìn)版采用fileSystemWatcher控件實(shí)時(shí)監(jiān)控archive文件,一旦監(jiān)控到有新的archive文件創(chuàng)建,程序等待9 s后立即獲取當(dāng)前archive文件的“最后寫入時(shí)間”,將此時(shí)間轉(zhuǎn)換成世界時(shí)后,變?yōu)椤皔yyyMMddHHmmss”的格式,即可作為標(biāo)準(zhǔn)化的文件名的時(shí)間字段。
原版的RPGCA程序采用了bzip2格式壓縮文件,bzip2是Julian Seward公司開發(fā)并按照開源軟件協(xié)議發(fā)布的數(shù)據(jù)壓縮算法及程序。它是一款基于Burrows-Wheeler變換的無損壓縮軟件,是一款開放源代碼并且免費(fèi)的軟件,廣泛存在于UNIX和LNUX系統(tǒng)的許多發(fā)行版本中。bzip2能夠進(jìn)行高質(zhì)量的數(shù)據(jù)壓縮,它利用先進(jìn)的壓縮技術(shù),能夠把普通的數(shù)據(jù)文件壓縮10%~15%,壓縮的速度和解壓的效率都非常高。想要在C#中使用bzip2方式壓縮文件,需要在https://github.com/icsharpcode/SharpZipLib 網(wǎng)址下載ICSharpCode.SharpZipLib.dll文件,在C#中添加此dll文件的引用,并在程序中“using ICSharpCode.SharpZipLib.BZip2”。這樣就能在C#中調(diào)用此dll把a(bǔ)rchive文件壓縮為bzip2格式。
軟件的運(yùn)行流程如圖1所示。首先使用.Net中的fileSystemWatcher控件實(shí)時(shí)監(jiān)控archive基數(shù)據(jù)文件夾,一旦有新的基數(shù)據(jù)文件生成就立即進(jìn)入下一環(huán)節(jié),如果持續(xù)8 min都沒有新文件生成就立即報(bào)警,并且檢查本機(jī)是否能夠訪問archive基數(shù)文件夾,能訪問就重啟fileSystemWatcher控件,否則就提起局域網(wǎng)故障報(bào)警。因?yàn)楫?dāng)fileSystemWatcher控件監(jiān)控的目錄不是本地計(jì)算機(jī)時(shí),偶爾會(huì)丟失監(jiān)控功能,而且不能自動(dòng)重連,所以一旦超過預(yù)定時(shí)間沒有監(jiān)控到新文件生成就應(yīng)該重啟此控件[2]。
fileSystemWatcher控件一旦監(jiān)控到新的archive基數(shù)據(jù)文件生成,在等待9 s后,去獲取當(dāng)前archive基數(shù)據(jù)的最后寫入時(shí)間并轉(zhuǎn)化為世界時(shí),將其作為新文件名的日期字段,然后將此文件拷貝到本機(jī),壓縮改名。如果這個(gè)過程出現(xiàn)任何錯(cuò)誤就提起壓縮改名失敗報(bào)警。
改名壓縮后的基數(shù)據(jù)文件用ftp方式上傳省局服務(wù)器,上傳成功后把數(shù)據(jù)移動(dòng)到按日分類保存的文件夾里存檔。如果此文件上傳失敗,則檢查省地網(wǎng)是否正常,不正常就提起省地網(wǎng)故障報(bào)警,如果省地網(wǎng)正常則延時(shí)自動(dòng)補(bǔ)傳相應(yīng)的文件。
此外RPGCA改進(jìn)版還提供了手動(dòng)上傳功能,可以選擇單個(gè)或多個(gè)archive基數(shù)據(jù)改名壓縮上傳省局服務(wù)器。這些功能的提供彌補(bǔ)了原來RPGCA的短板,提高了數(shù)據(jù)上傳的實(shí)時(shí)性和穩(wěn)定性。

圖1 RPGCA改進(jìn)版軟件流程圖Fig.1 The software flow pattern of RPGCA improved version
該軟件自2018年3月1日正式開始運(yùn)行,截至2018年8月17日運(yùn)行情況良好,沒有出現(xiàn)異常跳出。軟件更名和壓縮功能正確無誤,上傳及時(shí)穩(wěn)定,沒有出現(xiàn)數(shù)據(jù)漏傳。在網(wǎng)絡(luò)故障恢復(fù)后能及時(shí)自動(dòng)補(bǔ)傳數(shù)據(jù),可以手動(dòng)選擇上傳文件。期間該程序所在計(jì)算機(jī)穩(wěn)定性和速度都有一定提高。圖2是軟件的運(yùn)行和設(shè)置界面。
新的RPGCA改進(jìn)版的使用提高了雷達(dá)基數(shù)據(jù)上傳的及時(shí)性和穩(wěn)定性,有效的提高了雷達(dá)資料應(yīng)用的時(shí)效性和可用性。不做任何修改即可推廣至其他CINRAD/CD型雷達(dá)站使用(其余型號雷達(dá)的基數(shù)據(jù)處理流程不一樣所以不能使用此軟件)。如有需要可在此鏈接(https://pan.baidu.com/s/1jNh2Em-A5D_hY7-ecIUroA)下載試用,并希望各位同仁給出寶貴的修改意見。

圖2 軟件運(yùn)行和設(shè)置界面Fig.2 Run and set the interface