趙曄暉,廖彬武,梁希豪
(民航寧夏空管分局,寧夏 銀川 750009)
目前,民航氣象人員判斷天氣演變趨勢(shì)使用的氣象系統(tǒng)為氣象MⅠCAPS系統(tǒng)[1-3],該系統(tǒng)存在如下缺陷:資料更新時(shí)間間隔過長(zhǎng),MⅠCAPS 資料3 h 更新一次,而民航氣象人員需要未來(lái)0.5~2 h 區(qū)間的資料。中國(guó)氣象科研工作者結(jié)合信息地理系統(tǒng)[4-6]和計(jì)算機(jī)技術(shù)優(yōu)勢(shì),設(shè)計(jì)和開發(fā)了許多實(shí)用的氣象數(shù)據(jù)顯示系統(tǒng)。周欽強(qiáng)等[7]通過分析研究實(shí)時(shí)監(jiān)控技術(shù),建立自動(dòng)氣象站實(shí)時(shí)監(jiān)控模型,開發(fā)了自動(dòng)氣象站實(shí)時(shí)監(jiān)控系統(tǒng);李雁等[8]研究了區(qū)域自動(dòng)站特點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了區(qū)域自動(dòng)站監(jiān)控系統(tǒng)。這些系統(tǒng)雖然在日常工作中發(fā)揮了比較重要的作用,但總體來(lái)講,無(wú)法提供機(jī)場(chǎng)周邊實(shí)時(shí)的氣象資料,如何給預(yù)報(bào)員提供實(shí)時(shí)完善的氣象資料,尤其是機(jī)場(chǎng)周邊的氣象資料是整個(gè)民航氣象亟待解決的問題。
為解決以上問題,本文設(shè)計(jì)開發(fā)了氣象信息監(jiān)控系統(tǒng),能直觀地關(guān)注機(jī)場(chǎng)周邊天氣實(shí)時(shí)變化,為預(yù)報(bào)員決策提供手段和工具。系統(tǒng)采用B/S 架構(gòu)[9-10]進(jìn)行設(shè)計(jì),結(jié)合JavaScript 腳本語(yǔ)言和HTML 編碼,使用C#語(yǔ)言開發(fā)編碼。
程序使用Windows 系統(tǒng)自帶的Ⅰnternet 信息服務(wù)器作為Web 服務(wù)器,結(jié)合最新的開發(fā)技術(shù)相如ODBC、ASP.NET、B/S 模式等進(jìn)行設(shè)計(jì)和開發(fā)。系統(tǒng)框架結(jié)構(gòu)如圖1 所示,分為3 層,分別為展示層、邏輯層和數(shù)據(jù)訪問層,3 層之間相互關(guān)聯(lián),缺一不可,同時(shí)在功能上相互獨(dú)立,提高了系統(tǒng)的可擴(kuò)展性。
圖1 氣象信息監(jiān)控系統(tǒng)功能結(jié)構(gòu)圖
展示層包括站點(diǎn)設(shè)置、目錄設(shè)置、告警閾值設(shè)置、顯示設(shè)置4 部分內(nèi)容,主要對(duì)系統(tǒng)各項(xiàng)參數(shù)進(jìn)行設(shè)置。用戶在系統(tǒng)通過站點(diǎn)設(shè)置,確定系統(tǒng)顯示的站點(diǎn)位置和數(shù)量,目錄設(shè)置主要功能是通過設(shè)置默認(rèn)輸出目錄,將數(shù)據(jù)自動(dòng)保存到本地磁盤中。系統(tǒng)采用瀏覽器/服務(wù)器模式(B/S)進(jìn)行設(shè)計(jì),在網(wǎng)頁(yè)上對(duì)氣象信息進(jìn)行監(jiān)控顯示,告警閾值主要功能是當(dāng)站點(diǎn)某個(gè)要素超過所設(shè)閾值時(shí),系統(tǒng)顯示告警,同時(shí)將告警信息記錄在后臺(tái),用戶可對(duì)近期一段時(shí)間內(nèi)的告警信息進(jìn)行查詢分析。
邏輯層由自動(dòng)站資料、自動(dòng)觀測(cè)資料、數(shù)據(jù)庫(kù)資料、遙測(cè)資料、讀取解析、加載顯示6 部分組成。系統(tǒng)要處理的資料包括4 部分:氣象局自動(dòng)氣象站資料、機(jī)場(chǎng)自動(dòng)觀測(cè)系統(tǒng)資料、民航氣象數(shù)據(jù)庫(kù)資料和機(jī)場(chǎng)遙測(cè)系資料,設(shè)置一進(jìn)程,對(duì)上述4 種資料進(jìn)行解析,提取各個(gè)站點(diǎn)的氣象數(shù)據(jù)和經(jīng)緯度坐標(biāo),根據(jù)坐標(biāo)將氣象數(shù)據(jù)顯示在百度地圖上。系統(tǒng)默認(rèn)每5 min 更新一次數(shù)據(jù),為避免加載整個(gè)地圖,采用JQuery AJAX異步刷新技術(shù),更新站點(diǎn)數(shù)據(jù)而不加載整個(gè)地圖。
數(shù)據(jù)訪問層包括數(shù)據(jù)訪問模塊、氣象數(shù)據(jù)、ODBC數(shù)據(jù)庫(kù)訪問、SQL SERVER 數(shù)據(jù)庫(kù)、.XML 圖表、移動(dòng)終端6 部分,訪問層主要功能:使用SQL SERVER 2010 數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),采用ODBC 數(shù)據(jù)庫(kù)訪問技術(shù)讀取氣象數(shù)據(jù),設(shè)置一進(jìn)程,將數(shù)據(jù)下入XML 文件中,F(xiàn)usionchat 插件通過讀取XML 數(shù)據(jù),在地圖上以圖表形式顯示近期特殊天氣。
氣象信息監(jiān)控系統(tǒng)讀取寧夏地區(qū)各縣市自動(dòng)氣象站數(shù)據(jù)和機(jī)場(chǎng)實(shí)況天氣報(bào)告,并提取、解析,根據(jù)經(jīng)緯度坐標(biāo),將數(shù)據(jù)顯示標(biāo)注在百度地圖中,用戶鼠標(biāo)經(jīng)過該地區(qū)會(huì)自動(dòng)顯示重要數(shù)據(jù),當(dāng)用戶點(diǎn)擊該圖標(biāo)時(shí),系統(tǒng)會(huì)彈出窗口,顯示該地區(qū)詳細(xì)天氣信息。用戶還可以通過訪問民航氣象數(shù)據(jù)庫(kù)系統(tǒng),統(tǒng)計(jì)本場(chǎng)近1年來(lái)天氣變化趨勢(shì),使用Fusionchart 插件以圖表形式將天氣變化趨勢(shì)直觀顯示出來(lái)。同時(shí),由于寧夏地區(qū)站點(diǎn)較多,設(shè)計(jì)一個(gè)搜索對(duì)話框,用戶輸入要查詢的地點(diǎn)點(diǎn)擊搜索,直接定位到該站點(diǎn)。
氣象信息監(jiān)控系統(tǒng)分3 部分進(jìn)行設(shè)計(jì),分別為本地氣象自動(dòng)站數(shù)據(jù)模塊、河?xùn)|機(jī)場(chǎng)氣象要素監(jiān)控模塊、系統(tǒng)設(shè)置模塊,系統(tǒng)采集寧夏地區(qū)自動(dòng)站數(shù)據(jù)和河?xùn)|機(jī)場(chǎng)自動(dòng)觀測(cè)系統(tǒng)數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行分析處理,根據(jù)用戶需求將數(shù)據(jù)以合理的方式顯示在百度地圖上,系統(tǒng)功能結(jié)構(gòu)如圖2 所示。
圖2 氣象信息監(jiān)控系統(tǒng)功能結(jié)構(gòu)圖
本地氣象自動(dòng)站數(shù)據(jù)。對(duì)寧夏地區(qū)各縣市的氣象自動(dòng)站數(shù)據(jù)進(jìn)行讀取,數(shù)據(jù)在網(wǎng)頁(yè)上進(jìn)行顯示,設(shè)置一定時(shí)期數(shù)據(jù),每10 min 自動(dòng)更新一次。為有效監(jiān)控自動(dòng)站數(shù)據(jù),地圖上有數(shù)據(jù)的氣象站添加紅色覆蓋物,無(wú)數(shù)據(jù)的則不添加,通過紅色覆蓋物判斷站點(diǎn)資料是否完整。設(shè)置一導(dǎo)航按鈕,查看完其他地方的數(shù)據(jù)后,點(diǎn)擊導(dǎo)航按鈕,返回默認(rèn)地點(diǎn)。地圖精細(xì)化等級(jí)為7級(jí),可精細(xì)化至縣一級(jí),用戶雙擊鼠標(biāo)可對(duì)地圖進(jìn)行縮放,鼠標(biāo)單擊各站點(diǎn),會(huì)顯示溫度、濕度、風(fēng)向、風(fēng)速、氣壓、云高、雨量等詳細(xì)氣象要素。為方便查找站點(diǎn),設(shè)置一檢索按鈕,用戶輸入地點(diǎn),點(diǎn)擊檢索,地圖會(huì)自動(dòng)定位到該地點(diǎn),并顯示相關(guān)氣象數(shù)據(jù)。
河?xùn)|機(jī)場(chǎng)氣象要素監(jiān)控。主要功能讀取機(jī)場(chǎng)氣象自動(dòng)站資料和機(jī)場(chǎng)觀測(cè)員發(fā)報(bào)的實(shí)況報(bào)文,顯示在百度地圖上。為方便用戶使用,網(wǎng)頁(yè)上顯示最近3 h 內(nèi)的氣象數(shù)據(jù)。若本場(chǎng)出現(xiàn)復(fù)雜天氣如大風(fēng)、揚(yáng)沙時(shí),告警信息會(huì)顯示W(wǎng)eb 網(wǎng)頁(yè)上,提醒預(yù)報(bào)員。系統(tǒng)自動(dòng)統(tǒng)計(jì)每天的告警次數(shù),以文檔的方式記錄在后臺(tái)。
系統(tǒng)設(shè)置。主要功能是管理本地氣象自動(dòng)站數(shù)據(jù),設(shè)置系統(tǒng)相關(guān)參數(shù),實(shí)現(xiàn)對(duì)氣象自動(dòng)站站點(diǎn)的增加、刪除和修改功能。對(duì)報(bào)表默認(rèn)輸出目錄進(jìn)行設(shè)置,以便用戶進(jìn)行天氣復(fù)盤。對(duì)復(fù)雜天氣進(jìn)行報(bào)警閾值設(shè)置,如風(fēng)速大于10 m/s,能見度小于800 m 等,達(dá)到告警閾值時(shí),頁(yè)面出現(xiàn)告警信息。數(shù)據(jù)顯示設(shè)置,設(shè)置頁(yè)面顯示哪種氣象要素,如顯示風(fēng)向風(fēng)速、能見度等。
當(dāng)復(fù)雜天氣發(fā)生時(shí),氣象預(yù)報(bào)員短時(shí)間內(nèi)工作量急劇上升,需要分析的資料比較多,涉及到多個(gè)不同的氣象系統(tǒng)如氣象自動(dòng)站系統(tǒng)、氣象數(shù)據(jù)庫(kù)系統(tǒng)、本場(chǎng)遙測(cè)系統(tǒng)等,容易造成預(yù)報(bào)員工作的失誤。為進(jìn)一步提升預(yù)報(bào)工作質(zhì)量,使預(yù)報(bào)員能夠及時(shí)掌握最近一段時(shí)間內(nèi)天氣變化情況,氣象信息監(jiān)控系統(tǒng)通過訪問氣象數(shù)據(jù)庫(kù)系統(tǒng)、氣象自動(dòng)觀測(cè)系統(tǒng)、氣象遙測(cè)系統(tǒng)數(shù)據(jù),使用圖表Fusionchart 插件,結(jié)合XML 語(yǔ)言、JavaScript 腳本語(yǔ)言,將最近一段時(shí)間內(nèi)發(fā)生的復(fù)雜天氣(低能見度、強(qiáng)沙塵暴等)以圖形界面的方式直觀顯示在界面上。函數(shù)TransDataToXml 訪問氣象數(shù)據(jù)系統(tǒng)表rpt01_cac,讀取表中的氣象信息,轉(zhuǎn)化成XML數(shù)據(jù)形式。函數(shù)TransAwosToXml 讀取氣象自動(dòng)觀測(cè)系統(tǒng)六要素?cái)?shù)據(jù)壓、溫、濕、風(fēng)向、風(fēng)速、雨量,轉(zhuǎn)化成XML 數(shù)據(jù)形式。函數(shù)TransYaoceToXml 讀取氣象遙測(cè)系統(tǒng)六要素?cái)?shù)據(jù)壓、溫、濕、風(fēng)向、風(fēng)速、雨量,轉(zhuǎn)化成XML 數(shù)據(jù)形式。XML 轉(zhuǎn)換完畢后,將數(shù)據(jù)傳遞給后臺(tái),利用JavaScript 腳本語(yǔ)言讀取處理后臺(tái)數(shù)據(jù),處理完畢后通過Fusionchart 插件進(jìn)行繪圖,以圖表的方式顯示在百度地圖上,動(dòng)態(tài)顯示數(shù)據(jù)變化。
以銀川河?xùn)|機(jī)場(chǎng)為例,若本場(chǎng)出現(xiàn)復(fù)雜天氣如大風(fēng)、揚(yáng)沙時(shí),告警信息會(huì)自動(dòng)顯示在Web 網(wǎng)頁(yè)上,提醒預(yù)報(bào)員。系統(tǒng)自動(dòng)統(tǒng)計(jì)每天的告警次數(shù),以文檔的方式記錄在后臺(tái)。設(shè)置一函數(shù)GetⅠnfoFromDataBase 檢索氣象數(shù)據(jù)庫(kù)系統(tǒng),GetinfoFromAwos 讀取自動(dòng)站氣象數(shù)據(jù)六要素,將取到的數(shù)據(jù)返回Web 前端,前端通過JavaScript 腳本語(yǔ)言處理數(shù)據(jù),通過數(shù)據(jù)解析分解提取各個(gè)要素,結(jié)合經(jīng)緯度坐標(biāo)將數(shù)據(jù)準(zhǔn)確地顯示在百度地圖對(duì)應(yīng)的各級(jí)站點(diǎn)。使用AJAX 局部頁(yè)面刷新技術(shù),用戶鼠標(biāo)移動(dòng)至該站點(diǎn)時(shí),自動(dòng)刷新該站點(diǎn)部分常規(guī)數(shù)據(jù),若用戶想進(jìn)一步了解詳細(xì)信息,雙擊該站點(diǎn),會(huì)看到該站點(diǎn)的詳細(xì)信息。機(jī)場(chǎng)周邊若突然發(fā)生復(fù)雜天氣(大風(fēng)、強(qiáng)沙塵暴、低能見度等),系統(tǒng)會(huì)有告警提醒,并以醒目的顏色標(biāo)注在地圖上。
JQuery AJAX 頁(yè)面局部刷新技術(shù)。在氣象信息監(jiān)控系統(tǒng)中,鼠標(biāo)經(jīng)過相關(guān)站點(diǎn)時(shí),顯示該站點(diǎn)的最新數(shù)據(jù),只刷新一個(gè)站點(diǎn),其他站點(diǎn)數(shù)據(jù)不刷新,采用傳統(tǒng)技術(shù)時(shí),刷新一個(gè)站點(diǎn),整個(gè)網(wǎng)頁(yè)頁(yè)面所有的站點(diǎn)必須刷新,地圖所有資源重新加載,導(dǎo)致資源浪費(fèi),系統(tǒng)響應(yīng)速度慢。為解決這一問題,采用AJAX 頁(yè)面局部刷新技術(shù)。AJAX(Asynchronous JavaScript And XML)即異步JavaScript 和XML,是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù),通過在后臺(tái)與服務(wù)器進(jìn)行少量的數(shù)據(jù)交換,實(shí)現(xiàn)網(wǎng)頁(yè)異步更新,在不加載整個(gè)網(wǎng)頁(yè)的情況下加載部分網(wǎng)頁(yè)。主要優(yōu)點(diǎn):實(shí)現(xiàn)客戶端的異步請(qǐng)求操作,在不需要刷新頁(yè)面的情況下與服務(wù)器進(jìn)行通信,減少用戶的等待時(shí)間,減輕服務(wù)器和帶寬的負(fù)擔(dān),提供更好的服務(wù)響應(yīng)。本系統(tǒng)中,鼠標(biāo)移動(dòng)到站點(diǎn)時(shí),觸發(fā)函數(shù)在Web 前端調(diào)用后臺(tái)進(jìn)程讀取數(shù)據(jù),讀取的數(shù)據(jù)直接返回給前端進(jìn)行顯示,不需要加載整個(gè)系統(tǒng)就能刷新站點(diǎn)資料。
覆蓋物MARKER 標(biāo)志嵌入技術(shù)。系統(tǒng)通過加載百度MARKER 覆蓋物技術(shù),實(shí)現(xiàn)各氣象站點(diǎn)的氣象信息顯示。標(biāo)志物MARKER 根據(jù)經(jīng)緯度坐標(biāo),在系統(tǒng)地圖初始化時(shí)加載到各個(gè)站點(diǎn),每個(gè)站點(diǎn)的覆蓋物設(shè)置為靜止的橢圓形,MARKER 覆蓋物響應(yīng)鼠標(biāo)移動(dòng),當(dāng)鼠標(biāo)移動(dòng)至覆蓋物時(shí),觸發(fā)鼠標(biāo)移動(dòng)函數(shù)讀取氣象數(shù)據(jù),并顯示氣象信息。若想要進(jìn)一步了解詳細(xì)氣象信息,點(diǎn)擊覆蓋物,觸發(fā)鼠標(biāo)點(diǎn)擊函數(shù),通過彈出的對(duì)話框,顯示該站點(diǎn)的詳細(xì)數(shù)據(jù)。具體實(shí)現(xiàn)過程通過調(diào)用百度地圖JS 離線包或者在線包:①根據(jù)各個(gè)站點(diǎn)提供的經(jīng)緯度坐標(biāo),加載覆蓋物MARKER 到地圖上,由于站點(diǎn)較多,采用數(shù)組存放經(jīng)緯度坐標(biāo);②在各個(gè)覆蓋物上添加鼠標(biāo)移動(dòng)和點(diǎn)擊的響應(yīng)函數(shù)StrMouseMove 和MouseMoveAndClick;③響應(yīng)函數(shù),讀取數(shù)據(jù)并顯示。
本系統(tǒng)運(yùn)行環(huán)境為Windows7 操作系統(tǒng),采用面向?qū)ο笏枷脒M(jìn)行設(shè)計(jì),前臺(tái)開發(fā)語(yǔ)言為C#,結(jié)合JavaScirpt 腳本語(yǔ)言、JQuery AJAX、Fusionchart 插件開發(fā)完成該系統(tǒng),實(shí)現(xiàn)氣象信息的實(shí)時(shí)顯示、局部刷新、統(tǒng)計(jì)分析等功能。
本文提出一種以直觀方式顯示銀川河?xùn)|機(jī)場(chǎng)周邊站點(diǎn)天氣變化的系統(tǒng),系統(tǒng)通過服務(wù)器端訪問氣象自動(dòng)站和機(jī)場(chǎng)氣象數(shù)據(jù)庫(kù),數(shù)據(jù)通過JSON 格式采用AJAX 異步傳輸技術(shù)傳遞到瀏覽器端,瀏覽器端利用經(jīng)緯度和百度地圖APⅠ將各個(gè)站點(diǎn)氣象數(shù)據(jù)在地圖上顯示出來(lái)。在百度地圖應(yīng)用方面,主要采用百度地圖的加載、MARKER 覆蓋物添加、函數(shù)響應(yīng)、地理信息獲、Fusionchart 繪圖等技術(shù),并給出了相關(guān)代碼。在氣象要素的顯示方面,主要實(shí)現(xiàn)了區(qū)域內(nèi)各自動(dòng)站氣象要素的提取、訪問、解析以及快速展示,機(jī)場(chǎng)氣象數(shù)據(jù)庫(kù)氣象要素的訪問、展示、統(tǒng)計(jì),分析最近一段時(shí)間的復(fù)雜天氣等功能。同時(shí)為加快數(shù)據(jù)響應(yīng),實(shí)現(xiàn)鼠標(biāo)移動(dòng)時(shí)局部站點(diǎn)氣象信息刷新,本系統(tǒng)采用AJAX異步傳輸技術(shù),在不重新加載百度地圖的情況下,實(shí)現(xiàn)單個(gè)站點(diǎn)更新氣象數(shù)據(jù),克服了全部站點(diǎn)一起更新系統(tǒng)響應(yīng)慢的問題,使得頁(yè)面加載速度非常迅速,在日常業(yè)務(wù)應(yīng)用中效果明顯。