李若楠,吳佳麗,劉 暢,張微瑋,楊 冰
(1.遼寧省新賓滿族自治縣氣象局,遼寧新賓132000;2.遼寧省遼陽市氣象局,遼寧遼陽111000)
24 h最高溫度、最低溫度預(yù)報(bào)是電視天氣預(yù)報(bào)節(jié)目對公眾發(fā)布的基本氣象服務(wù),也是最重要的氣象服務(wù)之一,目前縣級臺站制作的鄉(xiāng)鎮(zhèn)天氣預(yù)報(bào)和未來24 h溫度預(yù)報(bào)均是以本站的天氣預(yù)報(bào)為基礎(chǔ)進(jìn)行鄉(xiāng)鎮(zhèn)訂正預(yù)報(bào)。新賓縣下轄15個鄉(xiāng)鎮(zhèn),根據(jù)多年自動站溫度要素分析以及預(yù)報(bào)經(jīng)驗(yàn),發(fā)現(xiàn)每個鄉(xiāng)鎮(zhèn)的溫度及天氣狀況均有所差異,在預(yù)報(bào)時(shí)需要根據(jù)不同的訂正值和天氣狀況對每個鄉(xiāng)鎮(zhèn)的天氣要素進(jìn)行訂正預(yù)報(bào),而在制作鄉(xiāng)鎮(zhèn)訂正預(yù)報(bào)產(chǎn)品時(shí),還是依靠傳統(tǒng)的手算和人工制作的方法,誤差大,且費(fèi)時(shí)費(fèi)力,增加了業(yè)務(wù)人員的工作量,更不便于日后的統(tǒng)計(jì)和管理。因此,研發(fā)一個具有可視化多功能的鄉(xiāng)鎮(zhèn)溫度預(yù)報(bào)訂正和數(shù)據(jù)處理軟件,對于基層臺站業(yè)務(wù)減負(fù)、實(shí)現(xiàn)自動化工作意義重大。筆者基于Matlab Gui開發(fā)軟件,編寫生成具有訂正鄉(xiāng)鎮(zhèn)溫度預(yù)報(bào)和數(shù)據(jù)統(tǒng)計(jì)處理功能的軟件。
1.1 圖形用戶界面開發(fā)環(huán)境 圖形用戶界面GUI(Graphical User Interfaces)是由各種圖形對象,如圖形窗口、圖軸、按鈕、菜單、文本框等對象(Objects)構(gòu)成的用戶界面,其開發(fā)環(huán)境提供了一組用于用戶界面開發(fā)的工具,是人際交流信息的工具和方法,在該界面內(nèi),用戶可以根據(jù)界面提示完成整個工程而不必去了解工程內(nèi)部是如何工作的,利用Gui設(shè)計(jì)圖形用戶界面時(shí),可通過GUI應(yīng)用屬性設(shè)置編輯器來設(shè)置對句柄操作的響應(yīng)[1-3]。
1.2 函數(shù)句柄 函數(shù)句柄(Function-Handle)是包含了函數(shù)路徑、函數(shù)名、類型以及可能存在的重載方法。句柄圖形(Handle Graphics)就是將一個圖形的每一個組建均視為一個對象(Object),每一個對象均有一個獨(dú)一無二的“句柄”(handle),根據(jù)這個句柄就可以找到這個對象(即圖形組件)的各項(xiàng)屬性,并進(jìn)而更改這些屬性,以產(chǎn)生不同的圖形呈現(xiàn)效果[3-5]。
2.1 設(shè)計(jì)思路及主要功能需求
2.1.1 界面制作。界面制作包括界面設(shè)計(jì)和程序?qū)崿F(xiàn)。具體制作步驟是:①分析界面所要求實(shí)現(xiàn)的主要功能,明確設(shè)計(jì)任務(wù);②繪出界面草圖,并站在使用者的角度來審查草圖;③按構(gòu)思的草圖,上機(jī)制作靜態(tài)界面,并檢查;④編寫界面動態(tài)功能的程序,對功能進(jìn)行逐項(xiàng)檢查[5-7]。本著簡單性(Simplicity)、一致性(Consistency)及習(xí)常性(Familiarity)原則[7-10],該軟件按照不同的功能需求分成3個功能模塊并分別進(jìn)行編寫,每個模塊根據(jù)需要利用Gui提供的菜單編輯器設(shè)計(jì)每個模塊下的菜單欄,并根據(jù)使用要求設(shè)計(jì)每個操作界面的控件布局,在不同的控件下填寫相應(yīng)的響應(yīng)函數(shù)。
2.1.2 功能需求。利用鄉(xiāng)鎮(zhèn)每日預(yù)報(bào)應(yīng)用軟件平臺提供給預(yù)報(bào)員制作各鄉(xiāng)鎮(zhèn)每日天氣預(yù)報(bào)的平臺;利用每月溫度準(zhǔn)確率統(tǒng)計(jì)平臺,統(tǒng)計(jì)各鄉(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ù)報(bào)應(yīng)用軟件平臺、每月溫度準(zhǔn)確率統(tǒng)計(jì)平臺和自動站溫度整理平臺。
2.3 系統(tǒng)操作流程圖設(shè)計(jì)
2.3.1 鄉(xiāng)鎮(zhèn)每日預(yù)報(bào)應(yīng)用軟件平臺操作流程。當(dāng)用戶打開系統(tǒng)界面后,首先導(dǎo)入當(dāng)日自動站溫度實(shí)況信息,然后在相應(yīng)的位置依次輸入天氣狀況、本站實(shí)況溫度、本站預(yù)報(bào)溫度、預(yù)報(bào)風(fēng)向、預(yù)報(bào)風(fēng)速、預(yù)報(bào)員等基本實(shí)況和預(yù)報(bào)信息,軟件會根據(jù)輸入的本站實(shí)況溫度、本站預(yù)報(bào)溫度以及自動站各鄉(xiāng)鎮(zhèn)當(dāng)日實(shí)況溫度進(jìn)行計(jì)算并顯示各鄉(xiāng)鎮(zhèn)天氣預(yù)報(bào)結(jié)果,其中對于溫度的預(yù)報(bào)如需人工訂正,可對各鄉(xiāng)鎮(zhèn)進(jìn)行單獨(dú)的溫度訂正,最后根據(jù)需要進(jìn)行保存,在不同的位置生成多種類型的預(yù)報(bào)產(chǎn)品(圖1)。
圖1 鄉(xiāng)鎮(zhèn)每日預(yù)報(bào)應(yīng)用軟件平臺操作流程
2.3.2 月溫度準(zhǔn)確率統(tǒng)計(jì)平臺操作流程。打開月溫度準(zhǔn)確率統(tǒng)計(jì)平臺后,首先分別導(dǎo)入月自動站每日實(shí)況溫度數(shù)據(jù)和月鄉(xiāng)鎮(zhèn)每日預(yù)報(bào)溫度數(shù)據(jù),導(dǎo)入后會在相應(yīng)的位置顯示導(dǎo)入數(shù)據(jù)的位置信息,確定后會顯示該月溫度準(zhǔn)確率的計(jì)算結(jié)果,根據(jù)需要保到的指定位置(圖2)。
圖2 月溫度準(zhǔn)確率統(tǒng)計(jì)平臺操作流程
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ù),通常運(yùn)行在所有平臺。處理的數(shù)據(jù)對象為自動站每日溫度統(tǒng)計(jì)的EXCEL表,以當(dāng)日日期命名,如20140601,表格內(nèi)的格式第一列至第五列依次為站號、站名、平均氣溫、最高氣溫、最低氣溫。
3.2 運(yùn)行要求 利用Gui設(shè)計(jì)編寫xzyb(鄉(xiāng)鎮(zhèn)預(yù)報(bào))界面及Matlab編譯器,將設(shè)計(jì)編寫好的界面轉(zhuǎn)為exe格式,即可獨(dú)立運(yùn)行的應(yīng)用程序,雖然可以在沒有Matlab的計(jì)算機(jī)上直接運(yùn)行使用。但如果在一個沒有安裝Matlab的計(jì)算機(jī)上運(yùn)行,或在安裝版本不一致的計(jì)算機(jī)上運(yùn)行時(shí),仍需要安裝Matlab所必須的且與之相對應(yīng)的動態(tài)鏈接庫,因?yàn)椴煌姹镜膭討B(tài)鏈接庫不同,也不兼容。因此在運(yùn)行該軟件之前,要安裝能使可執(zhí)行程序脫離Matlab運(yùn)行所需的函數(shù)庫,即MCRInstall.exe。
3.3 模塊設(shè)計(jì)及原理
3.3.1 控件及對話框。在此用到的控件有觸控按鈕鍵、靜態(tài)文本框、可編輯文本框、彈起式菜單框,用到的預(yù)定義對話框有信息對話框、警告對話框、文件打開對話框。
圖4 菜單編輯器
3.3.1.1 菜單欄設(shè)計(jì)。打開Guide設(shè)計(jì)界面,利用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暫代計(jì)算。
3.3.1.2 頁面布局及屬性設(shè)置。根據(jù)功能需要分別選擇不同的控件設(shè)計(jì)相應(yīng)的頁面布局,如“每日預(yù)報(bào)“模塊的控件布局(圖5)??刂茖傩栽O(shè)計(jì)思路是:①雙擊每個控件,調(diào)出屬性設(shè)置框,分別設(shè)置各控件的名稱、屬性名、顏色等,如“今日天氣實(shí)況”后第一個彈起式菜單框的部分屬性設(shè)置及String屬性值設(shè)置(圖6)。②在布置好的每個控件的Callback下分別編寫相應(yīng)的操作代碼,如圖6中的控件彈起式菜單框的Callback下的部分操作代碼為:
圖5 “每日預(yù)報(bào)”模塊的控件布局
圖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)計(jì)平臺、撫順市鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺分別設(shè)計(jì)并編寫,設(shè)計(jì)成功后,在主界面的相應(yīng)菜單的Callback下分別編寫各自平臺調(diào)用操作代碼,如在主菜單“每月溫度準(zhǔn)確率統(tǒng)計(jì)”的Callback下的平臺調(diào)用代碼為:
3.3.2 溫度預(yù)報(bào)及準(zhǔn)確率統(tǒng)計(jì)原理。
3.3.2.1 溫度的預(yù)報(bào)原理。假設(shè)各站每天的溫度變化幅度與本站溫度的變化幅度完全一致,則TXS-TXS(0)=TSSTSS(0),即 TSS=TXS- TXS(0)+TSS(0),式中,TXS表示新賓站預(yù)報(bào)溫度;TXS(0)表示當(dāng)天的實(shí)況溫度;TSS表示所求鄉(xiāng)鎮(zhèn)的預(yù)報(bào)溫度;TSS(0)表示所求鄉(xiāng)鎮(zhèn)當(dāng)日的實(shí)況溫度。
4.1 鄉(xiāng)鎮(zhèn)每日預(yù)報(bào)應(yīng)用軟件平臺的實(shí)現(xiàn)
4.1.1 導(dǎo)入當(dāng)天自動站溫度實(shí)況數(shù)據(jù)。有2種方式:①點(diǎn)擊每日預(yù)報(bào)下的打開,或按快捷鍵Ctrl+O,彈出文件選擇對話框,選中所需要的數(shù)據(jù)并打開,單擊導(dǎo)入當(dāng)日數(shù)據(jù)按鈕,彈出“成功導(dǎo)入當(dāng)日數(shù)據(jù)”的對話框,點(diǎn)擊確定繼續(xù)。②若已將自動站當(dāng)日溫度數(shù)據(jù)按照要求的格式保存在“自動站每日溫度實(shí)況”文件夾下相應(yīng)的文件夾內(nèi),如將201406030.xls保存在“自動站每日溫度實(shí)況”下的“201406”文件夾里,點(diǎn)擊導(dǎo)入當(dāng)日預(yù)報(bào)按鈕,將會彈出警告框,根據(jù)實(shí)際情況選擇Yes、No、Cancel。
4.1.2 信息編輯。根據(jù)實(shí)際情況在各下拉菜單中進(jìn)行選擇或在可編輯框內(nèi)編輯信息,結(jié)果將在界面中間相應(yīng)的位置顯示。以2014年6月1日為例,運(yùn)行后的結(jié)果如圖7所示。
4.1.3 保存。點(diǎn)擊保存按鈕會將數(shù)據(jù)保存在3個位置,一個是將整個界面的內(nèi)容保存在文件夾“up”(在E盤的xzyb文件夾下)中,提供給廣播局;一個是將預(yù)報(bào)員每天溫度預(yù)報(bào)結(jié)果保存在文件夾“預(yù)報(bào)員每日溫度預(yù)報(bào)”(在E盤的xzyb文件夾下)里,記錄預(yù)報(bào)員每天的溫度預(yù)報(bào)結(jié)果并供打印留底;一個是將預(yù)報(bào)內(nèi)容制作成電子顯示屏的內(nèi)容保存在“電子顯示屏信息”(在E盤的xzyb文件夾下),供預(yù)報(bào)員每天制作電子顯示屏和預(yù)警大喇叭發(fā)布并打印留底。三者均保存為txt格式,且均以當(dāng)天日期自動命名,如20140601.txt。
4.2 月溫度準(zhǔn)確率統(tǒng)計(jì)平臺的實(shí)現(xiàn) 單擊xzyb菜單欄里的“每月溫度準(zhǔn)確率統(tǒng)計(jì)”,彈出每月溫度準(zhǔn)確率統(tǒng)計(jì)界面,分別打開并導(dǎo)入溫度實(shí)況數(shù)據(jù)與鄉(xiāng)鎮(zhèn)預(yù)報(bào)數(shù)據(jù),點(diǎn)擊確定進(jìn)行統(tǒng)計(jì)。以新賓縣2014年6月為例,運(yùn)行后的界面如圖8所示,點(diǎn)擊OK完成統(tǒng)計(jì)!點(diǎn)擊保存,保存按鈕下會在’e:xzybmonthanalysis’下生成yyyymm.txt,保存的是界面所顯示的內(nèi)容。另外在同一文件夾下生成名為yyyy.xls的數(shù)據(jù),存放指定各鄉(xiāng)鎮(zhèn)每月溫度準(zhǔn)確率以及整體每月溫度準(zhǔn)確率。
圖7 鄉(xiāng)鎮(zhèn)每日預(yù)報(bào)運(yùn)行后的結(jié)果
圖8 月溫度準(zhǔn)確率統(tǒng)計(jì)運(yùn)行結(jié)果
4.3 鄉(xiāng)鎮(zhèn)溫度數(shù)據(jù)處理平臺的實(shí)現(xiàn) 單擊xzyb菜單欄里的“自動站溫度統(tǒng)計(jì)”,彈出每月溫度準(zhǔn)確率統(tǒng)計(jì)界面,點(diǎn)擊“打開數(shù)據(jù)”,彈出選擇對話框,選擇所要統(tǒng)計(jì)的月數(shù)據(jù),數(shù)據(jù)來源處會顯示選擇的數(shù)據(jù)所在的位置,點(diǎn)擊確定運(yùn)行。當(dāng)出現(xiàn)統(tǒng)計(jì)完畢的對話框時(shí),表示數(shù)據(jù)統(tǒng)計(jì)完成,并在’e:xzyb撫順自動站溫度統(tǒng)計(jì)’下生成3個excel表格,分別為以年命名的最高溫度、最低溫度、平均溫度,運(yùn)行的結(jié)果保存在對應(yīng)excel內(nèi)里應(yīng)月份的表格內(nèi),以2014年6月為例,運(yùn)行后的界面及結(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ù)報(bào)訂正和數(shù)據(jù)處理軟件主要實(shí)現(xiàn)了以下3個功能:①通過鄉(xiāng)鎮(zhèn)每日預(yù)報(bào)應(yīng)用軟件平臺,預(yù)報(bào)員可以每日制作各鄉(xiāng)鎮(zhèn)天氣預(yù)報(bào),操作簡便,可生成各種樣式的預(yù)報(bào)產(chǎn)品,為不同的部門和用途提供預(yù)報(bào)產(chǎn)品,如為廣播局提供每日鄉(xiāng)鎮(zhèn)天氣預(yù)報(bào),為各鄉(xiāng)鎮(zhèn)制作電子顯示屏信息、預(yù)警大喇叭信息、手機(jī)短信,為預(yù)報(bào)員提供每日實(shí)況溫度與預(yù)報(bào)溫度情況等;②通過每月溫度準(zhǔn)確率統(tǒng)計(jì)平臺,統(tǒng)計(jì)各鄉(xiāng)鎮(zhèn)每月最低溫度和最高溫度準(zhǔn)確率,包括各鄉(xiāng)鎮(zhèn)的準(zhǔn)確率以及整體鄉(xiāng)鎮(zhèn)溫度準(zhǔn)確率,了解每月溫度預(yù)報(bào)情況,方便研究與材料編寫;③通過鄉(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è)計(jì)學(xué)習(xí)手記[M].2版.北京:北京航空航天大學(xué)出版社,2011.
[3]徐增偉,曾黃麟,江泌,等.基于MATLAB GUI的研究生學(xué)業(yè)評估系統(tǒng)設(shè)計(jì)[J].四川理工學(xué)院學(xué)報(bào):自然科學(xué)版,2011,24(4):402 -404.
[4]施曉紅,周佳.精通GUI圖形界面編程[M].北京:北京大學(xué)出版社,2003.
[5]施今邁,陳顯慧,李霞.基于MATLAB的心電信號界面設(shè)計(jì)[J].醫(yī)療設(shè)備信息,2007,22(7):34 -35.
[6]楊華為.基于MATLAB GUI的數(shù)據(jù)處理分析界面的設(shè)計(jì)與應(yīng)用[J].工業(yè)控制計(jì)算機(jī),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í)驗(yàn)數(shù)據(jù)處理系統(tǒng)[J].重慶工學(xué)院學(xué)報(bào),2007,21(5):32 -34.
[10]王俊國,王永驥,萬淑蕓.MATLAB圖形用戶界面環(huán)境下的實(shí)時(shí)控制系統(tǒng)[J].儀表技術(shù)與傳感器,2004(9):27-29.