宋 峥
(嫩江尼尔基水利水电有限责任公司,黑龙江齐齐哈尔 161005)
近年来,随着嫩江尼尔基水利水电有限责任公司和黑龙江省大兴安岭地区气象局业务交流越来越广泛,为了减少雨量站重复建设和节约资源,提高尼尔基水利枢纽的防汛安全保障和调度运用水平,提高黑龙江省大兴安岭地区气象局对重大灾害性天气的预报能力,双方达成协议,实现自动雨量站雨量信息共享。
雨量信息共享软件主要是解决隶属于不同系统、不同管理部门、不同地域雨量信息的共享问题。其中,嫩江尼尔基水利水电有限责任公司有共享雨量测站20个,中心站位于齐齐哈尔市;黑龙江省大兴安岭地区气象局有共享雨量测站16个,中心站位于加格达奇市。
由于雨量信息共享的两家管理单位中心站分属异地,要实现雨量信息共享,首先要建立两个系统连接的通信桥梁,既考虑经济性和程序开发的便捷性,又结合相应的安全防护策略保证可靠性,采用的是租用FTP服务器空间进行雨量信息的交换。
FTP的全称是File Transfer Protocol,即专门用来传输文件的协议。FTP在Internet上使用广泛,是共享资源的主要途径之一。它的特点是访问方便,操作简单,易于管理,它的主要作用是让用户连接上一个远程计算机(这些计算机上运行着 FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机上去。
采用FTP服务器空间进行雨量信息交换的同时也带来了安全问题。为了解决信息盗取、病毒以及黑客入侵等安全性问题,FTP服务器管理采用了设置登陆操作日志、限定目录、不允许执行exe操作以及信息保密等策略。
雨量信息共享的双方都已经建设了自己独立的系统,不仅具有信息采集、存储、处理和查询等功能,还有完善的数据定义和不同的数据库结构。为了将共享的雨量信息融合到对方的系统,便于信息的存储和查询,结合FTP文件传输协议的形式,雨量信息交换采用报文交换的方式。
雨量信息报文交换的前提是确定报文编码和译码的标准,定义报文雨量信息要素,包括站码、时间、时段标示和雨量值。站码是每个雨量测站的编码,必须具有唯一性,双方系统按照自己的测站编码规定,对新增的测站进行编制。时间是降雨量值的截止时间,这里规定每小时进行一次雨量信息交换;时段标示是区分小时数据和日数据的标志,日数据按8时来分界。雨量值是时段内将雨量的累计值,如果时段内没有降雨按0处理,这样处理的好处是根据系统有无数据来判断共享测站是否正常运行,在实践应用过程中更加准确地处理雨量数据。
雨量信息共享软件共设计了4个模块,分别为:雨量信息交换模块即主程序模块、系统基本参数设置模块、测站参数设置模块和补数模块。雨量信息交换模块主要完成程序运行控制和雨量信息自动交换功能;系统基本参数设置模块主要完成FTP和数据库相关信息的配置功能;测站参数设置模块主要完成共享测站相关信息的设置功能,对于此模块还设计有独立的数据库表结构,便于程序的实现;补数模块主要完成规定时间内雨量信息的补传功能。
雨量信息交换是雨量信息共享软件的核心部分,主要包括:报文上传和下载、报文生成和分解、SQL生成、雨量信息提取和入库以及定时器的设定等环节,各个环节在程序执行过程中要清晰、严谨。程序设计的基本思路见图1。
图1 主程序流程
雨量信息共享软件采用Java语言开发,Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,正是基于Java面向对象程序设计的本质,将软件所需要的报文上传和下载、报文生成和分解等实体抽象出来,封装或继承为信息上传、信息下载、报文形成等抽象类,围绕程序的数据(对象)和针对该对象而严格定义的接口来组织程序,按照程序设计的模块、流程逐步完成程序代码的编译和程序的调试。
a.雨量信息FTP上传和下载是通过引进sun.net.ftp.FtpClient类来实现的。FtpClient类涵盖了几乎所有的FTP功能,利用这些类的方法,可以远程登录到FTP服务器,列举该服务器上的目录,设置传输协议,以及传送文件。
b.雨量信息交换的时间配合。考虑到各种系统雨量信息采集的时间差和上传、下载的时间差,分别限定了上传和下载的时刻并可修改,在一定的条件下保证雨量信息的真实性和时效性。
c.保证雨量信息无漏报。造成信息漏报的有网络、硬件保障以及误操作等多种因素。为了避免此问题,程序设定了记录上传、下载信息时刻的临时变量,记录程序上次完成信息交换的时间,保证雨量信息的连续性,同时也编写了雨量信息补传功能模块。
雨量信息共享软件是实时运行系统,保证其稳定运行十分重要。在软件测试过程中发现,由于网络不稳定等原因会造成上传或下载数据超时,从而导致程序“假死”现象。经过测试,设置 FTPClient中 setDefaultTimeout()、setConnectTimeout()、setDataTimeout()方法的超过限定时间,消除了程序“假死”现象。
另外,对于因数据库读取、数据转换等非正常情况下的错误而造成的程序中断,采用了捕捉异常实现程序跳转保证其正常运行。捕捉程序异常日志见图2。
图2 捕捉程序异常日志
经过两年的实际运行,共享软件满足了程序开发的需求,对运行过程中出现的BUG也及时做了修正,能够完成雨量信息的共享,并且能够保证数据传输的准确性和时效性。
共享的雨量信息对等雨量面图的制作提供了更多的信息支持,便于流域降雨特点的分析。雨量信息共享软件运行图见图3。
图3 雨量信息共享软件运行
雨量信息共享软件的开发和应用解决了两个不同管理单位的雨量信息共享问题,减少了雨量站的重复建设。将雨量信息共享的思路,推广到整个涉及雨量信息产业的资源整合,有利于信息使用多元化的需求,同时带来的安全、管理和标准等问题还需要进一步探索,传统的管理体制也需要进一步的改革。