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