地震速报信息软件产品开发技术介绍*

2022-09-29 02:27奚冲霄辛雪侠李春连
地震科学进展 2022年9期
关键词:速报服务器数据库

奚冲霄 高 翔 辛雪侠 李春连

(北京市地震局,北京 100080)

引言

由于互联网技术的快速发展,新媒体技术不断更新,地震速报信息服务随着互联网时代迈入大数据时代而逐渐进入了公众的视野。地震速报是地震台网的核心功能。快速有效地发布地震速报信息对于提升地震政府部门公共服务职能,减轻地震灾害损失具有重要意义[1]。先前的地震信息获取和发布模式已不能满足人们迅速、便利地发布和获取地震信息的需求。而互联网技术与计算机技术的飞速发展和普及,使地震信息自动化成为可能。各省地震局相继搭建了各种地震信息管理平台,各类地震信息管理和发布系统主要基于JOPENS 数据处理系统和全国地震信息共享EQIM 系统开发的产品,主要内容包括地震信息软件产品介绍、地震信息软件开发技术介绍。本文对这些软件及产品进行调查研究,随着智能手机和5G 网络的普及,政府和公众对地震速报信息内容不再局限于地震三要素。根据地震速报信息快速准确的特点,发展不同方式的信息报送形式。凭借技术的进步使信息服务平台也呈现多元化发展趋势,开发者也可以根据自身需求选择不同的计算机技术,利用系统数据进行二次开发;实现地震速报信息同步发布,地震速报及相关信息自动生成,及时地将信息传递到目标群体中,体现地震速报信息价值及社会服务能力。

1 地震信息软件产品介绍

当前地震速报主要分为两类:①根据全国速报管理规定,通过EQIM 上报中国地震台网中心(简称EQIM 速报);② 根据各省地震局速报管理规定,对当地有影响的地震速报(简称省内速报)。

全国地震速报管理规定,8 分钟内完成EQIM 上报,各省地震局要为省政府提供相应的地震速报信息。这些信息要在震后规定时间内完成,遇到震级相对较大的地震还要进行余震跟踪和完成各种相应的报告。各台网为了地震速报信息的快速产出都进行了软件开发,通过调研发现主要分为3 类。

1.1 基于JOPENS 系统开发的产品

广东省地震局开发的JOPENS 数字化地震观测系统,能够完成测震项目所承担的地震速报、地震编目和数据服务功能。数据格式、数据产出统一、规范。整个系统基于数据库管理,引入IT 技术J2EE,特别是对消息机制、持久存储、EJB 进行开发。中国省级测震台网中心和各台站利用该系统开展日常数据分析和存储工作。

JOPENS 是一个数据集成的框架,该框架的核心是由Java 的SSH 三层架构及JBOSS 等多个模块框架组成。持久层Hibernate 以MySQL 数据库为基础。该框架主要用于获取地震台站的数字信息并利用核心算法进行数据处理。在该集成框架的基础上开发出的相关软件产品的功能有:

(1)基于实时数据流服务(SSS)的软件产品有《中国地震台网的实时数据传输与服务系统》[2]。它可以实现全国各级地震台网地震观测数据的实时网络传输与共享,为地震预警和地震自动速报提供可靠数据,还可以实现中国地震台网观测数据与国际地震观测机构的数据实时共享。

(2)基于人机交互快速处理与速报(MSDP)的软件产品有《基于JOPENS 系统的地震速报模拟演练平台》[3]。它可以使MSDP 人机交互软件对数据库中的数据能够显示,并具有对地震事件进行分析处理、速报的功能。

(3)基于系统应用服务器(JBOSS)的软件产品有《地震速报信息聚合与发布系统》[4]。它可以实时接收JOPENS 系统产出的各类地震速报信息,还能把同一次地震事件的信息聚合在一起,最后按照不同用户组群进行发布。《广东省地区JOPENS 地震速报系统》除了调用JBOSS 的消息服务器接口外,还可以调用数据访问接口,均可获取地震速报信息。

(4)基于数据库服务(DB)的软件产品有《新疆地震台网测震资费管理信息系统》[5]。它使用ODBC 连接方式连接JOPENS 系统的MySQL 数据库,利用SQL语句查询人机交互后存储到数据库中的定位数据,从而提供地震目录数据服务。

