文章快速检索    
  地震地磁观测与研究  2021, Vol. 42 Issue (1): 161-167  DOI: 10.3969/j.issn.1003-3246.2021.01.022
0

引用本文  

马秀丹, 陈姝荞, 龙海云, 等. 基于C#语言的国(境)外地震背景信息交互式产出系统[J]. 地震地磁观测与研究, 2021, 42(1): 161-167. DOI: 10.3969/j.issn.1003-3246.2021.01.022.
MA Xiudan, CHEN Shuqiao, LONG Haiyun, et al. The design and implementation of the interactive output system of overseas earthquake background information based on C#[J]. Seismological and Geomagnetic Observation and Research, 2021, 42(1): 161-167. DOI: 10.3969/j.issn.1003-3246.2021.01.022.

作者简介

马秀丹(1993—),女,硕士,工程师,主要从事地震信息公共服务工作。E-mail:maxiudan@seis.ac.cn

文章历史

本文收到日期:2020-02-28
基于C#语言的国(境)外地震背景信息交互式产出系统
马秀丹 , 陈姝荞 , 龙海云 , 张晋辉     
中国北京 100045 中国地震台网中心
摘要:针对国(境)外地震专报产出过程中遇到的信息搜索困难、内容不规范、难以满足时效性等问题,基于C#编程语言,设计开发了国(境)外地震专报背景信息交互式产出系统。该系统只需值班人员少许的参与,自动获取人口信息、海啸信息、震中附近一定范围内的历史地震目录,生成地震的人口伤亡信息,最终产出word格式的地震专报。
关键词地震背景信息    C#编程语言    交互式    历史地震目录    
The design and implementation of the interactive output system of overseas earthquake background information based on C#
MA Xiudan , CHEN Shuqiao , LONG Haiyun , ZHANG Jinhui     
China Earthquake Networks Center, Beijing 100045, China
Abstract: A new interactive output system of overseas earthquake background information was designed. This system is developed by C# language. It solves the problems encountered in the generation of earthquake special reports, such as information source, standardization, and timeliness. With a little personnel participation, the system can automatically obtain the population information, tsunami information, historical earthquake catalogue within a certain range of epicenter and generate the estimation information of casualties in an earthquake. Subsequently, it produces the earthquake special report in word format. The system can quickly produce the first-period earthquake report, which provides support for all units to make response strategies in time.
Key words: earthquake background information    C# programming language    interactive    historical earthquake catalogue    
0 引言

为了及时了解国(境)外地震和火山的破坏性信息,协助相关单位制定对国(境)外地震的应对策略,如及时提供国际援助,进一步发展各国间的友好关系,加强国际合作等,2018年7月中国地震台网中心成立国(境)外地震和火山应急值班小组。该小组的工作职责为对国(境)外陆地大于5.9级、海域大于6.9级地震的破坏性信息及时上报和持续跟踪,规定第1期专报产出时间不超过震后2.0 h。但对于国外地震,地震发生后约0.5 h才能收到正式测定结果,2.0 h之内很难获取地震的破坏性信息和确切的现场信息,因此,在短时间内获取震区人口信息、历史地震信息显得尤为重要。仅通过人工搜索、编辑地震的背景信息来编写专报是一个耗时费力的过程,而且容易产生信息错误。现今,利用计算机技术解放劳动力(杨伯舫,1993)已成为各行业的发展趋势之一,同样,利用计算机技术开发应用软件以提高工作效率也成为地震行业的一大特色,如地震预警系统(赵纪东等,2009高峰等,2014)的研发、地震应急指挥管理信息系统(姜立新等,2003)设计、地震速报系统的使用等。目前,多种计算机语言已应用于地震系统的工作中,如基于Java语言的(梁艳等,2019)、基于Android系统的(常亮等,2019)、基于MATLAB语言的(赵志远等,2019)、基于C#.NET的(刘颖等,2017)等等。其中,C#语言是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言(韦东,2011),这些特点使其得到了广泛的应用,如基于C#.NET的远程智能管理系统(朱涛,2015),基于C#的全球地震速报信息接收系统(陶鑫等,2017),基于C#的三维可视化显示系统(李宇航等,2014),等等。鉴于C#语言的友好性,本文作者通过长期地震专报值班工作的积累,采用C#语言设计开发了交互式国(境)外地震背景信息产出系统。该系统解决了专报生成过程中重复劳动、时效性等方面的问题,降低了工作人员操作的复杂度及错误率。作为交互式产出系统,该系统只需要简单的选择与少许的数字填写就可以导出1次地震的第1期专报,缩短了专报的产出时间,为各单位及时应对提供支持。

