APP下载

上高县气象业务工作平台技术路线介绍

2018-02-23周丹红钱宏超高建平

南方农业·下旬 2018年1期
关键词:气象服务气象

周丹红+钱宏超+高建平

摘 要 目前,气象类省、市级指导产品的种类繁多、查询较为复杂,常导致县级气象综合业务人员迟看甚至遗漏有关重要的天气预报、预警等信息。通过本系统的研发实现县级气象局综合业务人员及时便捷地获取上级部门发布的气象预报预警等信息,有效避免重要的气象预警信号发布错误、不及时甚至遗漏的问题。本系统的技术关键点和难点是如何及时准确便捷地查询省、市局有关气象指导产品,并从中提取到本行政区的气象预报预警等信息,从而更好地做好气象预报预警服务。

关键词 气象;气象服务;资料调用;业务系统

中图分类号:P451 文献标志码:B DOI:10.19415/j.cnki.1673-890x.2018.03.061

气象现代化建设是提高气象业务和服务工作技术的有效途径,也是气象事业发展的重要标志[1]。而气象业务智能化在气象现代化中也有着重要的地位,以智能化、信息化、集约化的理念和方式来加快气象业务现代化的建设[2]。

目前,县级气象部门普遍存在人员编制少、综合性事务繁多、基层人员身兼数职等问题,这就会造成县级气象综合业务人员抽不出时间制作气象预报、无法时刻关注当前天气形势等问题。如果因为天气预报预警信息的迟发、漏发等问题造成严重的后果,将会给人民的生命和财产造成损失,并且会引发恶劣的社会反响。

随着现代信息化产业的高速发展,各类软件在市场的比例不断增大,应用的领域也越来越多[3]。为了解决上述问题,上高县气象局通过申报市局自筹资金科研项目完成了“上高县气象业务工作平台”的研发。平台通过从江西省气象内网、宜春市气象内网和CIMISS(全国综合气象信息数据共享平台)中读取相关数据,实现了对上高县上午、下午天气预报,空气质量预报,天气预警信号,区域站故障情况和省台天气形势分析的自动采集、处理与显示附带信息更新声音告警功能,并在平台界面最上方提供菜单栏,添加日常工作所需的网址和程序以供所有工作在该平台统一完成,如图1所示。该平台集约化程度高、可操作性强,使得日常业务工作的时效性得到很大的提升。

1 上高县气象业务工作平台的技术路线

1.1 自动获取网页所需信息并在平台显示

其中上下午天气预报、空气质量预报、天气预警信号和天气形势分析都是通过获取网页源文件再进行后期加工处理显示,以上午天气预报为例,利用下载和写入语句将网页原始数据写入文本文件“swyb.txt”当中。

Byte[] pageData = MyWebClient.DownloadData(“http://172.20.132.104/ycsharde/ycyb/morning.htm”);

using (StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + “swyb.txt”))

sw.Write(pageHtml);[4]

所得文件如图2所示。

因为原始文件中1月到9月、1时到9时跟10月到12月、10时到24时的位数不一样,为了方便后期数据处理,首先将文件中月份和小时统一为两位数(即01到09月、01到09时),将文件中第十四行变为固定格式yyyy年MM月dd日HH时宜春市各县市天气预报,用Split语句分隔“宜”字使之变为“yyyy年MM月dd日HH时”和“春市各县市天气预报”两断,只要提取第一段就为当天的预报时间,接下来循环搜后面的每一行,判断前两个字是否为“上高”,如果是就用编好的子程序触发声音报警并将该行放入字符串中,使用Replace替换语句将“-”替换为“至”,“”等其他无用符号替换为空同时生成一个新的字符串,接下来将新的字符串放入textbox框中即取到了当天上午上高的天气预报,如图3所示。

下午天气预报、空气质量预报、天气预警信号和天气形势分析同理所示。

1.2 通过CIMISS数据自动判断区域站是否故障并显示

CIMISS存储了地面、高空、海洋、辐射、服务产品等14大类气象数据,能够满足实时业务对气象数据的检索需求。为了更加高效地检索数据,CIMISS分别对资料按照时效进行分表存储,以地面数据为例,该类资料分为逐分钟、逐小时、逐日、月资料、旬值资料、年值资料。所要选取的区域站资料就是逐小时资料,利用“getSurfEleByTimeAndStaID”(按時间、站号检索地面数据要素)接口,通过选择资料代码、日期时间及站号输出所需要素,这里所需要素即为资料时间,通过选取当前时间至当前时间前50小时作为日期时间,输出的要素最后一行即为最近的资料时间,用该时间与当前时间做个减法就可以判断该区域自动站多少个小时未上线,部分代码如下:

DateTime retc = DateTime.Now;

DateTime dt1 = DateTime.Now.AddHours(-58);

string mytime = dt1.ToString(“yyyyMMdd-

HH0000”);

while (dt1 < DateTime.Now.AddHours(-8))

{

dt1 = dt1.AddHours(1);

mytime += “,” + dt1.ToString(“yyyyMMddH-

H0000”);

}

DataQueryClient client = new DataQueryClient();

String userId = “”;

String pwd = “”;

String interfaceId = “getSurfEleByTimeAndStaID”;

Dictionary params1 = new Dictionary();

params1.Add(“dataCode”, “SURF_CHN_MUL_HOR”);

params1.Add(“elements”, “Datetime”);

params1.Add(“times”, mytime);

params1.Add(“staIds”, myid);

params1.Add(“staLevels”, “014”);

String dataFormat = “text”;

StringBuilder retFilesInfo = new StringBuilder();

client.initResources();

int rst = client.callAPI_to_serializedStr(userId, pwd, interfaceId, params1, dataFormat, retFilesInfo);

if (rst == 0)

{

string aa = retFilesInfo.ToString();

string[] bb = aa.Split(‘\n);

string cc = “\r”;

for (int i = bb.Length - 1; i >= 2; i--)

{

if (bb[i].Length > 8)

{

cc = bb[i]; break;

}

}

cc = cc.Substring(0, cc.Length - 1);

retc = Convert.ToDateTime(cc).AddHours(8);

return retc;

}

1.3 日常工作網页及程序超级链接

1.3.1 网页链接

首先添加一个新的窗体作为网页调用窗口,在该窗体上创建webBrowser控件,为了使打开的网页束缚在该工作平台,利用以下语句:

foreach (HtmlElement archor in this.webBrowser1.Document.Links)

{

archor.SetAttribute(“target”, “_self”);

}

foreach (HtmlElement form in this.webBrowser1.Document.Forms)

{

form.SetAttribute(“target”, “_self”);

}

这样就不会用电脑默认的其他浏览器打开网页,而显示在之前创建的新的窗体里的webBrowser控件当中,避免有些网站只支持IE浏览器而打不开网页的问题。通过对菜单栏按钮进行编辑,当点下该按钮时,将一个全局变量赋值为一个特定的数,然后打开网页调用窗口,网页调用程序再通过这个特定的数去打开之前设定好的一一对应的网站,部分代码如下:

private void toolStripButton2_Click(object sender, EventArgs e)

{

myvar.ttt = 01;

网页调用 hh = new 网页调用();

hh.Show();

}

switch (myvar.ttt)

{

case 01: webBrowser1.Navigate(“http://172.20.132.104/”); break;

case 02: webBrowser1.Navigate(“http://10.116.

32.199/”); break;

default: break;

}

private void webBrowser1_NewWindow_1(object sender, CancelEventArgs e)

{

e.Cancel = true;

webBrowser1.Navigate(webBrowser1.StatusText);

}

1.3.2 程序链接

C#语言自带打开应用程序的语句,只需知道该程序的路径和名称,部分代码如下:

System.Diagnostics.Process.Start(@”D:\MICAPS311-201310\micaps3.exe”);[5]

2 结语

通过在上高县气象台几个月的试用,本平台有效地提高了业务人员工作的效率,减轻了业务人员时刻关注大量网页的压力,将日常应用和相关网页集约在该平台都为日常工作提供了许多的便利。该平台具有很强的通用性,只需稍加修改就可以在其他的县市推广应用。

参考文献:

[1] 黎键.新时期推进气象现代化的若干思考[J].浙江气象,2012,33(1):1-4.

[2] 王曦.智能化系统集成简介[J].精密制造与自动化,2011(4):61-64.

[3] 中国气象报社.准确把握新形势下气象现代化的内涵[EB/OL].(2013-05-31)[2017-12-10].http://www.cma.gov.cn/2011xwzx/2011xqxxw/2011xqxyw/201305/t20130531_215335.html.

[4] 李铭.C#高级编程[M].北京:清华大学出版社,2012.

[5] 齐立波.C#入门经典[M].北京:清华大学出版社,2009.

(责任编辑:刘昀)

猜你喜欢

气象服务气象
气象树
新乡市科协开展“世界气象日”科普进校园活动
文章有象
农业生产中气象服务的重要性及改进途径
浅析气象服务需进一步融入农业生产必要性
气象医学与人体健康