通过研究发现,根据JOPENS 系统中MSDP 模块、JBOSS 模块、数据库服务DB 这三大模块提供的数据支持和接口可以快速获取省内地震速报数据。首先,人工用MSDP 软件根据地震波形处理地震速报事件并提交到数据库中;然后,对数据库里的信息进行解析,可以得到地震速报和震相数据;最后,将这些数据用于地震速报信息报告的生成和信息转发。

1.2 基于EQIM 系统开发的产品

EQIM 体系结构由国家台网根服务器和省级台网子节点服务器构成。服务器之间通过网络互连,每个子节点服务器既可以与根服务器互连,也可以与二级、三级节点服务器互连。

EQIM 软件系统由服务器和客户端软件包组成。服务器系统包括数据库、数据传输服务程序和Web网站;客户端软件包包括EQIM Process 接收处理软件,EQIM Sender 速报信息发布软件,EQIM SMS 短信发送软件。EQIM 数据库安装的MySQL 数据库,主要用于实现数据存储、数据库查询管理。

由于EQIM 数据库和数据传输服务基础上的软件产品的特点,主要集中在满足公众对外发布的地震信息需求方面,地震速报信息发布产品主要有:

(1)新疆地震信息网地震速报信息自动发布,主要实现在地震信息网上发布地震速报信息,地震速报信息的自动监控通过定时扫描EQIM 本地数据库gshare_catalog 数据库表,获取最新的地震速报数据[6]。

(2)陕西地震信息网地震速报信息对外快速发布,实现地震速报信息的网站快速发布,速报数据能同步是因为编写了一个存储过程,定时执行,实时读取数据库中的速报数据[7]。

(3)12322 地震速报短信服务系统,主要是实现地震速报的短信发送,速报短信的信息源为EQIM 系统,速报参数同步是指通过把MySQL 数据库中catalog 数据表同步至12322 信息基础库中[8]。

除了上述产品外,基于EQIM 系统建立的各种信息发布系统还有很多。例如,四川省防震减灾网速报信息快速发布系统、山东省地震速报信息快速提取和Web 信息发布系统、无锡市地震速报信息智能发布系统等[9]。这些系统大部分都是采用自动读取地震速报数据库的方式,解决了自动数据源实时同步的问题,并且这些产品已经运行了较长时间,取得了很好的效果。

对于满足地震速报管理规定震级的地震,从EQIM 系统中直接扫描其数据库相应的catalog 表,可以为各种发布系统提供数据源,然后生成相应的上报信息。而对于省内不够速报震级的地震,该系统不进行数据交换,地震速报的测定结果以人机交互处理系统测定的结果为准。针对上报和对外数据服务能力不足的情况,各省局需要自行研发相应的软件,解决人工填报信息容易出错的问题,提高信息的准确度和上报的时效性。

1.3 地震信息服务辅助产品

地震系统不但开发有地震速报数据管理、信息发布相关产品,还有一些提高公众服务的地震辅助产品。地震辅助产品主要有两类:①与应急服务有关;② 与地震数据服务有关。具体有:

(1)应急避难场所查询系统。该系统建立了地图可视化服务系统,采用百度地图API 接口二次编程,实现应急避难场所的分布、名称、地址、功能分布和公交查询[10]。

(2)测震台网电子地图服务系统。它构建了台站基础信息管理和台站电子地图服务,采用百度地图API 实现台站信息的图像化管理,显示直观,易于管理[11]。

除上述产品外,地震系统还提供地震数据服务产品。中国地震台网中心地震数据管理与服务系统[12]提供地震数据查询、在线绘图等,支持地震数据查询结果的文本下载。各省地震局防震减灾网也有专栏提供地震数据服务,主要是地震目录的查询和下载,同时还提供地震目录的各种地图显示。台网中心的地震数据管理提供的是全国地震数据,数据种类众多,数据格式固定,非专业人员对这些数据的认识不高,无法获取想要的数据信息;而其他产品大多都提供单一的服务,如仅支持速报数据显示,仅支持地震目录查询或者目录显示,不支持查询结果的数据分析显示。

2 地震信息软件开发技术

2.1 开发模式分析

