李若楠,吳佳麗,劉 暢,張微瑋,楊 冰
(1.遼寧省新賓滿族自治縣氣象局,遼寧新賓132000;2.遼寧省遼陽市氣象局,遼寧遼陽111000)
24 h最高溫度、最低溫度預(yù)報是電視天氣預(yù)報節(jié)目對公眾發(fā)布的基本氣象服務(wù),也是最重要的氣象服務(wù)之一,目前縣級臺站制作的鄉(xiāng)鎮(zhèn)天氣預(yù)報和未來24 h溫度預(yù)報均是以本站的天氣預(yù)報為基礎(chǔ)進(jìn)行鄉(xiāng)鎮(zhèn)訂正預(yù)報。新賓縣下轄15個鄉(xiāng)鎮(zhèn),根據(jù)多年自動站溫度要素分析以及預(yù)報經(jīng)驗,發(fā)現(xiàn)每個鄉(xiāng)鎮(zhèn)的溫度及天氣狀況均有所差異,在預(yù)報時需要根據(jù)不同的訂正值和天氣狀況對每個鄉(xiāng)鎮(zhèn)的天氣要素進(jìn)行訂正預(yù)報,而在制作鄉(xiāng)鎮(zhèn)訂正預(yù)報產(chǎn)品時,還是依靠傳統(tǒng)的手算和人工制作的方法,誤差大,且費時費力,增加了業(yè)務(wù)人員的工作量,更不便于日后的統(tǒng)計和管理。因此,研發(fā)一個具有可視化多功能的鄉(xiāng)鎮(zhèn)溫度預(yù)報訂正和數(shù)據(jù)處理軟件,對于基層臺站業(yè)務(wù)減負(fù)、實現(xiàn)自動化工作意義重大。筆者基于Matlab Gui開發(fā)軟件,編寫生成具有訂正鄉(xiāng)鎮(zhèn)溫度預(yù)報和數(shù)據(jù)統(tǒng)計處理功能的軟件。
1.1 圖形用戶界面開發(fā)環(huán)境 圖形用戶界面GUI(Graphical User Interfaces)是由各種圖形對象,如圖形窗口、圖軸、按鈕、菜單、文本框等對象(Objects)構(gòu)成的用戶界面,其開發(fā)環(huán)境提供了一組用于用戶界面開發(fā)的工具,是人際交流信息的工具和方法,在該界面內(nèi),用戶可以根據(jù)界面提示完成整個工程而不必去了解工程內(nèi)部是如何工作的,利用Gui設(shè)計圖形用戶界面時,可通過GUI應(yīng)用屬性設(shè)置編輯器來設(shè)置對句柄操作的響應(yīng)[1-3]。
1.2 函數(shù)句柄 函數(shù)句柄(Function-Handle)是包含了函數(shù)路徑、函數(shù)名、類型以及可能存在的重載方法。句柄圖形(Handle Graphics)就是將一個圖形的每一個組建均視為一個對象(Object),每一個對象均有一個獨一無二的“句柄”(handle),根據(jù)這個句柄就可以找到這個對象(即圖形組件)的各項屬性,并進(jìn)而更改這些屬性,以產(chǎn)生不同的圖形呈現(xiàn)效果[3-5]。
2.1 設(shè)計思路及主要功能需求
2.1.1 界面制作。界面制作包括界面設(shè)計和程序?qū)崿F(xiàn)。具體制作步驟是:①分析界面所要求實現(xiàn)的主要功能,明確設(shè)計任務(wù);②繪出界面草圖,并站在使用者的角度來審查草圖;③按構(gòu)思的草圖,上機制作靜態(tài)界面,并檢查;④編寫界面動態(tài)功能的程序,對功能進(jìn)行逐項檢查[5-7]。本著簡單性(Simplicity)、一致性(Consistency)及習(xí)常性(Familiarity)原則[7-10],該軟件按照不同的功能需求分成3個功能模塊并分別進(jìn)行編寫,每個模塊根據(jù)需要利用Gui提供的菜單編輯器設(shè)計每個模塊下的菜單欄,并根據(jù)使用要求設(shè)計每個操作界面的控件布局,在不同的控件下填寫相應(yīng)的響應(yīng)函數(shù)。
2.1.2 功能需求。利用鄉(xiāng)鎮(zhèn)每日預(yù)報應(yīng)用軟件平臺提供給預(yù)報員制作各鄉(xiāng)鎮(zhèn)每日天氣預(yù)報的平臺;利用每月溫度準(zhǔn)確率統(tǒng)計平臺,統(tǒng)計各鄉(xiāng)鎮(zhèn)每月最低溫度和最高溫度準(zhǔn)確率;利用鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺將分散的每日數(shù)據(jù)整理到相應(yīng)年份和月份的數(shù)據(jù)表格中,方便做數(shù)據(jù)研究以及數(shù)據(jù)再整理。
2.2 系統(tǒng)框架 總體上可分為3個部分,即鄉(xiāng)鎮(zhèn)每日預(yù)報應(yīng)用軟件平臺、每月溫度準(zhǔn)確率統(tǒng)計平臺和自動站溫度整理平臺。
2.3 系統(tǒng)操作流程圖設(shè)計
2.3.1 鄉(xiāng)鎮(zhèn)每日預(yù)報應(yīng)用軟件平臺操作流程。當(dāng)用戶打開系統(tǒng)界面后,首先導(dǎo)入當(dāng)日自動站溫度實況信息,然后在相應(yīng)的位置依次輸入天氣狀況、本站實況溫度、本站預(yù)報溫度、預(yù)報風(fēng)向、預(yù)報風(fēng)速、預(yù)報員等基本實況和預(yù)報信息,軟件會根據(jù)輸入的本站實況溫度、本站預(yù)報溫度以及自動站各鄉(xiāng)鎮(zhèn)當(dāng)日實況溫度進(jìn)行計算并顯示各鄉(xiāng)鎮(zhèn)天氣預(yù)報結(jié)果,其中對于溫度的預(yù)報如需人工訂正,可對各鄉(xiāng)鎮(zhèn)進(jìn)行單獨的溫度訂正,最后根據(jù)需要進(jìn)行保存,在不同的位置生成多種類型的預(yù)報產(chǎn)品(圖1)。

