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