重庆市测震台网值班管理信息化系统的设计与实现1
2018-03-19李光科巩浩波
李光科 巩浩波 张 锐 张 巡
(重庆市地震局,重庆 401147)
引言
重庆市测震台网自2007年“十五”项目以来,台网建设逐步完善,台站数量、观测手段不断增加,辖区监测能力迅速提升,台网值班资料和运行数据快速增长,日常值班工作量也随之增大。与绝大多数省级测震台网相同,重庆市测震台网的值班任务除最重要的速报、编目以外,还需要进行大量的技术系统维护与业务数据录入工作,其中录入工作仍采用纸介质方式,效率低,投入精力多,不便查询且会不可避免地带来人为疏漏(常亮等,2009)。同时,面对数量众多且关键的业务系统,值班人员的精力耗费在大量重复、机械但又重要的事项上(孙路强等,2013)。
针对上述问题,利用C#编程语言,结合重庆区域特点研发了“重庆市测震台网值班管理信息化系统”。该系统能收集各项值班信息和台网运行数据,并依托数据库对数据进行整合,生成的电子数据表包括台网值班日志、仪器运维情况、仪器运行完整率、仪器标定、台基背景噪声等。系统还提供数据查询分析、产品产出、事务提醒、短信发送、语音播报等功能,上述数据的整合与功能的实现不仅可准确记录仪器、台站、技术系统等局部业务的信息,更能从宏观上反映台网的整体运行情况,从而缓解值班人员的工作压力,提高工作效率和数据产品质量,进而推进重庆市测震台网管理的信息化发展,为监测预报工作提供有力支持。
1 技术思路
本系统采用C/S架构,架构与功能见图1,主要分为客户端程序和数据库2部分。系统依靠图形界面实现人机交互,为用户提供多项业务功能,并通过数据库保存和管理数据。客户端程序采用C#编程语言开发,它是1种完全面向对象的、运行于.NET Framework之上的高级程序设计语言,具有安全、稳定、简明等特点,实践表明C#更适合Windows系统及测震业务需求。本系统数据库采用Mysql开源关系型数据库管理系统,具有运行快速、多线程、多用户、多引擎等特点,支持标准SQL查询语言和多种数据类型,能对数据进行各种详细查询,还可快速对数据进行备份与恢复,目前已广泛被各测震业务软件使用(如Jopens、EQIM等)。
图1 重庆市测震台网值班管理信息化系统架构Fig.1 Structure diagram of duty management information system in Chongqing seismic network
客户端程序通过调用Mysql程序接口建立与数据库的通信,此架构将数据存储与客户端程序隔离开,使数据库具有易迁移、可对接以及可二次开发、网页开发的扩展性能,客户端程序可随时依据客户需求和业务变化进行灵活的修改与升级。
2 系统设计
根据重庆市测震台网工作需求和业务特点,结合现有的软、硬件技术环境,系统功能主要侧重于2方面:值班数据收集与台网业务管理。数据库主要用于业务数据的定义、操作、组织、存储与运行管理,软件客户端则负责与数据库的交互及各功能模块的实现。
2.1 软件客户端设计
2.1.1 功能模块与业务流程
软件客户端主要实现以下功能:用户权限管理、数据库交互、值班日志录入、技术系统监控、数据查询分析、数据产品产出、业务检查与事务提醒、短信发送、语音播报、系统参数管理等。软件客户端的业务流程与功能模块组成见图2。
2.1.2 界面设计
系统采用Windows窗体应用程序布局,配置常用的菜单栏、快捷工具按钮、状态栏和表格控件等。用户进入系统前,需要登录以实现权限管理,主界面上方为菜单区,包含了台网基础信息管理、软件工具、系统设置和帮助等主要功能,菜单区下方为快捷工具按钮和信息栏,快捷工具栏包括了数据库连接设置、数据图表、短信发送、报表导出等常用功能,信息栏则滚动显示当日重要信息。快捷工具按钮下方为表格录入区,放置了日常值班中常用的4张报表,各表采用分页控件容纳在主界面窗体中,均可实现录入、删除、更改、查询等操作。系统的主界面如图3所示。
2.2 数据库设计
系统采用Mysql数据库完成对业务数据的保存与管理,将数据库运行于更加稳定、安全的Linux系统上,数据库组件包含Mysql-server和Mysql-client,引擎选择为InnoDB。
图2 系统业务流程与功能模块组成Fig.2 The composition of system business process and function module
图3 系统主界面Fig.3 Main interface of system
2.2.1 构建数据库表空间
考虑到本系统和重庆台网业务的双重需求,并兼顾台网运行和后续开发,数据表结构的设计遵循了标准和坚持开放的原则(孙路强等,2016),合理设置各表主键及索引,减少冗余,避免在各表中设置重复字段。如系统中较重要的“台站信息表”,其字段较全面的囊括了台网的基础信息,其它数据表可以通过相关字段与其进行联合查询及索引,并尽量详细的对表结构进行注释,以便后续开发和其它软件用户的访问,表结构见表1,各表所属功能划分和逻辑关系见图4。
表1 台站信息Table 1 Station information
图4 数据库各表所属功能划分和逻辑关系Fig.4 The functional division and logical relationship of tables in database
2.2.2 数据库安全备份
大多数软件系统都需要考虑数据库的安全备份,虽然其在整个软件开发周期中的工作量甚至不到5%,看似不太重要,但当数据库出现不可逆破坏时,丢失的业务数据将不可恢复,损失极大,所以针对数据库安全方面的维护是1项长期任务(刘爱华,2011)。如在我国地震行业内,国家及各省局前兆台网统一采用主、备服务器定时双机热备的安全策略,较好地保证了数据的安全和及时性。
根据重庆市测震台网特点,系统数据库有2种备份方式:①利用多种数据库管理工具(如SQLyog、Navicat Lite等)进行数据安全备份,优点在于可远程在Windows平台上进行图形界面化的备份和恢复,方便简洁,缺点在于依赖人工且及时性较差;②自动备份,使用Mysql用于转储数据库的程序Mysqldump,产生1个SQL脚本,可实现重建数据库,利用此程序可在Linux系统中编写备份脚本,将数据库全部内容备份到目标位置,目标位置可以是本机磁盘,也可以是其它服务器甚至异地服务器,同时利用内置于Linux系统中的Crontab软件定时执行该备份脚本,实现了Mysql数据库完全自动化备份,高效、快捷、经济,既保证了数据安全,也省去了重复的人工劳动。
2.2.3 客户端与数据库的交互
客户端与数据库的交互主要集中在数据库连接和对数据表的操作上。系统与Mysql数据库连接需要在引用中添加Mysql.Data.dll程序集,该程序集包含了与数据库通信的连接对象和方法。由于客户端除与本管理系统交互外,还需要访问Jopens、EQIM、统一编目等测震业务数据库,而数据库连接所需的IP、数据库名称、用户名、密码等信息可能会随业务需求发生变化,故定义了1个专门进行数据库连接访问的类,同时以配置文件的形式存储上述数据库的连接信息,该类只需在系统启动时对配置文件进行读取或者修改,即可完成数据库的连接。
系统在运行过程中需频繁地对数据表进行增、删、查、改等操作,故在代码中将数据表一一对应抽象为实体类,各表的字段对应实体类的属性,1个实体类对应数据表的1行记录,多条记录可以利用实体类的泛型对象进行存储,这样的设计不仅实现了代码复用,减少了冗余,且提升了数据库交互效率。
2.3 系统特点
本系统通过信息化手段对测震台网值班工作进行了有效的整合与优化,通过数据库科学的存储、管理业务数据以及程序客户端对各事务工作进行的技术封装,将以前零散、琐碎的事务变成了快捷的程序功能,从而减少了重复性机械劳动,解放了人工,提高了测震台网值班的工作效能,增强了快速响应震情的能力。系统的主要特点有:
(1)程序界面可视化。客户端程序采用WinForm框架,符合主流Windows用户操作习惯,用户接受快、体验好,操作简单方便,并通过表格、图表等丰富的可视控件直观地为用户提供服务。
(2)功能实用。系统提供的功能丰富实用,与测震业务结合紧密,贴近值班工作,为地震速报一线提供了多种辅助工具,如快速查看速报震中精细地图、业务检查和事务提醒功能等,不仅提高了工作效率,也减少了人为疏漏。
(3)建立基础业务数据库。着眼于重庆市测震台网的业务需求和技术发展,建立了可扩展、可二次开发的基础业务数据库,为长久保存和积累重庆市测震业务数据打下了基础。
(4)值班管理信息化。为顺应地震行业现代化发展趋势,本系统致力于重庆市测震台网值班管理的信息化,以通信、网络、数据库技术为基础,将测震业务各要素汇总至数据库,并使用客户端程序实现技术封装和功能实现,为业务人员提高业务能力提供帮助。
3 系统主要功能
3.1 值班日志填写
为方便值班人员填写电子工作日志,系统主界面中放置了1个分页控件来存放每天需要填写的日志表格,包括值班表、台网值班日志、值班运维表、仪器运行完整率表,图5为台网值班日志录入界面。上述表格是台网纸介质日志的抽象,包含了值班工作需要记录的各项信息,针对诸如日期时间、序列等特定数据类型提供时间、下拉框列表等控件,同时增加误输入提示;针对仪器运行完整率等记录较多的表,提供文件导入功能;针对仪器运维表,系统会根据录入的台站代码等关键字段,从数据库中查找相应的台站基础信息补全该条记录,即使录入错误也会在焦点单元格改变后自动修正,并在每张表提交时自动判断记录是否重复,对新记录执行插入操作,对已有记录执行更新操作,提高了录入效率,保证了数据的正确性。
图5 台网值班日志录入界面Fig.5 Interface of seismic network duty log entry
3.2 数据表交互
系统对各业务数据表提供查询、高级筛选、更新与删除、大批量导入导出等功能。数据表均以Gridview表格控件的形式呈现,并根据数据应用设置查询条件按钮,可以根据台站代码、数据起止时间等关键字进行组合查询,查询结果可实现类似Excel的自动筛选、高级筛选和排序功能,还可根据自身需求灵活订制显示表格,选择行列分组、查找面板等布局模式,极大优化了查询的显示效果和数据透视能力,图6为台基背景噪声数据管理页面。
系统的所有数据表均可实现导入、导出功能。导入功能采用NOPI+MysqlBulkLoader模式,主要用于将历史数据迁移到系统数据库中,在没有安装Office程序的情况下,NOPI可对Excel、Word等微软OLE2文档进行高效的读写操作,而MysqlBulkLoader是1种可实现高速大批量向Mysql数据库导入数据的工具,经测试,该模式一次性导入2万条数据的耗时在5s以内。导出功能则直接由Gridview表格控件自带的方法实现,在用户查询、筛选出目标数据后可快速导出为Excel、PDF、CSV等多种格式。高效的导入导出功能优化了数据录入和维护效率,也为数据的快速迁移提供了捷径。
图6 台基背景噪声数据管理页面Fig.6 Interface of seismic station base noise data management
3.3 数据分析
系统提供对业务数据的分析功能,通过对数据库中各业务表的查询筛选,可根据自身需求分析数据,如可查询某时间段内台网或台站的数据连续率,进而得知台网和仪器运行是否稳定、主要发生故障的时间段,并通过仪器运维表具体查询仪器的故障类型,分析其原因,制定维护对策。系统提供仪器运行完整率、仪器运维的图表展示功能,用户可通过图表直观快速地了解台网和仪器的运行概况,图7—9为运行率与故障类型分析图表。
图7 2017年重庆市测震台网运行率统计Fig.7 Statistics of operation ratio for Chongqing seismic network in 2017
图8 2017年11月重庆市长寿地震台运行率统计Fig.8 Statistics of operation ratio for Changshou Seismic station in November 2017
图9 2017年11—12月重庆市测震台网仪器故障类型统计Fig.9 Statistics of instrument fault type for Chongqing seismic network in November and December 2017
3.4 业务检查和提醒
系统采用Timer时间控件实现业务检查和事务提醒功能,在该控件的Tick事件中写入了各项检查任务的具体操作方法,并配有专门的设置页面控制业务检查的时间、频率和检查地址与路径。系统定时自动访问国家台网业务FTP服务器,检查当月台网运行月报、观测报告、标定报告、震源新参数产出等专项工作的报送情况,最后汇总检查结果并通过弹窗提醒,同时将检查结果以短信的形式发送到系统管理员的手机上。利用开发的震情短信发送程序集1李光科,2014.重庆测震台网速报短信平台研制与应用.2014年重庆市地震局科研课题结题报告.实现系统的短信功能,该程序集通过国家12322短信平台接口发送短信,图10为业务检查结果短信。
3.5 行业数据库的二次开发
系统可访问EQIM速报信息共享平台、Jopens系统等业务数据库,具有较好的业务融合能力与扩展性。通过引入百度提供的地图服务应用接口,联合EQIM速报信息高效地访问地图资源,并将查询到的主震及余震序列位置显示在百度地图上。用户在速报完成后即可快速查看震中精确位置、地形、交通、居民点分布状况,为地震应急和灾情研判提供有力支持,图11为2016年12月27日重庆荣昌区M4.8地震及2次较大余震的分布情况。用户还可访问Jopens编目数据库,根据自身需求查询、筛选地震目录,同时提供多种格式的地震目录下载,通过Mapsis、GMT等绘图软件可直接利用下载目录进行绘图和数据分析,为预测预报工作提供了快捷的数据服务。
图10 业务检查短信Fig.10 Working check message
图11 2016年12月27日重庆市荣昌区M 4.8级地震及2次较大余震分布Fig.11 Location of the M 4.8 earthquake and the two large aftershocks at the Rongchang District of Chongqing in December 27, 2016
3.6 语音交互
系统采用Neospeech合成语音库实现语音播报功能,开发前需预装此语音引擎,开发时引用System.Speech程序集,并为语音功能单独编写类和实现的静态方法。语音播报可在用户登录、非法输入、关键事务提醒等重要操作时实现语音交互,不仅增强了人机交互性,同时也带来了良好用户体验。
4 软件应用与推广
重庆市测震台网值班管理信息化系统自2017年正式投入使用以来,运行正常稳定,共计导入历史数据45621条,记录值班日志396条,产出服务产品18期,业务检查56次。系统运行过程中,经过多次收集测试反馈、修复程序漏洞,不断提高系统的实用性和适用性。通过该系统,值班人员可快捷地录入值班信息、高效地记录台网运行数据,管理人员可方便地对业务数据进行查询、分析和处理。与以往纸介质及零散的数据文件模式相比,该系统的查询效率大大提升,以台基背景噪声数据为例,查询某台站1年的数据平均仅需50ms,以台网运行率数据为例,查询重庆台网35个台站1年的运行率数据仅耗时600ms,针对如仪器运维情况等业务信息,本系统的优势体现在可快速筛选出指定类型的目标数据进行分析,快速高效的检索能力是以往系统所不具备的。针对台网运行管理,系统通过事务检查、重要事务提醒等实用工具进一步保证了业务工作质量,每月还可定期自动汇总台网整体运行情况,通过短信通知的形式为台网管理人员开展业务跟踪与效能评估提供支持。
综上所述,该系统的运行提升了值班人员的工作效率,保障了台网整体运行与数据产品质量,为重庆市测震台网值班管理的信息化、网络化、智能化、无纸化提供了平台。其合理性、实用性得到了验证,并得到了值班人员和专家的一致认可,下一步将继续对系统进行优化,增强代码的健壮性和程序功能,以期能够在行业内进行推广。
致谢:系统在研究、开发、试运行阶段,得到了云南省地震局监测中心杨正纲工程师的技术支持和帮助,在此表示衷心的感谢。