圖1 鄉(xiāng)鎮(zhèn)每日預(yù)報應(yīng)用軟件平臺操作流程
2.3.2 月溫度準(zhǔn)確率統(tǒng)計平臺操作流程。打開月溫度準(zhǔn)確率統(tǒng)計平臺后,首先分別導(dǎo)入月自動站每日實況溫度數(shù)據(jù)和月鄉(xiāng)鎮(zhèn)每日預(yù)報溫度數(shù)據(jù),導(dǎo)入后會在相應(yīng)的位置顯示導(dǎo)入數(shù)據(jù)的位置信息,確定后會顯示該月溫度準(zhǔn)確率的計算結(jié)果,根據(jù)需要保到的指定位置(圖2)。

圖2 月溫度準(zhǔn)確率統(tǒng)計平臺操作流程
2.3.3 鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺操作流程。打開鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺后,首先導(dǎo)入某月各鄉(xiāng)鎮(zhèn)每日溫度數(shù)據(jù),并在相應(yīng)的位置顯示輸入數(shù)據(jù)的位置信息,確認(rèn)無誤后,經(jīng)過數(shù)據(jù)批處理將把該月以日為單位的溫度數(shù)據(jù)表整理成以月為單位的日溫度數(shù)據(jù)表,方便數(shù)據(jù)研究與整理,最后保存到指定的位置(圖3)。

