張 茜,孫少明,王楠楠,陳陽權(quán)
(民航新疆空中交通管理局,烏魯木齊 830016)
隨著新疆被確定為絲綢之路經(jīng)濟(jì)帶核心區(qū),烏魯木齊國(guó)際機(jī)場(chǎng)作為西部樞紐機(jī)場(chǎng)的地位逐漸被確立,氣象用戶對(duì)氣象預(yù)報(bào)、氣象實(shí)況、氣象預(yù)警、氣象要素、氣候統(tǒng)計(jì)資料以及日常業(yè)務(wù)化報(bào)表統(tǒng)計(jì)效率的要求不斷提高[1]。民航新疆空管局氣象中心作為烏魯木齊氣象監(jiān)視臺(tái),監(jiān)視新疆22個(gè)機(jī)場(chǎng)的天氣實(shí)況,隨著新疆支線機(jī)場(chǎng)數(shù)量和航班流量的快速增長(zhǎng),新疆民航逐步進(jìn)入大流量時(shí)代,原有的氣象歷史資料查詢與統(tǒng)計(jì)系統(tǒng)目前已經(jīng)不能滿足航空用戶對(duì)氣象資料查詢及統(tǒng)計(jì)需求。氣象信息在用戶決策過程中的作用越來越明顯,對(duì)歷史氣象數(shù)據(jù)和天氣個(gè)例進(jìn)行分析研究是提高氣象預(yù)報(bào)和服務(wù)水平的有效方式。同時(shí),在日常工作中向用戶提供氣象歷史數(shù)據(jù)和數(shù)據(jù)統(tǒng)計(jì)等信息以及上報(bào)各種報(bào)表(如周報(bào)、月報(bào))等都需要使用歷史資料。無論是天氣研究還是統(tǒng)計(jì)報(bào)表,人工篩選和統(tǒng)計(jì)歷史數(shù)據(jù)都是非常困難的,需要耗費(fèi)大量的人力和時(shí)間。為使用戶能夠方便快捷地查詢和使用各類氣象資料以及幫助氣象預(yù)報(bào)員高效便捷地查詢和收集歷史資料,設(shè)計(jì)一套歷史資料查詢與統(tǒng)計(jì)系統(tǒng)是非常有必要的。
使用C#語言對(duì)機(jī)場(chǎng)自動(dòng)觀測(cè)數(shù)據(jù)進(jìn)行解碼,將解碼后的數(shù)據(jù)寫為特定的格式,歷史資料查詢和統(tǒng)計(jì)功能模塊將以ASP.NET為底層架構(gòu),通過使用HTML、JavaScript、CSS、Echarts、FineUI等Web技術(shù)搭建Web平臺(tái)[2],通過谷歌等瀏覽器進(jìn)行顯示,并且用戶可通過瀏覽器進(jìn)行交互式操作,該系統(tǒng)目前獨(dú)立運(yùn)行,將來可以依托氣象信息綜合服務(wù)系統(tǒng)進(jìn)行整合,以插件方式在服務(wù)系統(tǒng)中向使用者提供歷史資料查詢和統(tǒng)計(jì)功能。該系統(tǒng)所使用歷史數(shù)據(jù)主要包括機(jī)場(chǎng)實(shí)況、機(jī)場(chǎng)預(yù)報(bào)、重要?dú)庀笄閳?bào)和低空氣象情報(bào)等報(bào)文數(shù)據(jù),這些數(shù)據(jù)源以文件系統(tǒng)和數(shù)據(jù)庫兩種方式提供[3],二者互為備份,同時(shí)使用各類預(yù)警和通報(bào)產(chǎn)品,在統(tǒng)計(jì)報(bào)表時(shí)給用戶提供方便,數(shù)據(jù)源以文件系統(tǒng)方式提供[4],總體架構(gòu)如圖1所示。
圖1 歷史資料查詢與統(tǒng)計(jì)系統(tǒng)方案架構(gòu)
氣象歷史資料查詢與統(tǒng)計(jì)系統(tǒng)采用B/S架構(gòu),整體框架包括3級(jí)結(jié)構(gòu):1)數(shù)據(jù)環(huán)境,包括數(shù)據(jù)收集、處理、清洗、加工;2)計(jì)算層:相對(duì)濕度、報(bào)文信息、重要天氣日數(shù)、溫度信息和預(yù)警通報(bào)等信息的統(tǒng)計(jì)計(jì)算;3)顯示層:產(chǎn)品綜合顯示與交互分析。其中,數(shù)據(jù)環(huán)境負(fù)責(zé)數(shù)據(jù)的收集、處理,主要包括整點(diǎn)或半點(diǎn)的METAR報(bào)文數(shù)據(jù)資料的收集與加工;計(jì)算層負(fù)責(zé)將觀測(cè)到的溫度、露點(diǎn)溫度、氣壓等氣象要素作為輸入值計(jì)算。顯示層負(fù)責(zé)產(chǎn)品的顯示與分析,顯示歷史資料查詢結(jié)果、歷史要素查詢結(jié)果、報(bào)表統(tǒng)計(jì)查詢結(jié)果。顯示層在用戶交互查詢后,通過AJAX以json數(shù)據(jù)格式與后臺(tái)進(jìn)行交換。
氣象歷史資料查詢與統(tǒng)計(jì)系統(tǒng),分別是歷史報(bào)文查詢、歷史要素查詢、報(bào)表統(tǒng)計(jì)查詢3個(gè)子系統(tǒng)。各個(gè)子系統(tǒng)在設(shè)計(jì)過程中相互獨(dú)立,能夠?qū)崿F(xiàn)航空氣象報(bào)文、航空氣象要素、統(tǒng)計(jì)分析數(shù)據(jù)的查詢和下載。該系統(tǒng)的數(shù)據(jù)源包括與報(bào)文數(shù)據(jù)相關(guān)的歷史氣象數(shù)據(jù)庫,該數(shù)據(jù)庫為MySQL數(shù)據(jù)庫,主要存儲(chǔ)新疆區(qū)域METAR、SPECI、SIGMET、AIRMET、TAF、航空器空中報(bào)告等報(bào)文的歷史數(shù)據(jù),并在文件系統(tǒng)中以文件方式進(jìn)行備份,其他預(yù)警數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)服務(wù)器文件系統(tǒng)中。查詢和統(tǒng)計(jì)分析主要依靠數(shù)據(jù)庫和文件系統(tǒng)兩種方式進(jìn)行。
數(shù)據(jù)查詢和解碼的關(guān)鍵是對(duì)數(shù)據(jù)的清洗和校驗(yàn),清洗數(shù)據(jù)主要是對(duì)實(shí)況數(shù)據(jù)中重復(fù)項(xiàng)和錯(cuò)誤項(xiàng)進(jìn)行消除。由于實(shí)況和預(yù)報(bào)數(shù)據(jù)為協(xié)調(diào)世界時(shí),在做統(tǒng)計(jì)時(shí)需要將數(shù)據(jù)時(shí)間轉(zhuǎn)化為北京時(shí)。
數(shù)據(jù)檢索時(shí),對(duì)不同的報(bào)文需要設(shè)計(jì)不同的sql檢索語句。實(shí)況和預(yù)報(bào)的檢索語句為“select odate,otime,rptcontent from metmsg where odate>=@start and odate<=@end and cccc=@airport and tt=@type”,對(duì)于低空氣象情報(bào)和重要?dú)庀笄閳?bào),檢索語句為“select odate,otime,rptcontent from metabbr where odate>=@start and odate<=@end and cccc=@airport and tt=@type”。其中airport為機(jī)場(chǎng)的四字代碼,實(shí)況和預(yù)報(bào)的type為SP、SA、FC、FT等,低空氣象情報(bào)和重要?dú)庀笄閳?bào)的type為WA和WS。數(shù)據(jù)檢索的關(guān)鍵代碼如下所示:
MySqlDataReader read=cmd.ExecuteReader():
if (read!=null &&read.HasRows)
{
while (read.Read())
{
stringodate=(string)read["odate"]:
stringotime=(string)read["otime"]:
stringrptcontent=(string)read["rptcontent"]:
string data =odate + "," + rptcontent:
dataList.Add(data):
}
}
通過dataList.Distinct().ToList()語句去除重復(fù)。在獲取到報(bào)文數(shù)據(jù)列表dataList時(shí),需要對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行處理,錯(cuò)誤數(shù)據(jù)的更正在報(bào)文中以COR標(biāo)識(shí),去除錯(cuò)誤時(shí)保留該時(shí)間最后一個(gè)COR報(bào)文,該報(bào)文即為正確且唯一的報(bào)文數(shù)據(jù)。另外在統(tǒng)計(jì)時(shí),還需要對(duì)數(shù)據(jù)的時(shí)間進(jìn)行處理,通過正則表達(dá)式獲取時(shí)間信息,對(duì)該時(shí)間加8即可轉(zhuǎn)換為北京時(shí)。通過上述處理,可獲取到數(shù)據(jù)列表并進(jìn)行前端顯示、下載、數(shù)據(jù)解析等。
歷史報(bào)文查詢處理子系統(tǒng)實(shí)現(xiàn)歷史報(bào)文查詢、下載和圖形化功能。此功能包括實(shí)況報(bào)文、機(jī)場(chǎng)預(yù)報(bào)、重要?dú)庀笄閳?bào)、低空氣象情報(bào)的查詢和下載,在實(shí)況報(bào)文中對(duì)航空有重要影響的天氣如大風(fēng)、強(qiáng)降水、強(qiáng)對(duì)流、低能見度、凍降水等天氣現(xiàn)象,以醒目的顏色進(jìn)行標(biāo)識(shí),用戶可以更清楚地發(fā)現(xiàn)所查詢的重要天氣,并根據(jù)需要對(duì)數(shù)據(jù)進(jìn)行下載,下載結(jié)果按時(shí)間存儲(chǔ)為excel格式。除報(bào)文數(shù)據(jù)外,此功能還可對(duì)實(shí)況數(shù)據(jù)進(jìn)行解碼,以圖形化方式提供所選時(shí)段內(nèi)溫度、露點(diǎn)溫度、主導(dǎo)能見度、跑道視程的要素變化圖。
歷史資料查詢處理子系統(tǒng)收集的相關(guān)資料包括新疆轄區(qū)內(nèi)22個(gè)機(jī)場(chǎng)的機(jī)場(chǎng)例行觀測(cè)、特殊觀測(cè)數(shù)據(jù)、機(jī)場(chǎng)預(yù)報(bào)、重要?dú)庀笄閳?bào)、低空氣象情報(bào)、機(jī)場(chǎng)AWOS氣象要素變化圖形顯示資料等,在用戶選擇目標(biāo)機(jī)場(chǎng)方面支持輸入機(jī)場(chǎng)四字代碼和點(diǎn)擊機(jī)場(chǎng)列表兩種選擇方式,起止日期選擇采用日歷形式且歷史時(shí)長(zhǎng)不做限制。以風(fēng)速為例,當(dāng)實(shí)況或者預(yù)報(bào)風(fēng)速超過5 m/s時(shí),METAR報(bào)或者FC報(bào)顯示為藍(lán)色,當(dāng)實(shí)況或者預(yù)報(bào)風(fēng)速超過12 m/s時(shí),METAR報(bào)或者FC報(bào)顯示為紅色,極大地提高了流量室和區(qū)域管制管制員、航空公司簽派員、機(jī)場(chǎng)監(jiān)視臺(tái)預(yù)報(bào)員對(duì)當(dāng)時(shí)或者未來將可能發(fā)生危險(xiǎn)天氣機(jī)場(chǎng)的監(jiān)視和檢索效率。
歷史要素查詢子系統(tǒng)實(shí)時(shí)收集新疆轄區(qū)各機(jī)場(chǎng)天氣報(bào)告、特殊天氣報(bào)告,并對(duì)這些資料進(jìn)行解碼和質(zhì)量控制[5,6]。歷史要素查詢子系統(tǒng)包含查詢和下載功能,在用戶選擇目標(biāo)機(jī)場(chǎng)方面同樣支持輸入機(jī)場(chǎng)四字代碼和點(diǎn)擊機(jī)場(chǎng)列表兩種選擇方式,起止日期選擇采用日歷形式且歷史時(shí)長(zhǎng)不做限制。歷史要素查詢子系統(tǒng)對(duì)機(jī)場(chǎng)實(shí)況進(jìn)行解析,可以得到逐小時(shí)或逐半小時(shí)的風(fēng)向、風(fēng)速、陣風(fēng)、能見度、跑道視程、溫度、露點(diǎn)、相對(duì)濕度、修正海壓、天氣現(xiàn)象和云組等要素信息,并以表格形式按時(shí)間排序向用戶呈現(xiàn),同時(shí)對(duì)要素中大風(fēng)、低能見度、低云和重要天氣現(xiàn)象以醒目顏色進(jìn)行標(biāo)識(shí)[7],例如,當(dāng)烏魯木齊主導(dǎo)能見度低于1000 m,能見度顯示為紅色。用戶可以根據(jù)需要下載所查詢的表格,所下載的數(shù)據(jù)為excel表格數(shù)據(jù),同時(shí)可以根據(jù)需要進(jìn)行圖形繪制。歷史要素查詢子系統(tǒng)極大地減輕了氣候統(tǒng)計(jì)時(shí)由METAR報(bào)分解氣象要素的工作量,提高了生成氣象統(tǒng)計(jì)要素EXCEL表格的效率和質(zhì)量。
報(bào)表統(tǒng)計(jì)查詢子系統(tǒng)包含報(bào)文信息統(tǒng)計(jì)、重要天氣日數(shù)、溫度信息和預(yù)警通報(bào)信息4個(gè)子目錄。報(bào)文信息統(tǒng)計(jì)子目錄包含觀測(cè)類和預(yù)報(bào)類,觀測(cè)類包括實(shí)況報(bào)文份數(shù)、特殊報(bào)文份數(shù)、更正報(bào)文份數(shù)、修訂報(bào)文份數(shù)、趨勢(shì)預(yù)報(bào)份數(shù);預(yù)報(bào)類包括FC/FT報(bào)文份數(shù)、FC/FT修訂份數(shù)、FC/FT更正份數(shù)。重要天氣日數(shù)是指在航空氣象用戶所選時(shí)段內(nèi),出現(xiàn)某種重要天氣現(xiàn)象的天數(shù)(如降水日數(shù)、大風(fēng)日數(shù)等),天氣現(xiàn)象的日數(shù)反映了各種重要天氣現(xiàn)象在某時(shí)段內(nèi)的頻繁程度。在統(tǒng)計(jì)重要天氣日數(shù)子目錄中,常用的有降雨、中雨、大霧、冰雹、大霧、沙暴、浮塵、雷暴、大風(fēng)等重要天氣現(xiàn)象日數(shù)。在低能見度日數(shù)中又細(xì)分為Vis<1000 m,Vis<800 m,Vis<550 m,Vis<350 m;在跑道視程日數(shù)中又細(xì)分為RVR<550 m,RVR<400 m,RVR<200 m;并且在表格的下方顯示出重要天氣發(fā)生的具體時(shí)間,報(bào)表統(tǒng)計(jì)查詢子系統(tǒng)極大縮減了航空氣象用戶對(duì)特定時(shí)段內(nèi)重要天氣的檢索時(shí)間[8]。在溫度信息子目錄統(tǒng)計(jì)中,包括最高溫度、最低溫度、平均溫度、最高溫度出現(xiàn)時(shí)間、最低溫度出現(xiàn)時(shí)間。在預(yù)警通報(bào)信息子目錄中包括等級(jí)預(yù)警、機(jī)場(chǎng)警報(bào)、風(fēng)切變機(jī)場(chǎng)警報(bào)、區(qū)域預(yù)警、終端區(qū)預(yù)警、AIRMET份數(shù)、SIGMET份數(shù)、對(duì)流協(xié)同預(yù)報(bào)份數(shù)、48 h天氣通報(bào)、24 h天氣通報(bào)、12 h天氣通報(bào)、航空器報(bào)告、顛簸報(bào)告、積冰報(bào)告、風(fēng)切變報(bào)告和8.4海里報(bào)告等預(yù)警統(tǒng)計(jì)類別。另外報(bào)表統(tǒng)計(jì)查詢子系統(tǒng)還包含為新疆空管局氣象中心預(yù)報(bào)室定制的周四信息統(tǒng)計(jì)、周日信息統(tǒng)計(jì)、月信息統(tǒng)計(jì)等個(gè)性化功能,這些功能的開發(fā)大大提高了報(bào)表的準(zhǔn)確率和工作效率[9]。
基于B/S架構(gòu)的歷史資料查詢處理子系統(tǒng)的構(gòu)建滿足了新疆空管局氣象中心人員對(duì)報(bào)文及歷史氣象要素統(tǒng)計(jì)的需求,歷史資料查詢處理子系統(tǒng)極大地提高了流量室和區(qū)域管制室管制員、航空公司簽派員、機(jī)場(chǎng)監(jiān)視臺(tái)預(yù)報(bào)員監(jiān)視和檢索當(dāng)時(shí)或者未來將可能發(fā)生危險(xiǎn)天氣機(jī)場(chǎng)的效率,下一步可推廣至新疆空管局管制單位、轄區(qū)內(nèi)航空公司和支線機(jī)場(chǎng)氣象臺(tái),且推廣前景廣闊。歷史要素查詢子系統(tǒng)具備生成EXCEL氣象要素表格功能,該項(xiàng)功能極大地減輕了航空氣象用戶在氣候統(tǒng)計(jì)時(shí)由METAR報(bào)分解氣象要素的工作量,提高了氣象統(tǒng)計(jì)要素EXCEL表格的效率和質(zhì)量。報(bào)表統(tǒng)計(jì)查詢子系統(tǒng)提高了檢索報(bào)文信息、重要天氣日數(shù)、溫度信息的統(tǒng)計(jì)檢索效率,另外還包含了專門為新疆空管局氣象中心定制的周四信息統(tǒng)計(jì)、周日信息統(tǒng)計(jì)、月信息統(tǒng)計(jì)等個(gè)性化功能,這些功能的開發(fā)提高了報(bào)表的準(zhǔn)確率。