软件开发主要有B/S(Browser/Server,浏览器/服务器)或C/S(Client/Server,客户端/服务器)这两大开发模式。C/S 模式是一种两层结构系统,计算机系统在客户端上安装客户端应用程序,在服务器上安装服务器应用程序。工作过程中,客户端程序请求,服务器程序接收并处理客户端程序请求,并返回结果,从而完成一个业务逻辑的功能应用。B/S 模式结构是由传统的两层C/S 结构演变而来的一种新的三层体系结构。B/S 结构客户端业务处理界面是通过浏览器实现的。在TCP/IP 协议支撑下,B/S 结构以HTTP 作为传输协议,用户通过Internet 网页访问Server 端应用(Web)服务器,利用应用服务器和后台数据库系统来支撑应用服务的后台数据库系统。

调研发现,信息软件产品有28 个,36%选择了C/S 模式,64%选择了B/S 模式。下面简要分析B/S模式和C/S 模式的优缺点,讨论如何确定地震信息系统需选择哪种模式进行软件开发。

(1)C/S 结构的人机交互能力强。C/S 结构的客户端应用程序具有很强的人机交互能力,可以实现自动报警、子模块互相切换等很强的功能。客户端程序界面美观,操作简单,可以满足地震系统人员计算机水平不高的需求。B/S 结构的系统使用脚本语言可以实现一些人机交互工作,但不能充分利用客户端硬件和软件环境资源优势,反而增加了系统的通讯开销。

(2)C/S 结构的数据访问更安全。地震速报信息依托中国数字地震观测网络,通过地震信息网络,本系统工作范围仅限于地震特殊网络或地震局域网,客户端和服务器是相对封闭的点对点架构,在地震网络数据传输中,使用安全性相对较高的NetSeis/IP 网络协议能保证系统的稳定性。C/S 结构适用于开发地震速报信息转发相关的产品。B/S 结构系统简化了客户端的安装,但是对服务器安全性有了更高的要求。由于服务器和客户端的关系是一对多,使用TCP/IP 协议,就得考虑硬件和软件防护墙的问题,增加了系统的开发成本,系统安全无法保证[13-14]。

(3)C/S 结构减轻了服务器端负担。数据由客户端与服务器直接连接获得,数据传输更快;没有B/S 结构中的Web 服务器,传输过程中少了Web 服务器和数据与数据库服务器的传输,只需要一个网络通道,因此,减轻了服务器的负担。

软件开发人员可以根据需求选择合适的开发模式,同时要考虑地震数据访问的网络安全。如选择B/S 模式开发,还要考虑部署防火墙或者增加独立的服务器。

2.2 开发工具及语言

JOPENS 系统是使用Java 语言开发的,所以部分开发人员仍采用Java 语言开发相关产品,但在短时间内掌握Java 开发语言并不容易。地震系统开发其他相关产品使用的语言有多种,如C/C++语言、Delphi7.0 语言、VC++、Python、Delphi、C#等。开发工具有Microsoft Visual C++6.0、Microsoft Visual Basic、PyQt、Microsoft Visual Studio 等。开发人员只有充分了解软件开发语言、开发工具的特性及编程风格,才能有助于其选择工具以及保证软件产品的开发质量。从开发环境、开发周期、开发成本、开发人员技术水平综合考虑,可以选择简单易学、成本低、开发周期短的C#语言和Python 语言进行客户端的开发。

C#语言的特点是语法简单、面向对象、安全稳定、与Web 紧密结合、兼容性强,通过与.NET 框架结合进行软件系统开发。开发人员学习并使用C#语言提供的面向对象、组件开发、内存自动化管理、跨平台开发以及代码版本控制技术等,编写控制台应用程序、Web 应用程序和WCF 服务等,可以缩短软件开发周期,提高开发效率。

Microsoft Visual Studio 是微软公司推出的支持Windows 平台应用程序开发的系统集成开发环境(IDE)。它具有数据库、可视化、语言集成等功能。可以利用功能齐全的代码编辑器、项目模板、设计器、代码向导、调试器、实现对C#的支持。同时还能实现对C、C++、CLI、VB.NET、C#和F#多种编程语言的支持,可以通过安装其他语言服务,支持包括Python 在内的更多其他语言。

Python 是跨平台的计算机程序设计语言。它是结合了解释性、编译性、互动性和面向对象的一种脚本语言[15]。由于Python 有极其简单的说明文档,所以极其容易上手。Python 库资源丰富,Python 标准库很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk 和其他与系统有关的操作[16]。其中可以利用Pandas 库、Matplotlib库、Basemap 库等进行绘图和数据可视化[17],对于开发地震信息相关产品有帮助。