圖3 鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺操作流程
3.1 開發(fā)環(huán)境 操作系統(tǒng)為WindowsXP。體現(xiàn)句柄圖形例程的函數(shù),包括應(yīng)用uimenu和uicontrol對象的函數(shù),通常運行在所有平臺。處理的數(shù)據(jù)對象為自動站每日溫度統(tǒng)計的EXCEL表,以當(dāng)日日期命名,如20140601,表格內(nèi)的格式第一列至第五列依次為站號、站名、平均氣溫、最高氣溫、最低氣溫。
3.2 運行要求 利用Gui設(shè)計編寫xzyb(鄉(xiāng)鎮(zhèn)預(yù)報)界面及Matlab編譯器,將設(shè)計編寫好的界面轉(zhuǎn)為exe格式,即可獨立運行的應(yīng)用程序,雖然可以在沒有Matlab的計算機上直接運行使用。但如果在一個沒有安裝Matlab的計算機上運行,或在安裝版本不一致的計算機上運行時,仍需要安裝Matlab所必須的且與之相對應(yīng)的動態(tài)鏈接庫,因為不同版本的動態(tài)鏈接庫不同,也不兼容。因此在運行該軟件之前,要安裝能使可執(zhí)行程序脫離Matlab運行所需的函數(shù)庫,即MCRInstall.exe。
3.3 模塊設(shè)計及原理
3.3.1 控件及對話框。在此用到的控件有觸控按鈕鍵、靜態(tài)文本框、可編輯文本框、彈起式菜單框,用到的預(yù)定義對話框有信息對話框、警告對話框、文件打開對話框。

圖4 菜單編輯器
3.3.1.1 菜單欄設(shè)計。打開Guide設(shè)計界面,利用Tools下的Menu Editor菜單編輯器創(chuàng)建各級菜單欄(圖4)。在相應(yīng)位置填寫內(nèi)容,并設(shè)置快捷方式。分別進(jìn)入Callback下,填寫相應(yīng)的代碼,對菜單進(jìn)行操作。如在“打開”的Callback下填寫的相應(yīng)部分代碼如下:


以上代碼的功能是通過打開操作讀入選定的自動站日數(shù)據(jù),不僅可以導(dǎo)入該數(shù)據(jù),還可根據(jù)缺測情況彈出信息對話框給出相應(yīng)的缺站提示,并以-999暫代計算。
3.3.1.2 頁面布局及屬性設(shè)置。根據(jù)功能需要分別選擇不同的控件設(shè)計相應(yīng)的頁面布局,如“每日預(yù)報“模塊的控件布局(圖5)。控制屬性設(shè)計思路是:①雙擊每個控件,調(diào)出屬性設(shè)置框,分別設(shè)置各控件的名稱、屬性名、顏色等,如“今日天氣實況”后第一個彈起式菜單框的部分屬性設(shè)置及String屬性值設(shè)置(圖6)。②在布置好的每個控件的Callback下分別編寫相應(yīng)的操作代碼,如圖6中的控件彈起式菜單框的Callback下的部分操作代碼為:

圖5 “每日預(yù)報”模塊的控件布局

圖6 彈起式菜單框的部分屬性設(shè)置

③用同樣的方法設(shè)置和編寫觸控按鈕鍵、靜態(tài)文本框的屬性及相應(yīng)Callback下的操作代碼。導(dǎo)入當(dāng)日數(shù)據(jù)觸控按鈕和保存觸控按鈕下設(shè)置了警告對話框和消息對話框,對導(dǎo)入數(shù)據(jù)和保存數(shù)據(jù)設(shè)置指定的路徑,如e:xzyb。④用同樣的方法對每月溫度準(zhǔn)確率統(tǒng)計平臺、撫順市鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺分別設(shè)計并編寫,設(shè)計成功后,在主界面的相應(yīng)菜單的Callback下分別編寫各自平臺調(diào)用操作代碼,如在主菜單“每月溫度準(zhǔn)確率統(tǒng)計”的Callback下的平臺調(diào)用代碼為:

