趙 曄 暉
(民航寧夏空管分局氣象臺, 寧夏 銀川 750009)
準確判斷復雜天氣演變趨勢,及時發(fā)布氣象預報,這是民航氣象預報員工作的重要內(nèi)容。氣象預報的準確率問題尤其是復雜天氣預報的準確率問題,是氣象預報系統(tǒng)研究的熱點和難點問題。劉艷中等人對氣象自動站數(shù)據(jù)進行歸類,結(jié)合百度地圖,研究了氣象自動站系統(tǒng)數(shù)據(jù)的監(jiān)控問題[1-2];白學文等人探討了百度地圖在氣象精細化預報中的作用[3];朱劍明等人以百度地圖API為基礎(chǔ),結(jié)合預報員需求,設(shè)計了基于百度地圖API的全國機場天氣警報系統(tǒng)[4]。他們的研究成果都具有十分重要的實用價值,但現(xiàn)有系統(tǒng)在數(shù)據(jù)顯示方面仍然存在一些不足。
為了解決民航氣象預報系統(tǒng)在數(shù)據(jù)顯示方面的問題,我們研究設(shè)計了基于百度地圖API的氣象信息顯示系統(tǒng)。該系統(tǒng)采集寧夏地區(qū)各縣市部署的區(qū)域氣象自動站數(shù)據(jù),按經(jīng)緯度坐標[5]實時將各種氣象要素顯示到百度地圖上,同時將銀川河東機場發(fā)布的實況報文信息以圖形化方式顯示出來。通過改進傳統(tǒng)字符串搜索算法[6-7],提高了查找效率。
氣象信息顯示系統(tǒng)的總體架構(gòu)如圖1所示。該系統(tǒng)包括客戶端、民航氣象數(shù)據(jù)庫服務器、Web服務器、百度地圖API服務器、氣象自動站服務器和瀏覽器、路由器、防火墻、交換機。系統(tǒng)設(shè)計模式基于BS架構(gòu),客戶端先通過Web服務器訪問民航氣象防火墻,獲得允許后訪問氣象數(shù)據(jù)庫系統(tǒng)服務器和氣象自動站服務器,獲取機場實況報文信息及寧夏地區(qū)各縣市氣象要素。通過Internet將數(shù)據(jù)發(fā)送給瀏覽器,瀏覽器訪問百度地圖API服務器,最后在瀏覽器上將機場氣象報文和寧夏地區(qū)氣象自動站數(shù)據(jù)疊加在百度地圖上。
圖1 氣象信息顯示系統(tǒng)的總體架構(gòu)
假設(shè)有一字符串a(chǎn)為BBCABCDABABCDABCDABDE,需要搜索的字符串b為ABCDABD。按照傳統(tǒng)算法,要把需搜索字符串的每個字符拿去與已有字符串逐一進行比對。其中,存在一個位置重復比對多次的情況,效率較差,而復雜度較高。假設(shè)兩個字符串長度分別為n和m,這種算法的時間復雜度O=m*n?,F(xiàn)在對傳統(tǒng)算法稍做改進,可在搜索過程中去掉重復比較的部分,優(yōu)化搜索詞每次移動的位數(shù)。
以搜索字符串ABCDABD為例:
A的前綴和后綴均為空,共有元素長度為0;
AB的前綴{[A]}與后綴{[B]}共有元素長度為0;
ABC的前綴{[A,AB]}和后綴{[BC,C]}共有元素長度為0;
ABCD的前綴{[A,AB,ABC]}和后綴{[BCD,CD,D]}共有元素長度為0;
ABCDA的前綴{[A,AB,ABC,ABCD]}和后綴{[BCDA,CDA,DA,A]}共有元素長度為1[A];
ABCDAB的前綴{[A,AB,ABC,ABCD,ABCDA]和后綴{[BCDAB,CDAB,DAB,AB,B]}共有元素最大長度為2[AB];
ABCDABD的前綴{[A,AB,ABC,ABCD,ABCDA,ABCDAB]和后綴{[BCDABD,CDABD,DABD,ABD,BD,D]}共有元素最大長度為0。
于是,ABCDABD的前綴和后綴最長公共元素如表1所示。
表1 字符串最長公共元素
按照新的匹配算法,搜索字符串移動位數(shù)為已經(jīng)匹配的字符數(shù)減去對應的部分匹配值。要在字符串a(chǎn)中,搜索字符串b,算法流程(見圖2)如下。
(1) 比對字符串a(chǎn)與b的第一個字符。
(2) 比對結(jié)果,B與A不匹配,字符串b后移一位。
(3) b的第一個字符A與a的第二個字符B不匹配,字符串b后移一位。
(4) 重復第一、第二步,直到發(fā)現(xiàn)字符串a(chǎn)有一個字符與搜索字符串b的第一個字符相同。
(5) 比對結(jié)果相同,則比較a和b的下一個字符。
(6) 重復前面的步驟,直到比對完字符串b的所有字符。
搜索詞后移位數(shù)為已經(jīng)匹配的字符減去部分匹配值。如果兩個字符串的長度分別為n和m,經(jīng)過優(yōu)化后,算法的時間復雜度降低,O=m+n,提高了搜索效率。
圖2 字符串搜索算法流程
系統(tǒng)功能包括氣象自動站數(shù)據(jù)顯示、機場氣象數(shù)據(jù)監(jiān)控、系統(tǒng)設(shè)置三大部分(見圖3)。
(1) 顯示地方氣象自動站數(shù)據(jù)。讀取寧夏各縣區(qū)氣象自動站數(shù)據(jù),在Web頁面上進行實時監(jiān)控顯示,每10 min自動刷新一次數(shù)據(jù)。地圖顯示等級為7級,用戶雙擊鼠標,對百度地圖進行縮放。鼠標點擊相關(guān)縣區(qū)氣象站,會顯示溫度、濕度、風向、風速、氣壓、云高、雨量等詳細氣象要素。設(shè)有檢索按鈕,用戶輸入地點,點擊檢索,地圖會自動定位到該地點,并顯示相關(guān)氣象數(shù)據(jù)。為有效監(jiān)控自動站數(shù)據(jù),地圖上有數(shù)據(jù)的氣象站添加紅色覆蓋物,無數(shù)據(jù)的則不添加。通過紅色覆蓋物,可判斷站點資料是否完整。
(2) 監(jiān)控機場氣象數(shù)據(jù)。管理顯示從機場獲取的數(shù)據(jù),讀取機場氣象自動站數(shù)據(jù)和發(fā)布的實況報文,顯示在百度地圖上。為方便預報員進行天氣趨勢判斷,網(wǎng)頁上顯示最近3 h內(nèi)的氣象數(shù)據(jù)。
(3) 系統(tǒng)設(shè)置。對系統(tǒng)參數(shù)進行設(shè)置,管理本地自動氣象站數(shù)據(jù)??蓪Ρ镜刈詣託庀笳菊军c進行增加、刪除;可設(shè)置報表默認輸出目錄,方便預報員對以往數(shù)據(jù)進行查看復盤;可設(shè)置復雜天氣告警條件,如風速大于8 ms,能見度小于1 000 m等,達到預警閾值時,頁面出現(xiàn)告警信息。
圖3 系統(tǒng)功能結(jié)構(gòu)
系統(tǒng)使用Windows 7自帶的IIS(Internet 信息服務器)作為Web服務器,結(jié)合相關(guān)技術(shù)如Web Service、ASP.NET、SQL SERVER Agent等進行軟件開發(fā)。系統(tǒng)框架結(jié)構(gòu)分為3層,分別為表示層、業(yè)務邏輯層和數(shù)據(jù)訪問層,在邏輯上相互獨立,有利于后期系統(tǒng)的擴展(見圖4)。
圖4 系統(tǒng)架構(gòu)
(1) 表示層。由氣象信息監(jiān)控和參數(shù)設(shè)置2個部分組成,采用瀏覽器服務器模式(BS)進行設(shè)計,在網(wǎng)頁上對氣象信息進行監(jiān)控顯示。當站點某個要素超過所設(shè)閾值時系統(tǒng)顯示告警,同時將告警信息記錄在后臺,用戶可對近期一段時間內(nèi)的告警信息進行查詢分析。通過參數(shù)設(shè)置,用戶對系統(tǒng)進行控制,如設(shè)置站點數(shù)量、告警閾值、氣象要素、文檔默認輸出目錄等。用戶可根據(jù)不同天氣狀況,靈活設(shè)置各項參數(shù)。
(2) 業(yè)務邏輯層。采用Java Script定時器和JQuery AJAX異步刷新技術(shù)。定時器每10 min循環(huán)啟動一次,后臺進程讀取地方自動站氣象資料和機場氣象資料,并對資料進行解析,抽取所需氣象要素和相關(guān)經(jīng)緯度坐標。設(shè)置一進程,讀取解析后的氣象數(shù)據(jù),根據(jù)經(jīng)緯度坐標將數(shù)據(jù)在百度地圖上進行加載顯示。百度地圖比較大,每次只需更新相關(guān)站點資料,無需重新加載全部地圖。采用JQuery AJAX異步刷新技術(shù),在不重新加載地圖的情況下,更新站點數(shù)據(jù)。
(3) 數(shù)據(jù)訪問層。由數(shù)據(jù)訪問模塊、圖表配置訪問模塊和服務訪問模塊組成。數(shù)據(jù)訪問模塊,采用基于ADO.NET數(shù)據(jù)庫訪問技術(shù),創(chuàng)建訪問SQL SERVER數(shù)據(jù)庫的程序接口。圖表配置模塊,讀取氣象資料,寫入數(shù)據(jù)到XML文件進行配置。Fusionchart插件通過讀取配置后的.XML文件,圖形化顯示近期復雜天氣。
3.3.1 JSON數(shù)據(jù)結(jié)構(gòu)設(shè)計
JSON(JavaScript Object Notation)是存儲和交換文本信息的一種語法,是一種輕量級的數(shù)據(jù)交換格式,類似于XML,但比XML更小、更快、更容易進行解析,通常用于在服務器之間進行數(shù)據(jù)交換。JSON數(shù)據(jù)結(jié)構(gòu)包括映射集合({})、并列集合([])。JSON數(shù)據(jù)格式為:名稱賦值,用“,”表示并列數(shù)據(jù),用“:”表示映射。
系統(tǒng)包含寧夏地區(qū)部署的氣象自動站實時氣象數(shù)據(jù)、銀川河東機場自動觀測系統(tǒng)數(shù)據(jù)以及機場氣象數(shù)據(jù)庫報文數(shù)據(jù),這些氣象數(shù)據(jù)信息以JSON數(shù)據(jù)格式從服務器端傳輸給瀏覽器端。處理后的氣象自動站系統(tǒng)數(shù)據(jù)如表2所示,提取后的機場氣象數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)如表3所示。
表2 氣象自動站系統(tǒng)數(shù)據(jù)元素
表3 氣象數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)元素表
銀川河東機場地處靈武市與賀蘭縣之間,靈武和賀蘭的氣象自動站數(shù)據(jù)對機場具有比較高的參考價值。以靈武、賀蘭為例,其氣象自動站數(shù)據(jù)的JSON格式為:
[{“city”:“賀蘭”,“l(fā)ng”:“|38.55”,“l(fā)at”:“106.35”,“wddir”:“北風”,“wdspe”:“8.2”,“pre”:“1013.1”,“tep”:“7.5”, “hum”:“42%”, “clo”:“NCD”, “rai”:“”}……]
以機場氣象臺發(fā)布的實況報文為例,銀川河東機場氣象數(shù)據(jù)庫系統(tǒng)氣象數(shù)據(jù)的JSON數(shù)據(jù)格式為:
[{“cccc”:“ZLIC”,“tt”:“SA”,“kk”:“37”,“cont”:“METAR ZLIC 220200Z 03002MPS 9000 NSC M06M16 Q1030 NOSIG=”, “temp”:“8.1”,“vis”:“9000”,“wddir”:“30”,“wdspd”:“02”,“pw”:“”,“hum”:“40%”}……]
3.3.2 機場近期復雜天氣統(tǒng)計顯示
為方便預報員準確分析近期天氣,提升預報準確率,系統(tǒng)使用Fusionchart插件,結(jié)合XML語言、JavaScript訪問氣象數(shù)據(jù)庫,將最近河東機場發(fā)生的復雜天氣要素如大風、沙塵、能見度等以柱狀條形圖的形式顯示在頁面上。設(shè)置一函數(shù),將取到的數(shù)據(jù)庫值轉(zhuǎn)化成XML格式,然后將數(shù)據(jù)傳遞給后臺JavaScript;JavaScript利用獲取的數(shù)據(jù),結(jié)合Fusionchart插件,進行繪圖顯示。
3.3.3 氣象數(shù)據(jù)的獲取與顯示
使用百度地圖地理信息定位技術(shù),構(gòu)建基于站點定位的氣象信息顯示系統(tǒng)。為方便應用,系統(tǒng)設(shè)計分為2個部分。在系統(tǒng)界面左上角設(shè)計一個搜索對話框,在對話框中輸入站點,可快速定位到相關(guān)站點,查看其信息。系統(tǒng)界面中間為寧夏地區(qū)各縣市氣象自動站信息,在此區(qū)域移動和點擊鼠標時,會顯示當?shù)刈詣诱練庀笮畔?。界面右邊,統(tǒng)計顯示銀川河東機場自動觀測系統(tǒng)近一年來的復雜天氣要素如大風、沙塵、能見度的變化柱狀圖,鼠標經(jīng)過柱狀圖時,數(shù)據(jù)自動進行局部刷新。
從字符搜索效率、實時性和系統(tǒng)穩(wěn)定性3個方面,對系統(tǒng)進行分析評估。
傳統(tǒng)算法的時間復雜度O=m*n,改進后算法的時間復雜度O=m+n,搜索速度有所提高。實驗環(huán)境:Win7操作系統(tǒng),內(nèi)存4.0 G,操作平臺是Visual studio 2012;選取的樣本容量為10 MB數(shù)據(jù)的文本文檔,匹配串為10~45字節(jié),梯度為5。實驗目的:測試傳統(tǒng)算法和改進算法的字符搜索效率。測試結(jié)果見表4。
表4 兩種算法的字符串搜索時間
從表4可以看出,與傳統(tǒng)的搜索算法相比,改進后的算法優(yōu)勢明顯。在字符串相同的情況下,改進后算法搜索所用時間,僅為傳統(tǒng)算法用時的1.69%~1.85%。隨著匹配字符串長度的增加,搜索用時有所增加,但增加幅度較小,也就是說匹配字符串的長度對算法結(jié)果的影響很小。
系統(tǒng)設(shè)置了定時器,每10 min對數(shù)據(jù)更新一次,保證了用戶對數(shù)據(jù)的實時性要求。為加快數(shù)據(jù)響應,在鼠標移動時,實現(xiàn)局部站點氣象信息刷新。鼠標移動至某個站點時,該站點的數(shù)據(jù)立即進行更新。系統(tǒng)采用AJAX異步傳輸技術(shù),在不重新加載百度地圖的情況下,實現(xiàn)單個站點更新氣象數(shù)據(jù),克服了全部站點一起更新而系統(tǒng)響應慢的問題。從技術(shù)上保障了實時性功能的實現(xiàn),頁面加載速度非常迅速,在日常業(yè)務應用中效果明顯。
選取2017年6月1日至8月1日為一個運行周期,測試軟件系統(tǒng)運行的穩(wěn)定性。軟件系統(tǒng)在60×24 h不間斷的運行環(huán)境下,未出現(xiàn)數(shù)據(jù)更新不及時、地圖無法加載、用戶無響應、運行速度慢等異?,F(xiàn)象。在自動站數(shù)量達到一定規(guī)模時,系統(tǒng)均正常工作,無數(shù)據(jù)丟失現(xiàn)象出現(xiàn)。在這期間,用戶均可以通過客戶端進行訪問。在2017年銀川河東機場的氣象保障、報文發(fā)布、風切變預警等多次氣象服務中,該系統(tǒng)運行穩(wěn)定,發(fā)揮了重要作用,效果明顯。