Python 开发环境安装后,Python 自带的编辑器IDLE 是开发Python 程序的基本集成开发环境。但是,当编辑比较庞大的工程时,就需要专业的开发工具,可以利用集成开发环境的应用程序(Integrated Development Environment,IDE)进行开发。下面简单介绍3 款编辑器供开发人员参考。

(1)PyCharm 是一种Python IDE,带有一整套可以帮助用户在使用Python 语言开发时提高效率的工具,比如调试、语法高亮、Project 管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE 还提供了一些高级功能,用于支持Django 框架下的专业Web 开发。PyCharm 在编写和调试Python方面使用简单,功能强大,值得推荐[18]。

(2)Eclipse 是基于Java 的可扩展开发平台,是开放源代码,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java 开发工具(Java Development Kit,JDK)。Eclipse 并不限于编写Java,也可以编写C、Python等程序,而且Eclipse 在编写Python 时很舒服[19]。

(3)Notepad++是一套自由软件的纯文本编辑器。该软件以GPL 发布,有完整的中文化接口及支持多国语言撰写的功能(采用万国码UTF-8 技术)。它的功能比Windows 中的记事本(Notepad)强大,除了可以用来制作一般的纯文字的帮助文档,也十分适合用来撰写电脑程序的编辑器。

2.3 数据库介绍

由于JOPENS 系统和EQIM 系统使用的都是MySQL 数据库,地震系统相关产品开发也选用该数据库。使用此数据库可以满足系统的兼容性和数据库易使用易开发的需求。MySQL 与SQL Server、Oracle相比,有如下几个特点更符合地震信息服务系统开发需求[20]。

(1)系统适应性、可移植性强。MySQL 数据库既可以适用于Windows 系统,也可以适用于Linux 操作系统,还为不同的编程语言提供了不同的接口。MySQL 还支持多种免费的数据库图形化管理工具,例如,Navicat、Workbench、Sequel Pro 等,通过使用数据库管理工具,使得系统建立、查询和维护数据库更加容易。

(2)开源性强,易找技术支持。MySQL 数据库的源代码是开放的,任何人都可以下载通用公共许可证,并根据其个性化需要进行修改。阅读源代码并进行分析可以帮助理解某个原理或算法。通过网络查询可以获得大量的MySQL 技术文档,许多技术问题都能得到解决,可为系统的数据库建立找到许多技术支持。

(3)免费使用,系统开发成本低。由于其可免费下载使用,体积小,速度快,总体拥有成本低。因而许多中小型网站,为了降低成本选择MySQL 作为网站数据库。MySQL 和其他大型数据库如Oracle,DB2,SQL Server 等相比,它自身虽然规模小,功能有限,但是对于开发地震信息服务系统来说,MySQL 提供的系统适应性、开源、免费完全可以支持系统开发。

2.4 电子地图技术

国内地震系统相关产品用到的电子地图技术有谷歌地图、百度地图、天地图和MapABC 地图等地图服务商提供的API,可丰富地震速报信息内容,具体可参见其 API 参考手册。

百度地图自2010 年免费对外开放该应用接口后,使开发者降低了系统底层技术服务的开发成本,为更多的网络地图服务应用提供了系统保证。百度地图服务的应用程序接口(Application Programming Interface)称为百度地图API,这些应用程序接口是由JavaScript 语言编写的,系统使用JavaScript 语言把百度地图服务加载到自己的系统平台中,在自己的系统上实现网络地理信息系统服务,如地图展现、定位和搜索等功能[21]。

由于百度地图的这些特点,地震相关产品的开发也越来越多的使用百度API 接口进行二次开发。百度地图针对Web 地图应用提供了JavaScript API和Flash API,为手机地图应用提供了Android SDK和IOS SDK,为服务端地图应用提供了静态图API和Web 服务API[22]。

国家地理信息公共服务平台“天地图”(以下简称天地图)是国家基础地理信息中心建设的网络化地理信息共享与服务门户,向各类用户提供权威、标准、统一的在线地理信息综合服务。天地图的开发资源包括地图服务、网页服务、Web 服务、数据服务,为开发者提供应用程序开发接口和在线服务资源,可满足各类基于地理信息的应用开发需求。

