气象水文信息实时共享系统的设计与实现

2020-07-15 05:01周雪莹李显风胡佳军
计算机技术与发展 2020年7期
关键词:数据表水文日志

周雪莹,李 芬,李显风,胡佳军

(江西省气象信息中心,江西 南昌 330096)

0 引 言

江西省洪涝灾害发生十分频繁,气候异常、极端天气事件增多,气象防灾减灾形势日益严峻,社会对气象资料和气象服务的需求越来越大,也越来越多样化。国家“十三五”规划建议提出:“实施国家大数据战略,推进数据资源开放共享”,气象部门和水利部门是国民经济与社会发展的重要基础支撑和保障,气象和水文数据是国家重要的基础资源,在各自不同的领域里研究了水分循环系统的不同环节,建立信息共享机制是时代发展的大趋势,积极提高全社会气象服务信息的利用能力,激活全社会气象信息服务产业的活力[1]。根据中国气象局与水利部长江水利委员会签署共同推进长江流域防汛抗旱战略合作协议,实现两部门的数据实时共享,开展跨学科、跨部门、跨地域的深入研究,为更加准确的气象预报预警信息提供强有力的数据支撑,进而提升洪水旱情预测、预警与防灾减灾综合服务能力,提高公共气象服务水平[2]。

江西省气象、水利部门各自建设高密度雨量观测站网,水文自动观测站有2 807个,其中水文站有110个,水位站有259个,雨量站有1 855个,气象自动观测站有2 545个,其中国家级自动站有93个,区域级自动站有2 452个。因为水文部门的水文监测自动化系统运行机制与气象部门的大气监测自动化系统运行机制有所差异[3],数据采集、报文格式和传输时效流程完全不同,所以数据共享的实时性不强,监视报警环节薄弱,一旦处于有效时间之外,将无法有效地为气象预报预警、防汛抗旱和公共气象服务提供及时有效准确的数据环境[4]。

目前,大量的共享数据变成历史数据存储在共享服务器中,大部分没有被开发利用,造成资源浪费。为了提高气象水文共享数据的实时性、准确性、有效性和利用率,为气象部门、水利部门、市县以及周边省的业务、科研、专业服务提供完整的数据支持[5],开发了江西省气象水文数据实时共享平台,实现数据传输、接收、处理、存储、共享、日志管理和监视告警等功能,在CIMISS基础上,建立跨部门共享数据实时数据库和监视信息数据库,并且提供统一的数据访问接口。针对共享数据传输和共享的高时效性和可靠性,以及目前页面形式告警缺少信息交互,手机短信告警能够展示的信息较为贫乏,增加了微信的方式接收告警信息,满足消息通知的及时性、信息展示的丰富性和交互性,更能及时通知值班业务人员和管理人员服务器状态、网络状态、进程运行、数据传输和处理等异常情况。

1 气象水文数据共享流程设计

全国综合气象信息共享平台(CIMISS)是气象核心基础数据支撑平台,在此基础上建立了气象信息化数据统一标准,直接支撑气象业务和服务应用。但是跨行业合作是新时代的趋势,数据需求增长迅速,对数据的时效性和稳定性要求越来越高,基于气象核心业务的CIMISS对跨行业共享数据支持存在不完善,在原有CIMISS技术架构和访问接口的基础上建立跨行业数据库[6-7],提供更加及时准确的跨行业共享数据环境支撑,实现对实时数据的快速响应。

本系统依托政务外网、CIMISS数据环境和统一数据服务接口,定时获取气象降水数据,并根据共享数据格式生成气象降水文件,采用FTP方式实现数据实时传输至水文共享服务器,同时水文部门也将水文降水文件传输至气象部门。对实时收集的气象和水文降水文件进行解码入库处理,并以rest方式提供数据服务接口,兼容与CIMISS数据标准,同时根据需求,将实时收集的水文降水文件通过气象专网共享至周边省份,为长江流域气象水文业务服务提供数据支撑[8]。数据共享流程如图1所示。

图1 数据实时共享流程

2 系统设计与实现

在建设气象、水文数据共享传输网络系统的基础上,基于B/S架构和C/S架构相结合的方式,采用MySQL数据库、C#和Python等计算机技术,建立江西省气象水文数据实时共享系统,实现气象、水文共享数据的实时收集和多线程处理,提高数据使用的实时性、准确性和有效性,建立气象、水文共享数据库,并以接口的方式提供数据服务,为省市县三级业务应用提供了有力的数据支撑。

