乡镇温度预报订正和自动站数据处理软件的设计与实现
2014-12-27李若楠吴佳丽张微玮
李若楠,吴佳丽,刘 畅,张微玮,杨 冰
(1.辽宁省新宾满族自治县气象局,辽宁新宾132000;2.辽宁省辽阳市气象局,辽宁辽阳111000)
24 h最高温度、最低温度预报是电视天气预报节目对公众发布的基本气象服务,也是最重要的气象服务之一,目前县级台站制作的乡镇天气预报和未来24 h温度预报均是以本站的天气预报为基础进行乡镇订正预报。新宾县下辖15个乡镇,根据多年自动站温度要素分析以及预报经验,发现每个乡镇的温度及天气状况均有所差异,在预报时需要根据不同的订正值和天气状况对每个乡镇的天气要素进行订正预报,而在制作乡镇订正预报产品时,还是依靠传统的手算和人工制作的方法,误差大,且费时费力,增加了业务人员的工作量,更不便于日后的统计和管理。因此,研发一个具有可视化多功能的乡镇温度预报订正和数据处理软件,对于基层台站业务减负、实现自动化工作意义重大。笔者基于Matlab Gui开发软件,编写生成具有订正乡镇温度预报和数据统计处理功能的软件。
1 Matlab图形用户界面的环境介绍
1.1 图形用户界面开发环境 图形用户界面GUI(Graphical User Interfaces)是由各种图形对象,如图形窗口、图轴、按钮、菜单、文本框等对象(Objects)构成的用户界面,其开发环境提供了一组用于用户界面开发的工具,是人际交流信息的工具和方法,在该界面内,用户可以根据界面提示完成整个工程而不必去了解工程内部是如何工作的,利用Gui设计图形用户界面时,可通过GUI应用属性设置编辑器来设置对句柄操作的响应[1-3]。
1.2 函数句柄 函数句柄(Function-Handle)是包含了函数路径、函数名、类型以及可能存在的重载方法。句柄图形(Handle Graphics)就是将一个图形的每一个组建均视为一个对象(Object),每一个对象均有一个独一无二的“句柄”(handle),根据这个句柄就可以找到这个对象(即图形组件)的各项属性,并进而更改这些属性,以产生不同的图形呈现效果[3-5]。
2 系统设计思路和框架
2.1 设计思路及主要功能需求
2.1.1 界面制作。界面制作包括界面设计和程序实现。具体制作步骤是:①分析界面所要求实现的主要功能,明确设计任务;②绘出界面草图,并站在使用者的角度来审查草图;③按构思的草图,上机制作静态界面,并检查;④编写界面动态功能的程序,对功能进行逐项检查[5-7]。本着简单性(Simplicity)、一致性(Consistency)及习常性(Familiarity)原则[7-10],该软件按照不同的功能需求分成3个功能模块并分别进行编写,每个模块根据需要利用Gui提供的菜单编辑器设计每个模块下的菜单栏,并根据使用要求设计每个操作界面的控件布局,在不同的控件下填写相应的响应函数。
2.1.2 功能需求。利用乡镇每日预报应用软件平台提供给预报员制作各乡镇每日天气预报的平台;利用每月温度准确率统计平台,统计各乡镇每月最低温度和最高温度准确率;利用乡镇温度数据处理平台将分散的每日数据整理到相应年份和月份的数据表格中,方便做数据研究以及数据再整理。
2.2 系统框架 总体上可分为3个部分,即乡镇每日预报应用软件平台、每月温度准确率统计平台和自动站温度整理平台。
2.3 系统操作流程图设计
2.3.1 乡镇每日预报应用软件平台操作流程。当用户打开系统界面后,首先导入当日自动站温度实况信息,然后在相应的位置依次输入天气状况、本站实况温度、本站预报温度、预报风向、预报风速、预报员等基本实况和预报信息,软件会根据输入的本站实况温度、本站预报温度以及自动站各乡镇当日实况温度进行计算并显示各乡镇天气预报结果,其中对于温度的预报如需人工订正,可对各乡镇进行单独的温度订正,最后根据需要进行保存,在不同的位置生成多种类型的预报产品(图1)。
图1 乡镇每日预报应用软件平台操作流程
2.3.2 月温度准确率统计平台操作流程。打开月温度准确率统计平台后,首先分别导入月自动站每日实况温度数据和月乡镇每日预报温度数据,导入后会在相应的位置显示导入数据的位置信息,确定后会显示该月温度准确率的计算结果,根据需要保到的指定位置(图2)。
图2 月温度准确率统计平台操作流程
2.3.3 乡镇温度数据处理平台操作流程。打开乡镇温度数据处理平台后,首先导入某月各乡镇每日温度数据,并在相应的位置显示输入数据的位置信息,确认无误后,经过数据批处理将把该月以日为单位的温度数据表整理成以月为单位的日温度数据表,方便数据研究与整理,最后保存到指定的位置(图3)。
图3 乡镇温度数据处理平台操作流程
3 技术规划及模块设计
3.1 开发环境 操作系统为WindowsXP。体现句柄图形例程的函数,包括应用uimenu和uicontrol对象的函数,通常运行在所有平台。处理的数据对象为自动站每日温度统计的EXCEL表,以当日日期命名,如20140601,表格内的格式第一列至第五列依次为站号、站名、平均气温、最高气温、最低气温。
3.2 运行要求 利用Gui设计编写xzyb(乡镇预报)界面及Matlab编译器,将设计编写好的界面转为exe格式,即可独立运行的应用程序,虽然可以在没有Matlab的计算机上直接运行使用。但如果在一个没有安装Matlab的计算机上运行,或在安装版本不一致的计算机上运行时,仍需要安装Matlab所必须的且与之相对应的动态链接库,因为不同版本的动态链接库不同,也不兼容。因此在运行该软件之前,要安装能使可执行程序脱离Matlab运行所需的函数库,即MCRInstall.exe。
3.3 模块设计及原理
3.3.1 控件及对话框。在此用到的控件有触控按钮键、静态文本框、可编辑文本框、弹起式菜单框,用到的预定义对话框有信息对话框、警告对话框、文件打开对话框。
图4 菜单编辑器
3.3.1.1 菜单栏设计。打开Guide设计界面,利用Tools下的Menu Editor菜单编辑器创建各级菜单栏(图4)。在相应位置填写内容,并设置快捷方式。分别进入Callback下,填写相应的代码,对菜单进行操作。如在“打开”的Callback下填写的相应部分代码如下:
以上代码的功能是通过打开操作读入选定的自动站日数据,不仅可以导入该数据,还可根据缺测情况弹出信息对话框给出相应的缺站提示,并以-999暂代计算。
3.3.1.2 页面布局及属性设置。根据功能需要分别选择不同的控件设计相应的页面布局,如“每日预报“模块的控件布局(图5)。控制属性设计思路是:①双击每个控件,调出属性设置框,分别设置各控件的名称、属性名、颜色等,如“今日天气实况”后第一个弹起式菜单框的部分属性设置及String属性值设置(图6)。②在布置好的每个控件的Callback下分别编写相应的操作代码,如图6中的控件弹起式菜单框的Callback下的部分操作代码为:
图5 “每日预报”模块的控件布局
图6 弹起式菜单框的部分属性设置
③用同样的方法设置和编写触控按钮键、静态文本框的属性及相应Callback下的操作代码。导入当日数据触控按钮和保存触控按钮下设置了警告对话框和消息对话框,对导入数据和保存数据设置指定的路径,如e:xzyb。④用同样的方法对每月温度准确率统计平台、抚顺市乡镇温度数据处理平台分别设计并编写,设计成功后,在主界面的相应菜单的Callback下分别编写各自平台调用操作代码,如在主菜单“每月温度准确率统计”的Callback下的平台调用代码为:
3.3.2 温度预报及准确率统计原理。
3.3.2.1 温度的预报原理。假设各站每天的温度变化幅度与本站温度的变化幅度完全一致,则TXS-TXS(0)=TSSTSS(0),即 TSS=TXS- TXS(0)+TSS(0),式中,TXS表示新宾站预报温度;TXS(0)表示当天的实况温度;TSS表示所求乡镇的预报温度;TSS(0)表示所求乡镇当日的实况温度。
4 系统实现
4.1 乡镇每日预报应用软件平台的实现
4.1.1 导入当天自动站温度实况数据。有2种方式:①点击每日预报下的打开,或按快捷键Ctrl+O,弹出文件选择对话框,选中所需要的数据并打开,单击导入当日数据按钮,弹出“成功导入当日数据”的对话框,点击确定继续。②若已将自动站当日温度数据按照要求的格式保存在“自动站每日温度实况”文件夹下相应的文件夹内,如将201406030.xls保存在“自动站每日温度实况”下的“201406”文件夹里,点击导入当日预报按钮,将会弹出警告框,根据实际情况选择Yes、No、Cancel。
4.1.2 信息编辑。根据实际情况在各下拉菜单中进行选择或在可编辑框内编辑信息,结果将在界面中间相应的位置显示。以2014年6月1日为例,运行后的结果如图7所示。
4.1.3 保存。点击保存按钮会将数据保存在3个位置,一个是将整个界面的内容保存在文件夹“up”(在E盘的xzyb文件夹下)中,提供给广播局;一个是将预报员每天温度预报结果保存在文件夹“预报员每日温度预报”(在E盘的xzyb文件夹下)里,记录预报员每天的温度预报结果并供打印留底;一个是将预报内容制作成电子显示屏的内容保存在“电子显示屏信息”(在E盘的xzyb文件夹下),供预报员每天制作电子显示屏和预警大喇叭发布并打印留底。三者均保存为txt格式,且均以当天日期自动命名,如20140601.txt。
4.2 月温度准确率统计平台的实现 单击xzyb菜单栏里的“每月温度准确率统计”,弹出每月温度准确率统计界面,分别打开并导入温度实况数据与乡镇预报数据,点击确定进行统计。以新宾县2014年6月为例,运行后的界面如图8所示,点击OK完成统计!点击保存,保存按钮下会在’e:xzybmonthanalysis’下生成yyyymm.txt,保存的是界面所显示的内容。另外在同一文件夹下生成名为yyyy.xls的数据,存放指定各乡镇每月温度准确率以及整体每月温度准确率。
图7 乡镇每日预报运行后的结果
图8 月温度准确率统计运行结果
4.3 乡镇温度数据处理平台的实现 单击xzyb菜单栏里的“自动站温度统计”,弹出每月温度准确率统计界面,点击“打开数据”,弹出选择对话框,选择所要统计的月数据,数据来源处会显示选择的数据所在的位置,点击确定运行。当出现统计完毕的对话框时,表示数据统计完成,并在’e:xzyb抚顺自动站温度统计’下生成3个excel表格,分别为以年命名的最高温度、最低温度、平均温度,运行的结果保存在对应excel内里应月份的表格内,以2014年6月为例,运行后的界面及结果如图9所示,生成的3个excel表格如图10所示。
5 结论
图9 乡镇温度数据处理结果
图10 生成数据表
利用Matlab Gui图形用户界面开发环境根据县级台站业务需求编写的乡镇温度预报订正和数据处理软件主要实现了以下3个功能:①通过乡镇每日预报应用软件平台,预报员可以每日制作各乡镇天气预报,操作简便,可生成各种样式的预报产品,为不同的部门和用途提供预报产品,如为广播局提供每日乡镇天气预报,为各乡镇制作电子显示屏信息、预警大喇叭信息、手机短信,为预报员提供每日实况温度与预报温度情况等;②通过每月温度准确率统计平台,统计各乡镇每月最低温度和最高温度准确率,包括各乡镇的准确率以及整体乡镇温度准确率,了解每月温度预报情况,方便研究与材料编写;③通过乡镇温度数据处理平台,可以将某月的每日温度数据集经过数据批处理整理整理到相应年份和月份的数据表格中,方便做数据研究以及数据再整理。
[1]王默玉,宗伟,刘春磊,等.基于MATLAB的图形用户界面的构造方式与应用[J].现代电力,2002,19(1):76 -82.
[2]罗华飞.MATLAB GUI设计学习手记[M].2版.北京:北京航空航天大学出版社,2011.
[3]徐增伟,曾黄麟,江泌,等.基于MATLAB GUI的研究生学业评估系统设计[J].四川理工学院学报:自然科学版,2011,24(4):402 -404.
[4]施晓红,周佳.精通GUI图形界面编程[M].北京:北京大学出版社,2003.
[5]施今迈,陈显慧,李霞.基于MATLAB的心电信号界面设计[J].医疗设备信息,2007,22(7):34 -35.
[6]杨华为.基于MATLAB GUI的数据处理分析界面的设计与应用[J].工业控制计算机,2011,24(12):16 -17.
[7]邱金蕙,王矞辉,李振全.基于Matlab/GUI的新型界面开发方式[J].河北工业科技,2008,25(4):233 -254.
[8]陈立明,董晖,李加海.基于MATLAB6.5的图形用户界面应用技术研究[J].电脑开发与应用,2005,18(4):47 -49.
[9]代红权,陈海燕.基于Matlab的大学物理实验数据处理系统[J].重庆工学院学报,2007,21(5):32 -34.
[10]王俊国,王永骥,万淑芸.MATLAB图形用户界面环境下的实时控制系统[J].仪表技术与传感器,2004(9):27-29.