天地图地图接口服务支持HTTP 和HTTPS 协议,地图服务采用OGC WMTS 标准,地图提供5 种地图服务,即矢量底图、影像底图、地形晕渲、地名标注、全球境界。网页服务应用程序接口是JavaScript API 4.0,支持主流的HTML4.0 和HTML5.0 特性的地图开发[23]。开发者利用接口程序快速调用天地图在线地理信息服务通道,包括快速创建地图、调用地图、地名搜索以及在地图上添加覆盖物等。以HTML 5.0 的形式提供地图展示、标注、定位等各种地图服务和数据。基于浏览器构建了功能丰富、交互性强的地图应用且支持PC 端和移动端的开发。开发者通过使用天地图Web 服务API 提供的HTTP/HTTPS 接口,使用各类型的地理信息数据服务,可以基于此开发跨平台的地理信息应用,包括地图服务、地名搜索、驾车规划、地理编码查询、静态地图API 等。天地图数据API 提供的道路要素、水系要素、居民地要素服务可以增加产品的交互性。

2.5 范例分析

对于想在地震系统现有技术系统基础上开发相关辅助软件人员来说,软件开发是一套完整的闭环式流程,并且每一个步骤是环环相扣。那么该如何认知软件开发流程步骤?以《非天然地震事件信息专报自动处理系统》为例,介绍地震信息软件开发技术及流程。

2.5.1 需求分析

本阶段任务是根据业务需求确定软件要解决的问题,采用数据流程图的方法,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书、数据库或数据结构设计说明书、组装测试计划。依据中震测函[2021]18 号文件,北京地区地震信息报送标准为1.5 级及以上。图1为非天然地震事件信息专报自动处理软件流程。

图1 非天然地震事件信息专报自动处理软件流程图Fig.1 Flow chart of automatic processing software of nonnatural earthquake report

2.5.2 系统设计

软件设计可以分为概要设计和详细设计两个阶段。概要设计就是结构设计,其主要目标就是给出软件的模块结构,使用结构化程序设计方法,用软件结构图表示(图2)。详细设计首先要设计模块的程序流程、算法和数据结构,其次要设计数据库。

图2 系统功能结构图Fig.2 System function structure chart

2.5.3 编码实现

开发人员在充分了解软件开发语言、工具特性后。针对非天然地震事件信息专报自动处理软件选择了C/S 开发模式,使用PyCharm 开发工具,利用Python 语言和MySQL 数据库技术实现代码开发。

2.5.4 安装与测试

非天然地震事件信息专报自动处理软件属于绿色软件,直接拷贝到电脑即可。在上报文件电脑中安装配置FTP 服务器端,在本地电脑安装FTP 客户端。

由软件测试理论可知,系统测试分为黑盒测试和白盒测试。黑盒测试可称为功能测试,其作用是检查模块功能是否满足系统的设计需求,发现是否有不正确或者遗漏的功能、是否满足性能要求、是否执行正确、界面是否友好等,通常使用测试用例方式进行测试。非天然地震事件信息专报自动处理软件开发时,测试工作与开发工作并行,通过系统测试发现软件缺陷并及时修正系统错误,还能验证系统各部分模块功能是否能正常运行,满足用户工作成果的测试目的。

2.5.5 运行与维护

维护是指在已完成对软件的研制工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以扩展并提高其性能。

本软件开发实例流程与经验,对开发人员设计一套较为全面、通用、适应时代需求的震情信息服务平台具有良好的通用性。

3 结论

本文通过调查研究了各省地震局基于JOPENS系统和EQIM 系统开发的地震速报信息软件产品及地震辅助产品,发现各省地震局地震速报信息软件产品开发的数据源是基于JOPENS 系统和EQIM 系统数据库。并对地震速报信息软件产品开发技术进行详细介绍,分别对开发模式、开发语言及数据库、电子地图技术等进行分析,得到各开发技术在开发地震信息产品中的优势和不足。最后通过实例介绍软件开发流程,为开发者实现地震速报及相关信息快速发布、软件快速开发,选择适合自身需求的二次开发方案,提高软件开发的效率具有一定的参考价值。

猜你喜欢
速报服务器数据库
服务器组功能的使用
理解Horizon 连接服务器、安全服务器的配置
PowerTCP Server Tool
数据库
计算机网络安全服务器入侵与防御
数据库
数据库
数据库