1 地震背景信息

地震发生时间的不确定性,增加了编辑地震专报时获取地震信息的难度。短时间内,第1期专报只能给出地震的相关背景信息。这些信息包括地震基本信息、人口信息、海啸信息、灾害评估信息、历史地震信息等。其中,基本信息包括地震发生时间(北京时间和当地时间)、震中位置、震级和震源深度;人口信息为震中附近一定范围内的人口数量;海啸信息是指,如果地震发生在海里或者近海,可能引发海啸的情况;灾情评估信息为地震造成人员伤亡的可能性;历史地震信息为近10年震中周边一定范围内5级以上地震的信息。

2 系统设计与实现

国(境)外地震背景信息交互产出系统是基于C#语言开发的半自动化产出系统,需要少许的人工交互操作帮助产生专报。系统以Visual Studio 2012作为开发工具,基于C#.NET平台开发,可在装有office的windows系统上运行。系统工作流程见图 1

图 1 国(境)外地震背景信息生成流程 Fig.1 Flow chart of overseas Earthquake background information generation

程序启动后系统会自动获取地震的基本信息,然后依次获取地震的人口信息、海啸信息、历史地震信息和伤亡估计信息,最后程序整理获取的地震相关内容,导出到Word中,生成地震背景信息专报。

2.1 地震基本信息的获取

