1. 引言
近年来宜宾市极端恶劣天气、高影响天气发生的频率和强度明显增加,这对宜宾市气象局的水电站专项气象服务提出了新的挑战。在极端天气发生时,要求水电站气象服务人员能快速响应,并做好相关预警和服务;专业化和信息化是水电站气象服务的迫切需求,“向家坝水电站气象服务平台”是针对向家坝水电站专项气象服务定制开发的平台。项目基于DO.NET技术和Window Form平台开发客户端程序,平台采用模块化集成开发方案,同时对现有水电气象服务文档材料进行了信息自动化处理,为我们的气象服务人员提供模块集约化、功能多样化、信息表达直观化的平台。
2. 系统架构设计
2.1. 系统流程设计
1981年至2021年向家坝水电站气象服务工作主要包括中短期天气预报、旬月预报、气象预报短信、气象预警信息、流域面雨量预报等服务。在制作水电站中短期天气预报服务材料时,平台的相应模块会自动从气象资料数据库检索、统计对应的气象数据,填充气象服务文档中的气象数据部分,并按规定格式,自动生成中短期服务文档,并存档。开展水电站日常气象短信服务和气象预警服务时,平台的短信服务模块和气象预警质量模块会自动根据最新气象资料形成常规气象服务短信和气象预警短信,在气象服务人员完成某项功能操作后,平台的数据服务模块会自动对操作的文档或产品进行保存和入库处理,方便日后的检索与查询。
2.2. 数据库设计
根据向家坝水电站气象服务的业务需求,项目平台共设计了4张数据库表:水电站专业气象服务产品表;水电站气象灾害预警信息表;日常服务短信信息数据库表;气象自动区域站历史极值表。
2.3. 系统统计模块设计
向家坝水电站气象服务平台采用面向对象和模块化开发方案,利用MSSQL 2008作为数据服务层的数据格式,开发了项目数据存取对象、数据统计对象、Office工具对象、预警信息质量控制对象、流域面雨量对象、工具窗口对象等通用接口对象。同时本平台以合成和存取各类气象信息产品为驱动,以各个功能对象为基础,首先读取相关的气象数据,利用Apose.total和DO.NET技术合成各类水电站服务文档;利用数据存取对象和信息合成模块搭建平台的服务短信信息合成和入库功能;利用数据驱动对象和数据模块搭建平台的气象数据查询检索功能;利用数据存取对象和预警信息质量控制模块完成平台的气象预警信息质量控制功能。系统基本设计框架如图1。