2.1 总体设计

根据气象部门和水利部门自动观测规范、报文格式、采集时效等不同,以及对数据处理的实时性、准确性和有效性的要求,设计了系统的总体结构。本系统主要由数据共享处理、日志管理和监视告警三部分组成,各部分依赖性低,耦合性弱,结构更加明确,增加了系统的可扩展性,极大降低了后期维护的成本和时间[9],系统总体架构如图2所示。

图2 系统总体架构

2.2 系统功能

根据应用需求,系统设计了数据共享处理、日志管理和监视告警等功能,其中数据共享处理功能包括文件解码入库模块、补处理模块和省际共享模块,日志管理功能包括日志生成、日志存储和日志调用,监视告警功能包括短信告警、微信告警和页面告警。

2.2.1 数据共享处理

气象部门的降水监测系统定时采集小时和分钟降水资料,而水文部门降水监测系统仅监测和传输发生降水时次资料,数据频次具有不确定性特点,因此通过设置高频率扫描频次对水文共享资料文件进行实时扫描,确保共享数据文件接收和处理的完整性、及时性。将扫描获取的文件列表,写入解析入库处理队列,提取文件内容,并写入数据库相应数据表,同时生成文件传输情况、解码情况、入库情况和备份情况日志文件,提供系统监控使用。日志文件中,由于网络故障、设备故障和人为操作等原因,不可避免会造成系统运行中断等异常情况,导致某个时次或时间段范围内报文未及时处理,系统提供异常处理功能,实现缺失数据的手动补处理,保障实时共享数据文件接收和处理的及时性、完整性和连续性。数据共享处理流程如图3所示。

2.2.2 日志管理

采用日志管理方式,对系统运行的关键环节、系统服务器状态、网络状态等信息进行实时日志记录。服务器运行状态和网络状态通过部署状态采集软件实现,采集信息包括服务CPU、内存、储存空间等信息以及网络中断信息等。系统运行状态通过实时生成行为日志和异常日志信息,并按照标准规范生成相应的日志文件[10]。对日志文件进行解析处理,提取数据收集、数据处理、数据储存管理等系统状态信息及异常告警信息,写入系统的监视信息数据库,为后续系统分析和故障处理提供依据。日志管理流程如图4所示。

图3 数据共享处理流程

图4 日志管理流程

2.2.3 监视告警

监视告警功能提供页面告警(见图5)、短信告警和微信告警三种方式,为业务值班人员及系统管理员提供及时的监视告警信息。系统通过实时读取监视信息数据库的数据记录,监测到异常情况,并根据参数配置的监控告警规则判断告警级别,分为紧急告警、严重告警、一般告警[11]。若为一般告警仅提供页面显示,若为紧急告警和严重告警,监视系统则发出异常声音告警,并同时以短信和微信的方式,把异常信息发送至值班人员和管理人员,保障异常情况被快速处理。

图5 系统监控告警页面

3 关键技术

3.1 基于多线程的气象水文数据加工处理

气象水文数据共享处理系统采用文本文件作为传输标准格式,由于每时次共享传输文件数量大,采用单线程顺序处理所有文件耗时长,无法满足实时观测资料时效性需求,为此采用多线程处理方式,根据文件数和线程数,将全部处理文件分配到各个线程同步处理,极大提高了数据解析入库处理效率。

对系统的目录扫描、文件传输,包括目录扫描线程、文件传输线程、数据处理和解码入库分别采用不同的处理线程来提高系统处理效率。目录扫描线程定时扫描共享目录下的数据文件,通过文件名匹配和数据格式检查,剔除异常数据文件,得到每时次的处理文件列表。文件传输线程实现收集和发送气象雨量文件和水文数据文件,实现数据文件实时共享。数据处理线程使用CIMISS气象数据统一服务接口(MUSIC)快速获取地面逐小时雨量数据,根据文件命名规则和文件标准格式生成气象雨量数据文件。文件解码入库线程对文件内容进行逐行解析处理,提取时间、经度、纬度、站号、要素和要素值等信息,当文件数据读取结束后,将提取的信息一次性写入气象水文共享数据实时数据库。

3.2 基于数据接口的共享服务

