基于CIMISS的降水短信报警系统设计与实现
2019-12-16李永刚付春红刘忠群张鹤
李永刚 付春红 刘忠群 张鹤
摘要:全国综合气象信息共享平台(CIMISS)为全国气象部门提供了统一的数据环境。本文基于CIMISS平台与手机短信通信技术相结合,初步构建降水超阈值告警系统,利用C#语言对接气象数据统一服务接口,进行数据实时处理并推送短信平台,实现了从数据采集、数据处理与分析到降水告警信息发布的一套完整的雨情监测系统,在气象服务、防汛等工作中具有很好的参考作用。
关键词:CIMISS;气象;降水報警
中图分类号: P409 文献标识码: A DOI编号: 10.14025/j.cnki.jlny.2019.22.078
全国综合气象信息共享平台(CIMISS)为全国气象部门提供了统一的数据环境,气象数据统一服务接口(MUSIC:Meteorological Unified Service Interface Community),基于CIMISS,面向气象业务和科研,提供全国统一、标准、丰富的数据访问服务和应用编程接口(API),为国、省、地、县各级应用系统提供唯一权威的数据接入服务,目前,气象部门自动气象站数据均接入了CIMISS系统。气象部门雨量监测是防汛工作的重中之重,若能及时自动将雨情告警信息通过短信形式推送给用户,就能大大提高服务能力和灾害预警能力。
1 系统简介
降水短信报警系统是基于CIMISS系统,利用C#程序开发的应用软件。通过实时对接MUSIC,按照设定的台站号(包含区域站)读取相应时段降水数据计算整理显示排序,统计最大值与平均值,对超出设定阈值的站点进行记录并生成文字告警短信,自动发送给指定的用户手机号。
2 系统功能设计
系统设定三个相互独立的降水报警子程序,分别为站点小时雨量超过10mm告警、24小时滑动累计超过50mm告警、日统计值超过设定阈值告警。
报警子程序工作流程:到预定时间自动运行,根据站号表对接MUSIC系统查询统计降水量,如台站降水量最大值大于设定阈值则自动生成告警短信字符串,并叠加用户手机号,整理为HttpWebRequest对象推送给短信平台。其主要工作流程实现及代码包括:
2.1 对接MUSIC接口
首先检索台站参数表,调用MUSIC的getSurfEleByTimeRangeAndStaID接口(按时间段,台站检索地面数据要素)查询时段雨量数据,并返回RetArray2D对象。主要代码如下:
client.initResources();//建立MUSIC连接
parm.Add("dataCode", hourDataCode); // 资料代码
parm.Add("elements", element);// 检索要素:
parm.Add("timeRange", "[" + timeB + "," + timeE + "]");// 检索时间
parm.Add("staIds", staIDT);//台站参数表
client.callAPI_to_array2D(userId, pwd, ifID, parm, retarry);//开始查询,返回RetArray2D对象
2.2 数据整理统计
针对RetArray2D对象进行数据处理,转换为DataTable表格进行排序统计并显示在DataGridView控件中。主要代码如下:
for (int i = 0; i < dataGridView1.RowCount; i++)
{ double rain = Convert.ToDouble(dataGridView1.Rows[i].Cells[4].Value);//强制转换为double类型
max = max > rain ? max : rain;//统计最大值
total += rain;}
avg = total / num;//统计平均值
2.3 生成短信字符串
根据数据整理结果和设定的阈值,大于阈值的站点名称、雨量数据添加到短信字符串中。主要代码如下:
for (int i = 0; i < dataGridView1.RowCount; i++)
if (rain >= Convert.ToUInt16(textBox_rainYUZHI.Text))
sms+= dataGridView1.Rows[i].Cells[0].Value.ToString() + " " + rain.ToString("0.0") + ";";//大于阈值的数据生成短信。
2.4 自动发送短信
将告警短信叠加用户手机号,整理为HttpWebRequest对象推送给短信平台。主要代码如下:
var postData = "username=" + username + "&userpwd=" + userpwd + "&mobile=" + telNum + "&content=" +smsStr + "&msgid=";//短信叠加手机号
var url = String.Format("{0}?{1}", url, postData);//生成HttpWebRequest
var myHttpWebRequest =(HttpWebRequest)WebRequest.Create(url);//发送短信
2.5 软件主界面
本系统利用C# Timer控件复用实现上述流程自动化,基本实现站点小时雨量超过10mm、24小时滑动累计超过50mm、日统计值超过设定阈值自动发送短信,同时具备手动查询统计发送短信功能。系统实现界面,如图1。
3 应用分析
经过2019年7月利用舒兰市气象局41个气象站点进行检验,共自动触发53次短信报警。其中,7月25日舒兰市境内出现短时强降水,该系统反应及时准确,共发送24小时累计降水短信1次、小时雨强超阈值6次、24小时滑动累计超过50mm降水4次,与监测系统显示数据相对应,有效提醒了值班员有针对性地服务,发挥了短信告警提醒功能(见表1)。
4 结语
本系统将气象部门目前应用的CIMISS系统与现代通信技术相结合,实现降水数据融合应用,自动短信告警信息能够有效解决气象台站业务人员人工盯守的局限性,在面对突发性、小范围短时强降水时反应迅速、及时准确。同时,此系统也可作为对外气象服务应用,实现站点与服务对象一对一告警服务,自动启动“叫应”机制,为预警服务、防汛决策提供及时的技术支持。
参考文献
[1]王宏记,杨代才.基于CIMISS的长江流域气象水文信息共享系统设计与实现研究[J].安徽农业科学,2014,42(32).
[2]陈晴,杨明,陈晔峰,肖云,吴书成,吕梁.基于CIMISS的省级气象业务系统的应用设计[J].计算机应用与软件,2018,(04).
[3]张虹.鄂尔多斯短时强降水报警系统[J].内蒙古气象,2011,(03).
作者简介:李永刚,本科学历,工程师,研究方向:气象数据可视化应用、软件开发。