Figure 1. Design diagram of meteorological service platform module for Xiangjiaba Hydropower Station
图1. 向家坝水电站气象服务平台模块设计图
3. 关键技术
3.1. NET技术
项目平台是为向家坝水电站气象服务人员和气象决策人员提供专业服务产品和数据查询及统计分析信息而定制开发的。系统基于.Net Framework 4.5系统框架,采用微软公司的C#语言开发完成。.Net Framework是微软发布的系统框架,可以运行任何.Net语言编写的软件 [1] 。C#与.NET框架和公共语言运行库完全集成,提供语言互操作性、垃圾回收、增强的安全性和改进的版本支持。
3.2. WinForm技术
WinForm是Windows Form的简称,是基于.NET Framework平台的客户端(PC软件)开发技术,一般使用C#编程。本文项目平台主要采用是Visual Studio 2015 (下文简称VS 2015)编程工具进行开发。在VS2015中,C# WinForm编程需要创建「Windows窗体应用程序」项目。Windows窗体应用程序是C#语言中的一个重要应用,也是C#语言最常见的应用。使用C#语言编写的Windows应用程序与Windows操作系统的界面类似,每个界面都是由窗体构成的,并且能通过鼠标单击、键盘输入等操作完成相应的功能。WinForm支持可视化设计,简单易上手,并可以接入大量的第三方UI库或自定义控件,给桌面应用开发带来了无限可能。
3.3. ASPOSE
Aspose.Words是一款先进的类库,通过它可以直接在各个应用程序中执行各种文档处理任Aspose.Words支持DOC、OOXML、RTF、HTML、OpenDocument、PDF、XPS、EPUB和其他格式 [2] 。在本文项目平台中,主要使Aspose.Words提供的功能,通过其提供的接口方法,平台对应模块自动读取气象站点数据库数据,形成水电气象服务文档。
3.4. SQL Server
Microsoft SQL Server是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。Microsoft SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。本文平台采用的是Microsoft SQL Server 2012作为数据底层驱动数据库。
4. 平台实现
4.1. 开发环境
向家坝水电站气象服务平台采用C/S开发模式,基于.NET FRAMWORK 4.5框架,C#语言为程序主要开发语言,Visual studio 2015为程序开发工具,SQL SERVER 2008为基础数据库。技术架构主要分4个层次:UI表现层;业务逻辑层;数据访问层。
4.2. 平台功能设计
本平台的基本功能是为向家坝水电站气象服务人员、气象决策人员提供气象资料的查询和统计,实现水电气象服务产品的自动生成。通过对功能和业务流程的完整分析,整个平台的主要功能模块有气象数据处理模块;专业预报服务产品自动化模块;气象预警信息模块;“气电”两网资料传输互通等模块。
4.2.1. 气象数据处理模块
该功能主要对数据库中气象数据,包括实时自动气象站数据、人工预报数据、MICAPS模式天气数据等。其次预报数据进行统计和处理,处理的方法包括对日、月、旬的统计(和、最高、最低、均值)。处理完成的数据形成日、旬、月、年多张历史数据表,为水电站气象信息分析应用提供业务基础数据。
4.2.2. 预警信息模块
在水电站气象服务中,突发气象灾害主要为雷电、大风等短时强对流天气,预报人员可以使用平台不定时的快速制作预警信息,根据标准化模板形成制式化信息,人工核对后保存到数据表中,显示内容为预警信号内容、发布时效、状态信息等。预报业务人员可以通过项目平台查看发布的预警信号、发布日期、状态信息等,同时系统的业务监控模块也定时将该预警信息状态显示到主界面以提醒值班人员,便于值班人员及时根据最新天气实况做更新和解除操作。关键代码实现如下:
string value = MyJObjectTool.GetValue(blue,jobject);
string level_blue = MyJObjectTool.GetValue(WindBlue, jObject_smart);
string smart_text =
if (checkBox1.Checked)
smart_text = level_blue.Split('|')[1];
else
smart_text = level_blue.Split('|')[0];
if (null != value) {
string cd = value.Split('|')[0];
string td = value.Split('|')[1];
StringmessageCDTemp=
cd.Replace(*,yearAndNumber).
Replace(*, yearAndNumber).
Replace($, this.alertMessage.alertDate).Replace(@,smart_text);
... ...
this.alertMessage.status = 1;
}
4.2.3. 气象数据查询与统计模块
项目以水电站所有自动气象站和区域站数据为基础,用SQL语言和C/S开发模式,实现以表格的形式,显示日、旬、月和年数据中的极值、平均、最高、最低值等的查询统计结果,同时平台也可以实时查询各自动站的气象数据,并以表格的形式显示查询结果。关键代码实现如下:
public SqlDataAdapter QueryAllByDuaryTime(string startT,string endT,string stationId,string elements){
string sql = select +elements+ from +stationId+ where TT > '+ startT + ' and TT <= ' + endT + '
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
return sda;
}
public List
QueryAllForHour(
string time, string stationId,
string elements){
string sql = select + elements + from + stationId + where TT = ' + time + '
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet dataSet = new DataSet();
sda.Fill(dataSet);
List
hourRecords = MyDataSetToListTool.DataSetToList
(dataSet, 0); return hourRecords;
}
public List
QueryForDay(
string time, string stationId,
string elements)
{
... ...
//List
day
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet dataSet = new DataSet();
sda.Fill(dataSet);
List
listFor24Hour = MyDataSetToListTool.DataSetToList
(dataSet, 0);
return listFor24Hour;
}
4.2.4. 流域面雨量气象预报制作功能
水电站气象业务服务流程具有严格的时间区间,特别是气象预警的发布与解除,具有非常高的时效性;平台利用.NET Framework 4.5框架提供的Timer工具类MisssionDog对象,对业务流程进行分析进行任务工具类提取,项目根据业务设计开发任务类(Mission)来实现各个业务流程状态实时监控和报警。Mission任务类定义业务类型、业务开始时间、业务结束时间、业务警报时间等四个属性,以及Bool类型的状态属性,任务已完成为false,未完成则为true,MisssionDog定时监控的主要任务则是监测或改变其状态。
值班员可根据不同的水电气象服务业务需求,将需要监测的业务通过任务模块添加到任务列表(List
) MissionsList实例集合中,模块会自动绑定至ListBox控件。同时实现ListBoxItem以绿色、红色表示任务的完成、未完成等状态。日期任务开发时或任务达到解除时效而未解除,系统还将以声音报警方式,提醒气象服务值班人员,以免造成气象预警信息解除超时和常规气象服务业务的遗漏。
4.2.5. 业务流程监控
万物互联,安全为基,企业的网络安全不可忽视 [3] 。水电公司网络和气象网络无法实现互通,同时禁止使用QQ、微信等通讯工具,在预报制作完成后,我们需要通过专用的U盘进行拷贝在发布到公司网络上,让业务变得繁琐。针对这一情况,项目专门研发了基于TCP协议的点对点数据传输工具。水电站气象服务人员可以直接在气象业务网上制作气象业务产品,通过平台传输工具直接传到公司网络的计算机进行产品发布。工具简化了业务流程,同时保证了数据的安全。
5. 应用显示效果
项目平台主要功能分为常规业务功能、气象数据查询与统计、文件传输等。其中主菜单功能中分为白天天气预报、短期天预报、周报、旬月预报等功能。数据查询功能有自动站小时数据查询、分钟数据查询、历史资料查询统计等,预警信息模块包含有预警信息制作与质量控制、历史预警查询与统计等功能如图2所示。

Figure 2. Xiangjiaba hydropower station meteorological service platform early warning information module
图2. 向家坝水电站气象服务平台预警信息模块
6. 结语
向家坝水电站气象服务平台的建立为向家坝水电站气象业务的开展提供了业务功能相对完备、高效规范的工作平台,实现了向家坝水电站气象服务中的中短期服务材料和旬月预报的自动化,预警信息质量控制和业务服务监控等功能;较好的利用了现代计算机技术的特点,满足现在岗位多元化的综合气象业务发展要求。平台同时将极大提升水电站气象专业服务能力和服务水平,创造出更大的经济效益。
参考文献