3.3.2 溫度預(yù)報及準(zhǔn)確率統(tǒng)計原理。
3.3.2.1 溫度的預(yù)報原理。假設(shè)各站每天的溫度變化幅度與本站溫度的變化幅度完全一致,則TXS-TXS(0)=TSSTSS(0),即 TSS=TXS- TXS(0)+TSS(0),式中,TXS表示新賓站預(yù)報溫度;TXS(0)表示當(dāng)天的實況溫度;TSS表示所求鄉(xiāng)鎮(zhèn)的預(yù)報溫度;TSS(0)表示所求鄉(xiāng)鎮(zhèn)當(dāng)日的實況溫度。
4.1 鄉(xiāng)鎮(zhèn)每日預(yù)報應(yīng)用軟件平臺的實現(xiàn)
4.1.1 導(dǎo)入當(dāng)天自動站溫度實況數(shù)據(jù)。有2種方式:①點擊每日預(yù)報下的打開,或按快捷鍵Ctrl+O,彈出文件選擇對話框,選中所需要的數(shù)據(jù)并打開,單擊導(dǎo)入當(dāng)日數(shù)據(jù)按鈕,彈出“成功導(dǎo)入當(dāng)日數(shù)據(jù)”的對話框,點擊確定繼續(xù)。②若已將自動站當(dāng)日溫度數(shù)據(jù)按照要求的格式保存在“自動站每日溫度實況”文件夾下相應(yīng)的文件夾內(nèi),如將201406030.xls保存在“自動站每日溫度實況”下的“201406”文件夾里,點擊導(dǎo)入當(dāng)日預(yù)報按鈕,將會彈出警告框,根據(jù)實際情況選擇Yes、No、Cancel。
4.1.2 信息編輯。根據(jù)實際情況在各下拉菜單中進(jìn)行選擇或在可編輯框內(nèi)編輯信息,結(jié)果將在界面中間相應(yīng)的位置顯示。以2014年6月1日為例,運行后的結(jié)果如圖7所示。
4.1.3 保存。點擊保存按鈕會將數(shù)據(jù)保存在3個位置,一個是將整個界面的內(nèi)容保存在文件夾“up”(在E盤的xzyb文件夾下)中,提供給廣播局;一個是將預(yù)報員每天溫度預(yù)報結(jié)果保存在文件夾“預(yù)報員每日溫度預(yù)報”(在E盤的xzyb文件夾下)里,記錄預(yù)報員每天的溫度預(yù)報結(jié)果并供打印留底;一個是將預(yù)報內(nèi)容制作成電子顯示屏的內(nèi)容保存在“電子顯示屏信息”(在E盤的xzyb文件夾下),供預(yù)報員每天制作電子顯示屏和預(yù)警大喇叭發(fā)布并打印留底。三者均保存為txt格式,且均以當(dāng)天日期自動命名,如20140601.txt。
4.2 月溫度準(zhǔn)確率統(tǒng)計平臺的實現(xiàn) 單擊xzyb菜單欄里的“每月溫度準(zhǔn)確率統(tǒng)計”,彈出每月溫度準(zhǔn)確率統(tǒng)計界面,分別打開并導(dǎo)入溫度實況數(shù)據(jù)與鄉(xiāng)鎮(zhèn)預(yù)報數(shù)據(jù),點擊確定進(jìn)行統(tǒng)計。以新賓縣2014年6月為例,運行后的界面如圖8所示,點擊OK完成統(tǒng)計!點擊保存,保存按鈕下會在’e:xzybmonthanalysis’下生成yyyymm.txt,保存的是界面所顯示的內(nèi)容。另外在同一文件夾下生成名為yyyy.xls的數(shù)據(jù),存放指定各鄉(xiāng)鎮(zhèn)每月溫度準(zhǔn)確率以及整體每月溫度準(zhǔn)確率。

圖7 鄉(xiāng)鎮(zhèn)每日預(yù)報運行后的結(jié)果

圖8 月溫度準(zhǔn)確率統(tǒng)計運行結(jié)果
4.3 鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺的實現(xiàn) 單擊xzyb菜單欄里的“自動站溫度統(tǒng)計”,彈出每月溫度準(zhǔn)確率統(tǒng)計界面,點擊“打開數(shù)據(jù)”,彈出選擇對話框,選擇所要統(tǒng)計的月數(shù)據(jù),數(shù)據(jù)來源處會顯示選擇的數(shù)據(jù)所在的位置,點擊確定運行。當(dāng)出現(xiàn)統(tǒng)計完畢的對話框時,表示數(shù)據(jù)統(tǒng)計完成,并在’e:xzyb撫順自動站溫度統(tǒng)計’下生成3個excel表格,分別為以年命名的最高溫度、最低溫度、平均溫度,運行的結(jié)果保存在對應(yīng)excel內(nèi)里應(yīng)月份的表格內(nèi),以2014年6月為例,運行后的界面及結(jié)果如圖9所示,生成的3個excel表格如圖10所示。