共享数据以CIMISS数据源和水利数据为基础,数据标准保持与CIMISS数据环境的一致性,以统一接口服务的方式面向业务应用提供服务。为了提高数据读写性能、数据库访问速度和数据查询速度,保证共享数据入库的及时性,采用视图、索引、主键或复合主键等技术对数据库进行优化设计,不同的要素分开存储在不同的实体数据表中[12-13]。根据业务需求,系统设计并建立了元数据表、台站基本信息表、雨量数据表、水位流量数据表和监视告警信息表等。元数据表用于存储关于数据的说明性信息,是关于数据的数据或描述数据的数据,包括气象水文共享数据类型、数据类型标识、各个要素的说明;台站基本信息表用于存储站点信息;雨量数据表和水位流量数据表分别存储水文站观测的降水量、水位和流量等不同要素数据;监视告警信息表用于存储系统运行环境状态、系统运行状态指标和网络连接状态等信息。

基于建立的共享数据库,采用rest方式设计了一套统一的数据访问接口。根据数据共享服务需求,设计并建立了按时段检索地面降水、按时间检索地面降水、按时段统计地面降水、按时间段及站号检索地面降水等不同的功能接口(见表1)。rest具有访问数据快,接口调用简单等优势,以按时间段及站号检索地面降水接口为例,通过调用getSurfEleByTimeRangeAnd StaID接口,获取了2019年3月02日至2019年3月03日(北京时)水文站(站号为62422800)24小时降水量及站点元数据信息(见表2)。

表1 接口说明

表2 按时间段及站号检索返回结果

3.3 基于移动端的监视告警

微信接收监视报警模块使用企业微信丰富的API接口和应用与小程序的功能,采用shell脚本和HTML5等开发技术,通过接口凭证调用企业微信号提供的开发接口,建立本地应用程序与企业微信之间的连接和交互,实现监视报警信息推送至值班人员和管理人员的微信上。用户不需要增加手机app,通过关注企业微信号后,即可获得内容丰富且具有个性化的移动应用[14]。

Web端短信发送监视报警模块是在移动代理服务器(云MAS短信服务平台)的基础上,采用C#编程语言调用Mas机API接口方式制作的短信发送入库接口,调用该接口可以发送监视报警信息至移动、联通和电信的手机上,实现“三网合一”,同时将短信发送返回状态、手机号和短信内容保存至数据库。为了防止值班人员和管理人员收到的短信含有乱码,短信信息的字符串编码与发送短信的服务器的编码一致,即使用UTF-8编码,发送至多个用户时,可以使用逗号分隔电话号码。设置网段限制,防止未授权的用户调用该接口发送非法短信信息。

4 应用实例

本系统为全省气象部门提供了高密度的站点实况降水数据,有效支撑了本省省市县三级业务应用。江西省气象信息中心基于该共享系统的数据接口,采用基于RIA的WebGIS技术,建立了江西省气象、水文雨情信息的分析平台,实现了水文站、气象站降水叠加地理信息的一张图显示,具备数据的等值面绘制、数据统计分析,数据查询、导出等功能[15],平台在降水监测,尤其是强降水监测中发挥了重要作用。

5 结束语

根据气象部门和水利部门的监测自动化系统运行机制的不同,设计和实现了一套具有收集、分发、处理、共享、监视、告警、日志管理和数据存储管理功能的气象水文数据实时共享系统,并且对气象水文共享数据文件接收、处理、发送、日志管理和监视告警进行了详细的阐述。

(1)通过政务外网建立了跨部门的数据共享与交换机制,加强了数据共享的实时性和有效性;通过多元化的监视报警方式,提高了数据传输的及时性和稳定性;利用多线程的数据处理方式,提升了数据解码入库的时效性和并发性。

(2)系统实现了数据共享处理、数据存储、日志管理和监视告警等功能,建立了气象和水文共享数据实时数据库和监测告警信息数据库,为省市县三级业务的应用提供统一的数据访问接口。日志管理和监视告警为值班员和业务管理人员对系统故障判断和处理提供了可靠的决策依据,通过界面显示、短信和微信方式相结合,实现内容丰富且具有个性化的移动应用。

(3)系统投入业务运行后,显著提高了数据传输的及时性和数据使用的完整性,能够为提升公共气象服务水平、气象预报预警与防灾减灾综合服务能力、洪水旱情预测及跨行业跨部门的信息共享、空间集成以及跨学科的可持续发展研究提供有力的数据支撑,为气象部门、水利部门、市县以及周边省的业务、科研、专业服务提供完整有效的数据环境。

猜你喜欢
数据表水文日志
一名老党员的工作日志
发展水文经济 增强水文活力
读扶贫日志
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
雅皮的心情日志
雅皮的心情日志
江西省水文文化建设的思考
水文档案的特点作用与管理分析