气象预报竞赛产品管理系统的设计与实现
2021-10-18刘海燕周雪莹
刘海燕 周雪莹
摘要:气象预报技能竞赛可以提升天气预报业务水平, 培养天气预报员业务素质和基本技能。为了提供良好的竞赛环境,依托气象大数据云平台和虚拟资源池,采用“云+端”的模式设计了江西省气象预报竞赛产品管理系统,构建了面向省市两级的统一存储环境,提供竞赛产品文件的上传与下载服务,并且实时监视传输情况。
关键词:预报竞赛;Python;虚拟资源池;MySQL
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2021)26-0063-02
开放科学(资源服务)标识码(OSID):
气象行业职业技能竞赛已成为推动气象事业改革与发展的有力抓手,是全行业基层气象業务发展的风向标、展示气象人精神风貌的大舞台以及培育劳动精神、劳模精神、工匠精神和造就基层气象人才的助推器。及时、完整的气象数据是取得好的预报技术方法的前提基础,做好比赛期间的资料下载、计算资源、产品上传等参赛保障工作尤为重要。为气象预报竞赛提供良好的数据环境,基于省级基础设施资源池,设计了江西省气象预报竞赛产品管理系统,助力预报竞赛起到重要作用,为推动气象预报业务高质量发展提供强有力的信息化支撑。
1 数据流程
本系统通过接口提供各类气象产品下载服务,在基础设施资源池上构建了面向省市两级的统一存储环境,提供竞赛产品的上传与下载服务,并且对上传的竞赛产品文件进行文件名格式检查和信息提取,通过Web方式实现实时监视和统计功能。数据处理流程如图1。
2 系统设计
依托气象大数据云平台和虚拟资源池的服务,采用“云+端”的模式进行江西省气象预报竞赛支撑系统的设计,包括服务层,存储层,处理层,监视层。服务层提供各类竞赛产品的支撑数据,比如雷达数据、卫星数据等;存储层主要通过NAS存储竞赛产品,并且把相应的基本信息存储到监视数据库中;处理层包含文件名格式检查、文件信息提取和存储数据库;监视层主要是对竞赛产品的基本信息的展示、传输情况的显示、统计分析和报警功能。
3 系统功能
根据竞赛方案的要求,本系统设计了文件处理、监视模块和参数配置三部分。文件处理包括文件名格式检查、文件信息提取及处理和文件规范化存储;监视模块主要包括实时监视、查询功能、信息详情、统计分析和声音告警;后台管理包括数据库设置、产品配置和告警时间配置等。系统功能如图2所示。
3.1 文件处理
文件名格式检查模块是以《国内气象数据交换文件命名规范》为依据,对参赛产品文件名进行解析处理,不符合命名规则的产品文件属于无效文件,不纳入有效统计范围。文件信息提取模块对符合文件名要求的产品进行文件名信息提取,获取参赛团队代码、产品制作完成时间、预报种类、预报时效、最大预报时效和预报间隔以及文本格式,并且存储到数据库中,参赛产品传输到指定目录下,按照年月日文件夹分类保存。
3.2 监视模块
监视页面显示参赛产品文件到报时间根据考核的时效是否及时,并且标注颜色进行提示,红色表示未收到产品文件,蓝色表示到报时间超过考核的时效范围,绿色表示到报时间在考核时效范围内,及时有效。查询功能提供时间查询,包括当前时次,前一时次、后一时次、某一时次、前一天、后一天、当天和某一天的查询方式。信息详情显示参赛产品的详细信息,主要包括资料类别、资料名称、文件名、发送时间、起报时间和及时标志。如果参赛产品的到报时间超过考核的时效范围,则通过改变数据网格组件的行样式,来突出显示该信息。统计分析主要是根据竞赛产品文件到报时间与考核的时效进行对比,统计出到报及时率,如果低于竞赛设置的最低值,则取消竞赛资格。声音告警模块提供高效实时的Web告警,当有竞赛产品未及时上传或未上传时,监视系统则发出异常声音告警。
3.3 系统数据库建设
本系统采用关系型数据库管理系统MySQL数据库,建立数据库连接,客户端与数据库连接字符集设置为UTF8,创建连接的游标的语句为conn= pymysql.connect(host =IP,port = int(Port),user =用户名,passwd =密码,db =数据库,charset= 'utf8'),使用语句cursor.executemany(sql, args)数据批量执行插入。
4 系统实现
4.1 技术实现
文件信息入库模块采用Python语言,监控参赛产品文件的变动,如新建、修改和移动,并且记录到数据库中。
采用Web前端UI框架Bootstrap、Python和Flask进行web开发,Bootstrap是由Twitter推出的一个用于前端开发的开源工具包,给予HTML、CSS、JavaScriot,提供简洁、直观、强悍的前端开发框架,是目前最受欢迎的前端框架。Flask是一个基于Python开发,依赖jinja2模板和Werkzeug WSGI服务的一个微型框架。通过python服务端Flask结合Bootstrap框架,操作mysql数据库实现竞赛产品监控与告警。
前台采用JavaScript语言从告警信息表中读取到报警代码,发出警报提示音,提醒值班人员报文未及时上传,值班人员点击图标可以关闭警报提示音。
var audio = document.getElementById('sound');
audio.pause();
musicflag=2
$.ajax({
url: "alarm?musicflag=1",
type: "get",
dataType: "json",