吳長春+楊朝暉+盛安+楊超+王光波
摘 要:為了實(shí)現(xiàn)與水務(wù)部門及時(shí)分享特定時(shí)次的雷達(dá)產(chǎn)品,便于部門聯(lián)動(dòng)開展防災(zāi)減災(zāi)工作,該文采用.NET技術(shù)和Visual Basic.NET編程語言在VS2008開發(fā)環(huán)境下,開發(fā)了陽江市雷達(dá)產(chǎn)品傳輸程序。該程序?qū)崿F(xiàn)了自動(dòng)篩選當(dāng)前特定源數(shù)據(jù)和通過專用光纖傳輸目標(biāo)數(shù)據(jù)的功能。程序投入使用期間,運(yùn)行平穩(wěn),保證了特定時(shí)次雷達(dá)產(chǎn)品傳輸?shù)膶?shí)時(shí)性和可靠性,對(duì)推進(jìn)信息資源共享進(jìn)行了有效嘗試。
關(guān)鍵詞:雷達(dá)產(chǎn)品;傳輸;程序設(shè)計(jì)
中圖分類號(hào) TN959.4 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 1007-7731(2016)21-0091-04
Design and Implementation of Radar Products Transmission Program Based on .NET
Wu Changchun et al.
(Yangjiang Meteorological Office, Guangdong Province, Yangjiang 529500,China)
Abstract:In order to realize timely sharing specified radar data with the water sector, and resume its work on meteorological disaster prevention and mitigation through departmental interaction,the program is successfully developed in Microsoft Visual Studio IDE 2008 with VB.NET programming language.The technology of Microsoft Company-
.NET is adopted. The program can query the specified source data automatically,and transmit target data by using of the special optical fiber. It runs smoothly, during the period of its running, and guarantees the real-time and security in specified radar data transmission efficiently. This work is an effective attempt for information resource sharing.
Key words:Radar products;Transmission;Program design
當(dāng)前,氣象災(zāi)害已成為制約人類社會(huì)和經(jīng)濟(jì)可持續(xù)發(fā)展的重要因素,而我國是世界上受氣象災(zāi)害影響最為嚴(yán)重的國家之一[1]。廣東地處低緯、瀕臨海洋,天氣氣候異常復(fù)雜,是全國氣象災(zāi)害的頻發(fā)地區(qū),災(zāi)害性天氣全年都可能發(fā)生,且多種災(zāi)害可交替出現(xiàn),氣象原因引起的災(zāi)害占70%以上[2]。陽江市特殊的喇叭口地形增加了氣象災(zāi)害發(fā)生的強(qiáng)度和頻率,也相應(yīng)地提高了氣象防災(zāi)減災(zāi)的難度。
提高整個(gè)社會(huì)氣象防災(zāi)減災(zāi)能力,部門聯(lián)動(dòng)必不可少。為了切實(shí)增強(qiáng)氣象等災(zāi)害的監(jiān)測預(yù)報(bào)預(yù)警能力,充分發(fā)揮全市水文、氣象資源在防汛抗旱工作中的作用,陽江市氣象局和陽江市水務(wù)局簽訂了《陽江市氣象、水務(wù)合作框架協(xié)議》(2012年)。立足現(xiàn)代通信搭建氣象防災(zāi)減災(zāi)快速通道,是適應(yīng)現(xiàn)代社會(huì)需求,提升氣象業(yè)務(wù)服務(wù)能力,提高氣象服務(wù)的社會(huì)效益及經(jīng)濟(jì)效益的必然選擇[3]。而天氣雷達(dá)是探測降水系統(tǒng)的主要手段[4],天氣雷達(dá)對(duì)于所收集的氣象信息的傳輸保證了人們對(duì)臨近天氣狀況的掌握[5]。
基于上述協(xié)議的要求和具體需要,筆者進(jìn)行了本程序的開發(fā)。為了便于信息資料的共享,陽江氣象局與水務(wù)局先行架設(shè)了專用通信光纖,即使用專用網(wǎng)絡(luò)進(jìn)行雙方數(shù)據(jù)的交換共享。在互聯(lián)網(wǎng)的地址架構(gòu)中,專用網(wǎng)絡(luò)是指遵守RFC 1918和RFC 4193規(guī)范 [6]。專用網(wǎng)絡(luò)最大的優(yōu)點(diǎn)在于其安全性,外界無法進(jìn)入該網(wǎng)絡(luò),因而專用網(wǎng)絡(luò)的使用保證了雙方數(shù)據(jù)傳輸?shù)陌踩院屯暾浴?/p>
1 項(xiàng)目需求分析
氣象圖形產(chǎn)品不但能用于氣象專業(yè)領(lǐng)域,也能走進(jìn)尋常百姓家[7]。雷達(dá)圖形產(chǎn)品形象直觀,對(duì)于相關(guān)人員經(jīng)過培訓(xùn)后,能夠更直接地了解當(dāng)前的氣象信息、理解大氣演變及其變化趨勢[8]。
項(xiàng)目要求對(duì)雷達(dá)產(chǎn)品中的半點(diǎn)、整點(diǎn)的強(qiáng)度圖和速度圖在無人值守情況下能夠自動(dòng)篩選,然后按照給定的網(wǎng)絡(luò)地址進(jìn)行傳輸。為了保障源數(shù)據(jù)的可靠性和穩(wěn)定性,提供雷達(dá)產(chǎn)品的服務(wù)器只允許局域網(wǎng)客戶訪問其提供的數(shù)據(jù)資源,且不允許在該服務(wù)器新建、刪除等寫操作,而接受雷達(dá)產(chǎn)品的服務(wù)器(目的地服務(wù)器)允許通過來自專用光纖上指定IP的客戶進(jìn)行寫操作。通過分析雙方服務(wù)器給定的網(wǎng)絡(luò)權(quán)限可知,源數(shù)據(jù)服務(wù)器需要的安全級(jí)別高于目的地服務(wù)器。為了保證源數(shù)據(jù)服務(wù)器的安全運(yùn)行,要求在二者之間執(zhí)行雷達(dá)產(chǎn)品傳輸?shù)某绦虿荒苤苯舆\(yùn)行在源數(shù)據(jù)服務(wù)器上,即二者之間不能直接通信。因此,所開發(fā)的程序需要在氣象局局域網(wǎng)服務(wù)器上運(yùn)行,進(jìn)而便于在其源數(shù)據(jù)服務(wù)器和目的地服務(wù)器上進(jìn)行數(shù)據(jù)傳輸。事實(shí)上,該程序起到了橋梁的作用。
局域網(wǎng)服務(wù)器上的操作系統(tǒng)是Windows 2003 Server,該服務(wù)器操作系統(tǒng)包含公共語言運(yùn)行庫(Common Language Runtime,CLR)。CLR屬于.NET Framework的一部分,且是.NET Framework的基礎(chǔ)。.NET是一個(gè)程序設(shè)計(jì)層,它的設(shè)計(jì)理念是“多種語言,一個(gè)平臺(tái)”,不同于Java的“一種語言,多個(gè)平臺(tái)”[9]。即.NET能夠保證基于它的程序(無論是何種或幾種語言編寫)能夠兼容運(yùn)行,保證運(yùn)行環(huán)境的平穩(wěn),進(jìn)而避免為了程序運(yùn)行而額外搭建運(yùn)行環(huán)境,從而提高了程序開發(fā)效率。
CLR是.NET程序的運(yùn)行環(huán)境,能夠?yàn)?NET程序提供強(qiáng)大的后臺(tái)支撐。CLR運(yùn)行庫能夠?yàn)橥泄艽a提供各種服務(wù),如代碼訪問安全性、對(duì)象生存期管理等[10-12]。尤其重要的是,CLR能為.NET程序提供強(qiáng)大的垃圾回收機(jī)制,程序員不用考慮內(nèi)存如何釋放,可以更多關(guān)注應(yīng)用程序的功能實(shí)現(xiàn)上,而不必過多考慮程序運(yùn)行環(huán)境的平穩(wěn)。進(jìn)一步講,CLR實(shí)際工作中能夠?yàn)檫\(yùn)行在同一計(jì)算機(jī)的若干.NET程序合理分配內(nèi)存資源,并且及時(shí)回收已結(jié)束的程序所占用的資源,因而能夠防止內(nèi)存溢出,保障運(yùn)行環(huán)境的平穩(wěn)[13]。本項(xiàng)目要求的程序必須常駐內(nèi)存,循環(huán)執(zhí)行一系列指令,內(nèi)存開銷可觀,因而對(duì)內(nèi)存資源的占有要求較高。
因此,選用基于微軟.NET的Visual Studio軟件開發(fā)平臺(tái)具有天然的優(yōu)勢,CLR強(qiáng)大的后臺(tái)支撐能保證基于
.NET程序的安全平穩(wěn)運(yùn)行。VB.NET語言做為一種公認(rèn)高效簡潔的語言,能把編程人員從編寫復(fù)雜Windwows程序的繁瑣工作中解放出來,讓他們集中精力去解決實(shí)際問題[14]。最終,在Visual Studio 2008+.NET3.0開發(fā)環(huán)境下我們采用VB.NET語言成功開發(fā)了程序,實(shí)現(xiàn)了項(xiàng)目要求的功能。
2 程序設(shè)計(jì)路線與主要技術(shù)實(shí)現(xiàn)
程序采用單窗口界面編制。編制程序時(shí)考慮到了網(wǎng)絡(luò)地址可能出現(xiàn)的變更情況,因此,界面由兩個(gè)文本框分別作為源文件根目錄、目的地根目錄輸入框,程序默認(rèn)源文件和目的地地址。程序初始運(yùn)行時(shí),會(huì)讀取后臺(tái)保存的路徑信息。在完成每次雷達(dá)產(chǎn)品傳輸后,會(huì)顯示該時(shí)次產(chǎn)品完成的傳輸情況。為了便于查看程序運(yùn)行情況,程序界面右下方記錄最近一次開始運(yùn)行時(shí)間。程序運(yùn)行界面如圖1所示。
2.1 程序設(shè)計(jì)路線 完成文件傳輸?shù)挠卸喾N技術(shù),常用的比如FTP、HTTP等。項(xiàng)目程序在專用光纖上完成數(shù)據(jù)傳輸,能夠保證帶寬、網(wǎng)速穩(wěn)定和網(wǎng)絡(luò)安全,因此程序設(shè)計(jì)不必將過多精力放在網(wǎng)絡(luò)運(yùn)行狀態(tài)和網(wǎng)絡(luò)安全方面。雷達(dá)產(chǎn)品是以.gif存儲(chǔ)的圖像文件。GIF文件,因其體積小而成像相對(duì)清晰,它采用無損壓縮技術(shù),只要圖像不多于256色,則可既減少文件的大小,又保持成像的質(zhì)量[15]。因此,雷達(dá)圖形產(chǎn)品通常以以.gif存儲(chǔ)的圖像文件。常規(guī)雷達(dá)產(chǎn)品強(qiáng)度圖、速度圖容量僅有幾十KB大小。程序要循環(huán)訪問源文件根目錄、文件,目的地目錄、文件,涉及到文件及文件夾存在與否,根據(jù)時(shí)間在目的地服務(wù)器創(chuàng)建與源文件目錄對(duì)待的目錄,以便存放相應(yīng)雷達(dá)產(chǎn)品。程序要循環(huán)涉及到文件及文件夾的訪問,故本程序要實(shí)現(xiàn)以上功能,結(jié)合每個(gè)雷達(dá)產(chǎn)品的容量及程序所運(yùn)行的微軟服務(wù)器操作系統(tǒng),最終采用FSO(File System Object,文件系統(tǒng)對(duì)象)模型。通過采用object.method(對(duì)象方法)這種在面向?qū)ο缶幊讨袕V泛使用的技術(shù)[16-18],將一系列操作文件和文件夾的動(dòng)作通過調(diào)用對(duì)象本身的屬性直接實(shí)現(xiàn)。而FSO的實(shí)際應(yīng)用依賴于服務(wù)器是否開放FSO功能[19]。本項(xiàng)目程序所涉及到三方服務(wù)器,除了源服務(wù)器不允許寫操作外,其他兩個(gè)服務(wù)器均擁有完全的寫操作權(quán)限。因此,采用依托于.NET的FSO技術(shù)可以很好地實(shí)現(xiàn)項(xiàng)目要求。
根據(jù)項(xiàng)目要求,程序要無限次循環(huán)執(zhí)行,故采用了Timer控件,將FSO功能模塊鑲嵌在Timer模塊內(nèi),根據(jù)系統(tǒng)時(shí)間設(shè)置時(shí)間間隔,實(shí)現(xiàn)了程序的循環(huán)執(zhí)行。
考慮到程序所運(yùn)行的服務(wù)器存在不定時(shí)啟動(dòng)的情況,因而程序必須設(shè)為開機(jī)啟動(dòng)項(xiàng)。程序設(shè)置為開機(jī)啟動(dòng),保證程序開機(jī)自動(dòng)運(yùn)行。程序啟動(dòng)后,在load事件中觸發(fā)窗口“運(yùn)行”按鈕,然后“運(yùn)行”按鈕調(diào)用Timer模塊。如此,程序就會(huì)在無人值守情況下自動(dòng)運(yùn)行,執(zhí)行循環(huán)傳輸任務(wù)。程序設(shè)計(jì)及運(yùn)行路線,如圖2所示。
2.2 主要技術(shù)實(shí)現(xiàn)
2.2.1 雷達(dá)產(chǎn)品名稱命名、存放目錄命名和相關(guān)操作的算法 通過觀察解析雷達(dá)產(chǎn)品命名,不難發(fā)現(xiàn),雷達(dá)產(chǎn)品諸如YVCyyyyMMddhhmm.gif格式的命名,YVC表示產(chǎn)品類型,yyyyMMddhhmm表示以世界時(shí)命名(年月日時(shí)分),
.gif是后綴,表示產(chǎn)品是gif圖片格式。通過察看源數(shù)據(jù)服務(wù)器的雷達(dá)產(chǎn)品存放形式,是以多級(jí)目錄形式存放的。以世界時(shí)命名的雷達(dá)產(chǎn)品是存放在北京時(shí)命名的“/年/月/日”多級(jí)目錄里。因此我們在查找篩選指定整點(diǎn)和半點(diǎn)雷達(dá)產(chǎn)品時(shí),需要在以北京時(shí)為命名規(guī)則的目錄里篩選復(fù)制。在復(fù)制傳輸雷達(dá)產(chǎn)品的同時(shí),在目的地服務(wù)器創(chuàng)建以北京時(shí)命名的目錄,以滿足目的地服務(wù)器所在的雷達(dá)產(chǎn)品客戶端程序能夠讀取雷達(dá)產(chǎn)品。整個(gè)篩選傳輸流程見圖3所示。
按照給定多目錄存放提取系統(tǒng)日期后,因?yàn)槭澜鐣r(shí)晚于北京時(shí)8h,當(dāng)北京時(shí)間小于8時(shí),相應(yīng)時(shí)次雷達(dá)產(chǎn)品命名要利用函數(shù)DateAdd(timeinterva_,number,date)轉(zhuǎn)換??梢詫⒅付?number 時(shí)間間隔(有符號(hào)整數(shù))與指定的datepart 相加后,返回該 date。這里我們將timeinterval設(shè)置為“d”,即日,number設(shè)置為“-1”,date設(shè)置為“Now”,亦即當(dāng)前系統(tǒng)日期減1d。
2.2.2 Timer控件屬性設(shè)置 因?yàn)樾枰c(diǎn)和半點(diǎn)的230KM、460KM雷達(dá)強(qiáng)度圖及速度圖,為了減輕服務(wù)器負(fù)擔(dān),程序首先要判斷當(dāng)前時(shí)間中的時(shí)刻。鑒于雷達(dá)產(chǎn)品生成需要數(shù)分鐘時(shí)間,當(dāng)以最終雷達(dá)產(chǎn)品存放在源數(shù)據(jù)服務(wù)器時(shí)大概是在整點(diǎn)或半點(diǎn)后數(shù)分鐘后,因此鑒于兼顧傳輸?shù)募皶r(shí)性和避免空循環(huán)的雙重考慮,我們設(shè)定循環(huán)體的執(zhí)行時(shí)間為每個(gè)小時(shí)的第10min和第40min。
另外,timer控件執(zhí)行指令時(shí),需要一定的時(shí)間周期來完成,原理上會(huì)出現(xiàn)給定的時(shí)間片內(nèi)指令還無法完成的現(xiàn)象,而本項(xiàng)目采用的是專用光纖通信能夠保證傳輸速度和網(wǎng)絡(luò)穩(wěn)定,通過測試我們將timer的interval屬性設(shè)置為30 000ms(30s)能夠滿足實(shí)際需要。
3 結(jié)語
本項(xiàng)目首先綜合分析了服務(wù)器操作系統(tǒng)、通信網(wǎng)絡(luò)、安全權(quán)限等,根據(jù)服務(wù)器運(yùn)行的Windows2003 Sever操作系統(tǒng)這一實(shí)際情況,靈活采用了微軟.NET技術(shù),選用VB.NET編程語言開發(fā)了特定時(shí)次的雷達(dá)產(chǎn)品傳輸程序。專用通信光纖的架設(shè)為本程序平穩(wěn)運(yùn)行提供了物理介質(zhì)基礎(chǔ)。因此,本項(xiàng)目能夠?qū)崿F(xiàn)預(yù)期目標(biāo),是“軟硬兼施”的結(jié)果。本項(xiàng)目的完成是對(duì)跨部門信息共享的有效嘗試,為今后信息共享和數(shù)據(jù)傳輸積累了經(jīng)驗(yàn)。
參考文獻(xiàn)
[1]穆治霖.完善氣象災(zāi)害防御機(jī)制的思考[J].中國人口資源與環(huán)境,2008,18(4):15-19.
[2]林良勛,馮業(yè)榮,黃忠,等.廣東省天氣預(yù)報(bào)技術(shù)手冊[M].北京:氣象出版社,2006:10-11.
[3]羅雪玲,郭啟云,李戟.市級(jí)氣象臺(tái)公共氣象服務(wù)發(fā)布與管理平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].氣象科技,2014,42(4):635-640.
[4]俞小鼎,姚秀萍,能廷南,等.多普勒天氣雷達(dá)原理與業(yè)務(wù)應(yīng)用[M].北京:氣象出版社,2006.
[5]胡繼榮.氣象雷達(dá)數(shù)據(jù)的傳輸方式和算法的基本研究[J].電子設(shè)計(jì), 2016,24(4):125-127.
[6]專用網(wǎng)絡(luò)[EB/OL].[2016-06-19].http://baike.baidu.com/view/2150902.html.
[7]鄭虹暉.自動(dòng)氣象站數(shù)據(jù)圖形化應(yīng)用研究[D].長沙:國防科技大學(xué),2010.
[8]吳彬,李艷芳,張喜亮,等.湖州氣象圖形可視化軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].氣象水文海洋儀器,2013,1.
[9]Bryan Newsome,著.李周芳,陶永才,譯.Visual Basic 2012入門經(jīng)典[M].北京:清華大學(xué)出版社,2013.
[10]Wikipedia,Common Language Runtime.[EB/OL].[2016-08-02].https://en.wikipedia.org/wiki /Common-_LanguageRuntime.
[11]Paul Deotel,Harvey Deitel著,張君、張學(xué)敏等譯.Visual C#2012大學(xué)教程[M].北京:電子工業(yè)出版社,2014:10-11.
[12]Bill Sheldon,Billy Hollis,Rob Windsor,Paul Deotel,Harvey Deitel等著,王凈譯.NET4.5與Visual Basic 2012高級(jí)編程[M].北京:電子工業(yè)出版社,2014:48-49.
[13]Bill Sheldon,Billy Hollis,Rob Windsor,Paul Deotel,Harvey Deitel等著,王凈譯..NET4.5與Visual Basic 2012高級(jí)編程[M].北京.電子工業(yè)出版社,2014:59-60.
[14]Bryan Newsome,著.李周芳,陶永才,譯.Visual Basic 2012入門經(jīng)典[M].北京:清華大學(xué)出版社,2013.
[15]劉宏新,賈儒,周興宇,等.基于物元標(biāo)識(shí)的人機(jī)交互式機(jī)械排種器虛擬裝配[J].農(nóng)業(yè)工程學(xué)報(bào),2016,32(1).
[16]孫康生.應(yīng)用FSO對(duì)象模型實(shí)現(xiàn)文件查找的探討[J].開封大學(xué)學(xué)報(bào),2004,18(2).
[17]常婉綸.利用FSO 實(shí)現(xiàn)文本記錄導(dǎo)入ACCESS 數(shù)據(jù)庫[J].安慶師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2008,14(1).
[18]王小敏.JavaScript FSO實(shí)現(xiàn)客戶端XML文件讀寫Reading and Writ ing XML in the Client by JavaScript FSO[J].電腦開發(fā)與應(yīng)用,2010,(23)12.
[19]夏端峰,王建紅.FSO在ASP中的應(yīng)用及安全防范[J].科技信息,2007,30. (責(zé)編:張宏民)