地震基本信息以中国地震台网速报官方网站(http://www.ceic.ac.cn/speedsearch)发布的为基础。系统通过访问web服务器,获取到中国地震台网速报官方网站页面数据,系统内使用HtmlAgilityPack对html数据解析,获取相关的地震信息数据,并将其存储到地震基本信息列表中,部分代码及实现内容如下:

HtmlWeb htmlWeb = new HtmlWeb(); //

HtmlAgilityPack.HtmlDocument doc = htmlWeb.Load(URL); //读取中国地震台网速报官方网站html页面

HtmlNode region_infor = doc.DocumentNode.SelectNodes(".//div[@id='speed-search']")[0];

//获取id='speed-search'属性的第一个div节点,得到网页中包含地震信息的模块

HtmlNodeCollection hrefList = region_infor.SelectNodes(".//tr'); //获取tr节点的集合,得到多个地震信息

List < string> pageHtml = new List < string>(); //新建一个string类型的列表。用于存放地震的经纬度、时间、震级、深度、地点等。

//循环获取地震的基本信息,包括时间、经纬度、震级、深度、地点等存放到pageHtml列表中。

foreach (HtmlNode href in hrefList)

{

  string att = href.InnerText;

  pageHtml.Add(att);

}

获取地震基本信息后,该信息能够在主界面中显示,并且以点击“上一个”“下一个”按钮的形式切换地震及其相关信息。系统界面见图 2

图 2 国(境)外地震背景信息交互产出系统主界面 Fig.2 The main interface of the system
2.2 地震人口信息的获取

本系统采用全球灾害预警与协调系统(GDACS)网站(https://www.gdacs.org/)页面中的人口信息作为地震人口信息,其来源为欧盟委员会联合研究中心(JRC)。由于专报须在地震发生后较短时间内生成,因此在获取地震人口信息过程中,先获取GDACS网站记录的时间最近的5次地震的人口信息。若获取的地震中没有某次地震的信息,则根据震中的经纬度获取美国地质调查局(USGS)网站的人口数据。地震人口信息获取流程见图 3

图 3 人口信息获取流程 Fig.3 Flow chart of population information acquisition
2.3 地震海啸信息的获取

可获取海啸信息的常用网站有美国国家海啸预警中心和我国自然资源部海啸预警中心,国(境)外地震背景信息交互产出系统使用自然资源部海啸预警中心(http://www.nmefc.cn/haixiao/haixiaoxxdetail.aspx?)发布的海啸信息作为地震的海啸预警信息。系统获取到自然资源部海啸预警中心最近发布的20条海啸信息后,通过地震发生时间判断是否为当前地震的海啸预警信息,从而得到该地震目前的海啸信息。自然资源部海啸预警中心一般在地震震级达到6.5级时发布海啸信息,专报中的地震海啸信息是在地震发生后2 h内获取的,因此只获取最近发布的20条海啸信息可以满足需要。获取海啸信息的步骤:①程序读取自然资源部海啸预警中心网站的html源代码;②解析网页源代码获取该网站最近发布的20条海啸信息及其链接;③循环读取每个链接下的地震发生时间,判断是否为当前地震的海啸信息;④若为当前地震的海啸信息,则从该链接下读取自然资源部海啸预警中心发布的海啸信息内容,并提取相关内容应用到专报中,同时退出循环;⑤若链接下不存在该地震对应的海啸信息,则认为自然资源部海啸预警中心对某次地震未发布海啸信息。

2.4 地震人员伤亡信息的获取

使用美国地质调查局(USGS)开发的全球地震快速评估系统(PAGER,https://earthquake.usgs.gov/earthquakes/eventpage/us700098qd/pager)自动产出的评估结果作为某次地震的人员伤亡参考信息。PAGER是USGS开发的一个自动系统,通过把处于每一地震烈度的人口与基于全世界每个国家或地区历史地震中的经济、人员损失模型进行比较来快速评估地震的影响(孙振凯,2013)。通常,在重大地震发生之后30 min内就可以得到PAGER的估算结果。

系统在获取周围人口信息的同时会下载PAGER估计的此次地震可能会造成的人员伤亡概率图,值班人员人工填写图片中的数据,最后点击“确定”按钮,生成专报的人员伤亡信息(图 4)。人员伤亡概率图会随着地震信息内容的积累持续更新,更准确也更接近此次地震的破坏程度,通过点击人口信息页面中的“刷新”按钮获取最新的人员伤亡概率图。值班人员可根据地震的震级、深度、位置、人口信息等对地震的破坏程度有个初步的判断,以便于更有时效性的查询地震的灾情信息。

图 4 地震人员伤亡信息的界面 Fig.4 Interface for inputting casualty information
2.5 历史地震信息的获取

历史地震信息的获取,来源为地震科学专业知识服务系统网站(http://earthquake.ckcest.cn)的地震速报目录库,系统自动检索出近10年陆地距震中100 km、海域距震中200 km范围内5级以上地震信息。涉及到用经纬度计算距离时,采用球面模型,将地球看成1个球体,球面上2点之间的最短距离即大圆弧长度。系统中采用基于球面模型计算地理空间距离的Haversine公式来计算震中距,假设:某次地震的震中为点A(lat1,lon1),历史地震震中为点B(lat2,lon2),其中lat为纬度,lon为经度。2个震中之间距离的计算过程如下。

(1) 采用角度转弧度公式分别将震中的经度和纬度转换成弧度

$ \begin{array}{l} 弧度 = 度数 \cdot \left({{\rm{ \mathit{ π} }}/180} \right)\\ {\rm{lat}}{{\rm{1}}_弧 } = {\rm{lat1}} \cdot \left({{\rm{ \mathit{ π} }}/180} \right)\\ {\rm{lon}}{{\rm{1}}_弧 } = {\rm{lon1}} \cdot \left({{\rm{ \mathit{ π} }}/180} \right)\\ {\rm{lat}}{{\rm{2}}_弧 } = {\rm{lat2}} \cdot \left({{\rm{ \mathit{ π} }}/180} \right)\\ {\rm{lon}}{{\rm{2}}_弧 } = {\rm{lon2}} \cdot \left({{\rm{ \mathit{ π} }}/180} \right) \end{array} $ (1)

(2) 计算震中A和震中B经纬度差值的绝对值

$ \begin{array}{l} {\rm{lo}}{{\rm{n}}_弧 } = \left| {{\rm{lon}}{{\rm{l}}_弧 } - {\rm{lon}}{{\rm{2}}_弧 }} \right|\\ {\rm{la}}{{\rm{t}}_弧 } = \left| {{\rm{lat}}{{\rm{l}}_弧 } - {\rm{lat}}{{\rm{2}}_弧 }} \right| \end{array} $ (2)

(3) 采用Haversine公式计算∠AOB的弧度数,O为地球的球心。

$ \begin{array}{l} \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{\rm{haver}}\;{\rm{sin}}\theta {\rm{ = si}}{{\rm{n}}^2}\left({\theta /2} \right) = \left({1 - \cos \theta } \right)/2\\ \angle {\rm{AO}}{{\rm{B}}_弧 } = 2 \times {\rm{arcsin}}\sqrt {{\rm{haver}}\;{\rm{sin}}\left({{\rm{la}}{{\rm{t}}_差 }} \right) + \cos \left({{\rm{lat}}{{\rm{1}}_弧 }} \right) \times \cos \left({{\rm{lat}}{{\rm{2}}_弧 }} \right) \times {\rm{haver}}\;{\rm{sin}}\left({{\rm{lo}}{{\rm{n}}_差 }} \right)} \end{array} $ (3)

(4) 根据弧长的计算公式,代入地球半径计算2点之间在球面的距离

$ \begin{array}{l} 弧长 = 圆心角弧度数 \times 半径 \\ 震中距 = \angle {\rm{AO}}{{\rm{B}}_弧 } \times R \end{array} $ (4)

R为地球半径,这里取平均值6 371 km。

(5) 通过统计一定范围内地震的震级,计算出每个震级范围内的历史地震数量以及时间最近、空间最近和震级最大的历史地震信息。

3 效果展示

系统主界面如图 2所示。系统启动后会自动获取最新地震的基本信息,然后值班人员人工选择要生成专报的地震、编辑人员、审核人员以及导出路径。点击“人口信息”页面会自动获取全球灾害预警与协调系统(GDACS)网站页面中的最近5次地震的人口信息。点击“海啸信息”页面会获取自然资源部海啸预警中心页面的海啸预警信息。最后系统根据选择的地震信息,匹配对应地震的人口信息和海啸信息,导入Word模板。

在系统的调试目录下,创建了一个Word模板。在将地震背景信息导入模板过程中,系统首先通过复制模板创建1个新文档,然后把获取到的地震相关消息插入到文档中,最后生成专报。图 5为生成的专报样例,展示了2020年2月24日伊朗西北部发生的5.9级地震的信息。

图 5 地震专报样例 Fig.5 Example of an earthquake special report
4 结束语

国(境)外地震背景信息交互产出系统已投入使用,借助Internet能够流畅获取地震相关信息,生成背景信息专报。在各种信息源齐全的情况下,第1期专报的产出时间不超过1 min,系统减轻了工作负担,提高了工作效率。本文主要介绍了第1期专报的产出过程,在收集地震后续相关信息时,系统会对几个常用信息源自动进行监测,如GDACS、央视网和中新网等。最新地震信息的自动监测,降低了获取地震信息工作的难度,进一步提高了信息的时效性。

参考文献
常亮, 郭垚嘉, 张幸兴, 等. 基于Android系统的测震台网日志管理平台设计[J]. 地震地磁观测与研究, 2019, 40(4): 160-166. DOI:10.3969/j.issn.1003-3246.2019.04.024
高峰, 杨学山, 马树林. 地震预警系统综述[J]. 自然灾害学报, 2014, 23(5): 62-69.
姜立新, 帅向华, 张建福, 等. 地震应急指挥管理信息系统的探讨[J]. 地震, 2003, 23(2): 115-120.
李宇航, 张军华, 龚辛侬, 等. 基于C#的三维可视化显示系统编程及实现[C]//2014年中国地球科学联合学术年会——专题19: 地震波传播与成像论文集. 北京: 中国地球物理学会, 中国地质学会, 2014.
梁艳, 高云峰. 基于Java的地震应急流动测震及强震动自动化产出系统[J]. 地震地磁观测与研究, 2019, 40(4): 146-154. DOI:10.3969/j.issn.1003-3246.2019.04.022
刘颖, 庹先国, 刘勇. 基于C#.NET的地震数据采集终端软件设计和实现[J]. 自动化仪表, 2017, 38(10): 74-77.
孙振凯. PAGER——地震影响的快速评估(USGS情况说明书第2010—3036号)[J]. 国际地震动态, 2013, 11061106(1): 4-7.
陶鑫, 肖健, 李雨泽, 等. 基于C#的全球地震速报信息接收系统的设计与实现[J]. 科技展望, 2017, 27(2): 25.
杨伯舫. 解放生产力的关键是解放劳动力[J]. 现代哲学, 1993, 11061106(2): 6-10.
赵纪东, 张志强. 地震预警系统的发展、应用及启示[J]. 地质通报, 2009, 28(4): 456-462.
赵志远, 宋昭, 张波, 等. 基于Matlab的一维电测深正反演可视化软件设计[J]. 地震地磁观测与研究, 2019, 40(4): 155-159.
朱涛. 基于C#. NET的远程智能管理系统设计与实现[D]. 北京: 北京邮电大学, 2015.