圖9 鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理結(jié)果

圖10 生成數(shù)據(jù)表
利用Matlab Gui圖形用戶界面開發(fā)環(huán)境根據(jù)縣級臺站業(yè)務(wù)需求編寫的鄉(xiāng)鎮(zhèn)溫度預(yù)報訂正和數(shù)據(jù)處理軟件主要實現(xiàn)了以下3個功能:①通過鄉(xiāng)鎮(zhèn)每日預(yù)報應(yīng)用軟件平臺,預(yù)報員可以每日制作各鄉(xiāng)鎮(zhèn)天氣預(yù)報,操作簡便,可生成各種樣式的預(yù)報產(chǎn)品,為不同的部門和用途提供預(yù)報產(chǎn)品,如為廣播局提供每日鄉(xiāng)鎮(zhèn)天氣預(yù)報,為各鄉(xiāng)鎮(zhèn)制作電子顯示屏信息、預(yù)警大喇叭信息、手機短信,為預(yù)報員提供每日實況溫度與預(yù)報溫度情況等;②通過每月溫度準(zhǔn)確率統(tǒng)計平臺,統(tǒng)計各鄉(xiāng)鎮(zhèn)每月最低溫度和最高溫度準(zhǔn)確率,包括各鄉(xiāng)鎮(zhèn)的準(zhǔn)確率以及整體鄉(xiāng)鎮(zhèn)溫度準(zhǔn)確率,了解每月溫度預(yù)報情況,方便研究與材料編寫;③通過鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺,可以將某月的每日溫度數(shù)據(jù)集經(jīng)過數(shù)據(jù)批處理整理整理到相應(yīng)年份和月份的數(shù)據(jù)表格中,方便做數(shù)據(jù)研究以及數(shù)據(jù)再整理。
[1]王默玉,宗偉,劉春磊,等.基于MATLAB的圖形用戶界面的構(gòu)造方式與應(yīng)用[J].現(xiàn)代電力,2002,19(1):76 -82.
[2]羅華飛.MATLAB GUI設(shè)計學(xué)習(xí)手記[M].2版.北京:北京航空航天大學(xué)出版社,2011.
[3]徐增偉,曾黃麟,江泌,等.基于MATLAB GUI的研究生學(xué)業(yè)評估系統(tǒng)設(shè)計[J].四川理工學(xué)院學(xué)報:自然科學(xué)版,2011,24(4):402 -404.
[4]施曉紅,周佳.精通GUI圖形界面編程[M].北京:北京大學(xué)出版社,2003.
[5]施今邁,陳顯慧,李霞.基于MATLAB的心電信號界面設(shè)計[J].醫(yī)療設(shè)備信息,2007,22(7):34 -35.
[6]楊華為.基于MATLAB GUI的數(shù)據(jù)處理分析界面的設(shè)計與應(yīng)用[J].工業(yè)控制計算機,2011,24(12):16 -17.
[7]邱金蕙,王矞輝,李振全.基于Matlab/GUI的新型界面開發(fā)方式[J].河北工業(yè)科技,2008,25(4):233 -254.
[8]陳立明,董暉,李加海.基于MATLAB6.5的圖形用戶界面應(yīng)用技術(shù)研究[J].電腦開發(fā)與應(yīng)用,2005,18(4):47 -49.
[9]代紅權(quán),陳海燕.基于Matlab的大學(xué)物理實驗數(shù)據(jù)處理系統(tǒng)[J].重慶工學(xué)院學(xué)報,2007,21(5):32 -34.
[10]王俊國,王永驥,萬淑蕓.MATLAB圖形用戶界面環(huán)境下的實時控制系統(tǒng)[J].儀表技術(shù)與傳感器,2004(9):27-29.