基金项目:中国地震台网中心青年科技基金(QNJJ-202306); 中国地震局震情跟踪定向任务(2024010117); 中国地震局“震后趋势研判创新团队”.
第一作者简介:马亚伟(1990-),工程师,主要从事地震活动性研究.E-mail:yawei_m@seis.ac.cn.
(中国地震台网中心,北京 100045)
(China Earthquake Networks Center,Beijing 100045,China)
web crawler; global earthquakes with M≥7.0; earthquake emergency response; post-earthquake analysis and forecast
DOI: 10.20015/j.cnki.ISSN1000-0666.2025.0047
快速研判地震序列类型并给出震后趋势分析意见,是全球7级以上大震地震应急响应的一项重要工作,对于服务社会公众和政府决策具有重要的意义(Gulia,Wiemer,2019)。在信息技术蓬勃发展的新时代,快速信息服务对震后趋势研判提出了更高的要求。传统地震会商方式存在的人员不足、数据资料片段式分散等客观因素已严重制约着震后趋势研判的效率和社会服务的时效性。
震后趋势会商是短临预报业务的重要环节,针对性地研发震后趋势快速辅助决策系统对于有效提升业务能力,准确服务社会和政府决策具有重要的意义。在这种背景下,我国地震预报工作者从多个方面开发了相关震后趋势会商系统,如武安绪等(1999)推出的地震现场震情分析软件系统包含了地震目录管理、序列类型判断与震后趋势估计等内容,使应急会商类系统开始在地震应急工作中发挥作用; 庄昆元等(2001)将神经网络与模糊系统相结合,主要对余震强度和时间进行判断; 黄静(2005)研发了基于网络技术的虚拟地震会商系统,很大程度上提高了地震会商的时效性; 陈石等(2011)设计并实现了三维立体可视化会商系统平台,解决了地震会商过程中的多源、海量地学数据的协同可视化问题。
根据实际工作需求,不同研究人员研发了各类具有区域性特点的应急会商系统,如蒋海昆等组织研发的华东南地区震后趋势判定软件(董曼,2008),是第一款相对比较全面的地震应急系统,实现了在地震类型分区的基础上,一键产出震中区域的构造背景、历史地震活动空间分布和区域特征等资料,极大提升了震后趋势研判的效率(刘珠妹等,2019); 平建军等(2013)研发了华北震后快速响应预案及计算机查询系统,并被统一集成到MapSIS地震分析预报软件中(刘坚等,2018); 赵颖(2013)建成了包含丹东地区各类资料的震后趋势快速判定计算机系统平台,该平台可以在震后5分钟内给出震后趋势判定意见; 张华等(2014)基于ArcGIS地理信息平台开发了广西震后趋势快速研判系统,实现了自动生成会商纪要、应急指挥图件和震情汇报材料的功能。
地震应急管理体制的逐步建立和完善,对震后趋势研判产出结果的时效性和信息的完善性提出了更高的要求。在华东南地区震后趋势判定软件基础上,刘珠妹等(2019)研发了震情自动触发的震后趋势早期判定技术系统(CAAFs),该系统会在显著地震发生后自动触发并生成包含构造背景信息、历史地震活动、震源机制解、序列类型统计、震后趋势研判意见等内容的产品,并向多个平台进行推送。CAAFs系统主要聚焦于我国大陆及周边区域显著地震的震后趋势研究,能够满足我国大陆地区震后趋势研判意见的快速产出需求。国际上关于震后趋势研判产出系统也有部分研究,其中比较著名的是美国国家现代地震监测系统(Advanced National Seismic System,ANSS),该系统在震后第一时间可以产出震中附近的区域信息、ShakeMap信息以及震源机制解等。在经过多次完善改进后,目前可以做到在震后30分钟产出第一次人工参与的余震概率预测,之后随地震序列的不断发育更新预测结果(Page et al,2016; 刘珠妹等,2019)。
上述软件从不同的服务角度出发,为我国及至全球显著地震的震后趋势分析提供了有力保障,但由于现有数据库缺乏全球地震目录、大震震源机制以及全球重点构造的相关信息,极大制约了全球大震的应急响应效率。因此,亟需在现有软件系统框架基础上,从丰富数据库、提高服务方式以及产品产出等方面进一步延拓相关辅助决策软件系统。本文利用Python语言研发出一套全球7级大震趋势研判系统,该系统可完成地震目录的自动下载与更新,震源机制解的自动下载及绘图,震中附近历史地震的统计,并可产出历史地震与大陆地震在统计意义上的关系以及相关应急产品,并被多次应用于全球7级以上地震应急工作中。
全球7级大震趋势研判系统主要分为4个部分:数据获取、数据分析、图件绘制以及产品制作(图1),该系统主要解决了以下几个问题:一是如何从中国地震台网中心(CENC)网https://news.ceic.ac.cn/.获取本次地震信息并更新地震目录; 二是如何将CENC给出的地震信息与美国地质调查局(USGS) https://earthquake.sugs.gov/earthquakes/search/.给出的地震信息进行匹配; 三是如何利用Python爬虫技术获取本次地震的震源机制解并进行绘图; 四是如何统计震中附近地区历史地震,并计算这些地震与中国大陆大震的对应关系; 五是如何自动产出应急PPT。
网络爬虫就是通过编写程序模拟浏览器上网,按要求在网上抓取数据的程序(于学斗,柏晓钰,2022),其优势在于可以按照设定的规则自动获取互联网上的信息。爬虫技术作为高效准确获取数据的重要方式之一,目前已被应用于多个领域(余豪士,匡芳君,2018; 邓世广等,2019; 孙握瑜,2022)。
利用Python爬虫技术获取数据通常涉及以下几个步骤:发送请求、获取响应内容、解析内容和保存数据。发送请求是指通过超文本传输协议向目标网站发送请求,包含了网页统一资源定位符、标头以及要向服务器提交的数据; 获取响应内容是指在目标网站的服务器收到请求后做出相应的处理,然后将处理结果返回给请求者的过程; 解析内容是指在获得服务器返回的内容后,根据返回的数据格式和目标,选择相应的技术方法进行处理,并将其转换为所需内容和格式的过程; 保存数据是指根据后续分析和使用数据的需求,将解析的数据保存为相应格式的过程。本文使用Python爬虫技术主要用于获取地震目录以及震源机制解数据。
图1 全球7级大震趋势研判系统框架设计
Fig.1 Framework of the post-earthquake trend decision system for Global M 7 earthquakes
下载地震目录有2种常用方式:一是在网站首页直接进行查询,但是首页显示的地震个数有一定限制,因此无法确保获取的地震与本地地震目录的衔接性; 二是在历史查询界面进行查询,但是该界面地震更新稍有延迟,无法第一时间获取最新地震信息。如果要在地震目录更新阶段既保证地震目录的完整性,又保证本次地震能被及时获取,则必须将7级以上地震目录更新分为两步:
第一步是获取本地目录中最后一次地震至今的所有地震。将第一步规整为一个自定义函数get_webinfo(cata_info,page),该函数涉及2个传入参数cata_info和page,其中cata_info包含了地震目录下载的起始时间和结束时间、起始震级和结束震级等信息; page则为搜索结果的页码,通过循环页码可以获取所有地震,由此可以保证地震目录的完整性。该函数具体如下:
def get_webinfo(cata_info,page):
url='http://www.ceic.ac.cn/ajax/search?page=%s&&start=%s&&end=%s&&jingdu1=&&jing du2=&&weidu1=&&weidu2=&&height1=&&height2=&&zhenji1=%s&&zhenji2=%s'%(str(page),cata_info[“starttime”],cata_info[“endtime”],cata_info[“minmag”],cata_info[“maxmag”])
headers={'User-Agent':'Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54'}
response=get(url,headers=headers)
encoding=detect(response.content)['encoding']
html=response.content.decode(encoding)
if response.status_code==200:
html=html[1:-1]
html=loads(html)
return html
第二步为从CENC网站首页直接获取最新地震信息, 采用如下代码:
url='http://news.ceic.ac.cn/index.html'
web_data=get(url,verify=False)
web_data.encoding=web_data.apparent_encoding
web_data=web_data.text
soup=BeautifulSoup(web_data,'html.parser')
利用Python爬虫技术获取震源机制解的方式与地震目录的爬取方式类似。以从USGS网站爬取震源机制解为例,由于不同机构对同一地震的测定结果存在差异,因此在下载震源机制解时需要先进行地震匹配,确定是同一地震后再进行震源机制解的爬取。以2023年全球7级以上地震为例(表1),由于USGS一般采用MW或者Mb震级标度,而CENC一般采用MS震级标度,因此,在利用Python爬虫技术对地震进行匹配的过程中,未采用震级对地震进行匹配。
中国地震局“十五”重大工程项目——“中国数字地震观测网络”验收完成后,从2009年开始实现了国家地震台网和区域地震台网的统一编目,产出统一的中国地震台网地震目录。本文对2010—2023年CENC测定的236次7级以上地震进行统计,发现CENC与USGS对同一地震测定的发震时间和发震地点存在一定的测量误差(图2)。从图2可以看出,发震时间测量误差均在10 s以内,而发震地点测量误差主要在0.5°以内,仅有1次地震的发震地点测量误差超过1°。此时还存在一个问题,若某一大地震后20 s内再次发生7级以上余震,则根据上述规则匹配后会出现匹配结果混乱的情况。因此,对1900—2023年7级以上地震的时间差和空间进行统计,发现实际地震目录中并未记录到上述情况,表明该现象在实际情况中极少出现。因此,本系统在匹配地震的过程中暂且采用“时间差小于10 s且定位误差小于2°即可确定为同一地震”的规则。
表1 不同机构测定2023年全球7级以上地震震级对比
Tab.1 The magnitude of M≥7 earthquakes around the globe in 2023 from CENC and USGS
确定地震匹配规则以后,首先利用Python爬虫技术获取USGS测定的半年内所有6.5级以上地震,然后与CENC测定的相应地震进行匹配,匹配成功后保存本次地震信息在USGS上的专属ID,生成震源机制解下载的url,利用如下代码即可获取相应地震的震源机制解数据:
url='https://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/'+earthquake_id+'.geojson'
msg=get(url)
aim_evt=loads(msg.text)
moment_tensor=aim_evt[“properties”][“products”][“moment-tensor”][0][“properties”]
关于地震所在的构造区域的绘制可分为2部分:第一部分是通过绘制震中附近地区4.5级以上地震及其震源深度的方式来展示区域大致构造信息; 第二部分主要通过USGS给出的震中位置绘制区域构造图件。第一部分对绘制区域做了固定,默认以主震为中心,经度尺度为30°,纬度尺度为20°,灵活度较差,不能随着构造特征调整绘图窗口,因此实际绘制过程中采用第二部分绘图方式进行补充。
2010—2015年,多位研究人员通过绘制全球5级以上地震的分布及部分区域的深度剖面,结合板块构造及地壳形变信息,将全球地震分布划分为17个区域,见表2。表中每个区域内涉及2个及以上板块,历史地震的分布与第一部分小区域4.5级地震的绘图方式类似,通过增加震源深度信息来展现板块运动信息。该图件还包含了板块运动的速率及方向,对于了解发震构造有更直观的帮助。与第一部分相比,第二部分内容给出了板块运动速率和方向等信息,但是图件空间范围过大,对震中附近地区历史地震的震源深度信息展示不够清楚,因此,本系统保留这2种展示方式。
震中附近地区历史地震统计是震后趋势研判意见需要重点添加的信息之一。全球7级大震趋势研判系统会统计震中附近地区300 km范围内的7级以上历史地震,包含发震时间、经纬度、震源深度、震级、地名等信息。然后根据上述信息给出与当前地震的空间距离和时间最近的地震,并标注统计范围内震级最大的地震。实际情况中可能会出现某些地震震中周围300 km范围内无历史地震或记录到的历史地震较少的情况,此时系统会自动扩大统计范围至500 km,若500 km范围内仍然没有历史地震记录,则会返回“震中附近无历史地震记录”的提示。
在对全球不同区域与中国大陆7级以上地震的统计关系研究中发现,二者具有一定的统计对应关系,其原因可能是同一构造区或某一小范围内的大震可能受到相同构造的影响,其破裂方向、地震波传播方向大致沿着某些构造方向较强,而在其他方向较弱,导致全球不同区域的7级以上地震对中国大陆7级以上地震的影响不同(李献智,张国民,1992)。位于断层滑动前方的区域,由于受到断层破裂滑动的挤压和推动,更容易使该区域的潜在破裂趋于失稳发震,进而使该区域的地震触发作用更明显(解朝娣等,2009)。
因此,全球7级以上大震的震后应急工作中最重要的就是计算震中附近区域7级以上历史地震与中国大陆7级以上地震在统计学上的对应关系。在震中附近地区历史地震统计的基础上,挑选出每次地震后1年内中国大陆发生的7级以上地震,并分别计算对应率和R值。其中对应率为对应地震的异常数与异常总数之比,异常总数即为震中附近历史地震数。R值为有震报准率和预报时间占有率之差,其反映的是预报方法或指标与地震的相关程度,作为评价预测效能的工具,已得到广泛的认可(马宏生等,2004; 屠泓为等,2007)。
利用PyGMT(Wessel et al,2019)完成全球7级以上地震分布、震源机制解、震中所在区域的历史地震分布、对应地震分布以及对应率和R值等图件的绘制以后,通过Python自带的库函数Python-pptx将生成内容整合到PPT文档中。Python-pptx是一个可以创建和编辑PPT文档的模块,该模块可以自动生成演示文稿、幻灯片以及幻灯片中需要添加的内容,如文本、图片、表格等。
利用该模块创建PPT文档有以下几步:
(1)创建演示文稿
从Python-pptx模块中导入Presentation实现PPT文档的创建,并设定幻灯片大小为16:9的宽屏模式,具体语句如下:
ppt=Presentation(pptx=path.join(getcwd(),'data/default.pptx'))//获取PPT文档
ppt.slide_width=Cm(33.862)//设置幻灯片长度
ppt.slide_height=Cm(19.05)//设置幻灯片宽度
(2)选择幻灯片布局
创建PPT文档以后需要创建每一页幻灯片,此处选择PPT文档的第7种幻灯片模版,该模版仅添加一页空幻灯片,无标题框和文本框等内容,便于调整图片位置和文本位置,具体语句如下:
blank_slide=ppt.slide_layouts[6]//设置幻灯片模版
slide_1=ppt.slides.add_slide(blank_slide)//添加幻灯片
(3)幻灯片内容添加
完成幻灯片创建以后,按照固定格式将已经产出的图片与表格等内容放置在幻灯片的固定位置,完成PPT文档内容的添加。以PPT文档首页放置全球7级以上地震分布图为例,其代码如下:
slide_1.shapes.add_picture(image_file='world7.png',
left=Cm(1.4),
top=Cm(3.68),
width=Cm(22.8),
height=Cm(11.4)
)
代码中设置了导入图片的名称、图片的宽度与高度以及在幻灯片的位置等参数。
为方便随时对特定地震进行历史地震统计,使用Python的图形工具包Tkinter编写全球7级大震趋势研判系统的软件界面(图3)。界面设计中添加了地震自动识别和手动输入地震参数2种方式,其中地震自动识别是在收到地震速报信息后自动获取当前地震信息并进行相关内容的产出; 手动输入地震参数则需要手动输入地震的发震时间、经纬度和震级等信息后产出相关内容。
图3 全球7级大震趋势研判系统界面
Fig.3 The interface of the post-earthquake trend decision system of the global M 7 earthquake
设置手动输入地震参数功能的优势在于,当全球某个地区发生7级以下地震时,若需要通过统计震中附近地区的历史地震来研究其对大陆强震的影响时,该系统也可以快速产出相关产品。如对2021年12月20日老挝6.0级地震进行研究时,由于CENC网站首页仅可展示近期发生的90次地震,因此在选择地震栏内无法显示该地震,此时可使用手动输入地震参数方式快速产出相关内容。
本文以2023年12月2日菲律宾棉兰老岛附近海域MS7.6地震为例(图4),对系统实际应用进行研究。震后系统会自动更新本地地震目录,并绘制全球7级以上地震分布图。图件主要展示3部分信息,分别用不同颜色绘制上年度、本年度的全球7级以上地震分布以及本次地震的空间位置。这种绘制方式便于展示本年度全球大震的活动水平和空间位置较上年度的变化情况。本系统生成PPT文档时会在全球7级以上地震分布图右侧给出本年度全球7级以上地震列表、上年度以及本年度7级以上地震数量等信息,作为空间分布的辅助信息供应急人员分析年度地震活动状态的变化。
震后根据实际情况产出的应急资料会稍有不同,主要区别在于是否已经产出本次地震震源机制解。若相关机构未产出本次地震的震源机制解,则系统产出的应急产品不包含该信息,否则会产出带有不同机构震源机制解信息的产品(图4b、c)。目前系统添加了USGS与CENC的震源机制解信息,分别用不同颜色绘制。同时将大区域的历史地震分布与震源机制解绘制于同一页PPT,其中历史地震的颜色代表震源深度,白色表示震源深度大于70 km。这种处理方式可以直观地展示出本次地震所在的空间位置以及震中位置可能的断裂情况。但是这种方式仅仅只作为参考,地震震中具体所在的断裂还需根据详细的地质构造信息加以辅助判断。
图4 菲律宾MS7.6地震震中附近大范围区域M≥4.5历史地震分布(a)及USGS(b)和CENC(c)产出的主震震源机制解
Fig.4 The distribution of historical earthquakes above M4.5 in a large zone(a)and the focal mechanism of Philippines MS7.6 earthquake from USGS(b)and CENC(c)
全球7级以上地震震后趋势研判最重要的意义在于研究其与中国大陆7级以上地震之间的关系,为中国大陆后续短期内是否可能发生大震提供研判依据。基于震后应急需求,本系统将菲律宾MS7.6地震震中附近300 km范围内的7级以上历史地震(图5a)与震后1年内对应的中国大陆7级以上地震进行统计(图5b),并计算相应的R值(图5c)和对应率(图5d)。在菲律宾地震震中300 km范围内的7级以上历史地震共有28次,其中4次地震后3个月内中国大陆发生7级以上地震(表3),对应率为4/28。R值明显小于R0,表明该地区发生7级以上地震与短期内中国大陆发生7级以上地震的相关性不强。但是有19次大震后1年内中国大陆发生7级以上地震,对应率为19/28。从R值曲线(图5c)可以看出,250天以后的R值明显大于R0,表明该地区发生7级以上地震对中国大陆在年尺度上发生7级以上地震具有一定的统计意义。
从2023年7月—2024年5月全球7级大震趋势研判系统在8次全球7级以上地震应急工作中的表现来看,该系统平均运行时间在1分钟以内,相较于人工搜集并制作应急PPT文档来说,极大提高了震后应急效率,为震后应急工作人员节省更多时间用于地震本身及其影响的分析讨论。
表3 2023年菲律宾MS7.6地震震中300 km范围内的19次7级以上历史地震与震后1年内中国大陆7级以上地震对应关系
Tab.3 The relationships between the 19 M≥7 historical earthquakes in the area of 300 km around the epicenter of Philippines MS7.6 earthquake and M≥7 earthquakes epicenters in Chinese Mainland within one year after the earthquake
图5 2023年菲律宾MS7.6地震震中附近300 km范围内7级以上历史地震分布(a)及震后1年内对应的中国大陆7级以上地震分布(b)、R值曲线(c)和概率曲线(d)
Fig.5 M≥7 historical earthquakes in the area of 300 km around the epicenter of Philippines MS7.6 earthquake(a)and their corresponding M≥7 earthquakes in Chinese Mainland within one year after the earthquake(b),R-value curves(c),and probability curves(d)[JZ)]
本文研发了1套可以用于全球7级地震的震后趋势研判系统,该系统基于Python语言,利用爬虫、PyGMT和Tkinter等手段和工具进行设计并得以实现。针对不同机构对同一地震测定发震时间和发震地点的差异问题,通过对历史地震数据进行分析对比,确定了利用“时间差小于10 s且定位误差小于2°即可确定为同一地震”的规则来解决CENC与USGS产出的地震信息的匹配问题; 通过对各机构网页的分析,利用不同的解析方式解决了地震目录自动下载以及震源机制解自动下载的问题; 使用PyGMT实现了Python自动绘制地震分布图的目的,初步解决了小区域内构造资料不足的问题; 最后完成了应急产品的自动产出。
本文采用Tkinter设计了软件的可视化界面,实现了自动识别地震以及手动输入参数两种获取显著地震信息的途径。其应急产品整合了全球7级以上地震分布及列表、区域历史地震空间及震源深度分布、附近历史地震统计及其与中国大陆强震的对应关系等内容,将震后应急产品产出的时间压缩到1分钟以内,极大提高了震后应急的效率。目前,该系统运行稳定,已经在多次7级以上地震震后应急工作中发挥了重要作用。
目前该系统在地震对应方面采取统计300 km范围内历史7级以上地震与中国大陆7级以上地震对应关系的方式,虽然能一定程度上说明两者在统计方面存在相关性,但是两者在构造方面的相关性并不是很高。因此,随着日常业务需求的提高,在全球构造数据逐步搜集完善的情况下,该系统可以逐步添加相关构造区域内历史地震与中国大陆7级以上地震的统计对应关系等内容,更加科学合理地完善全球7级以上大震趋势研判内容的产出。
中国地震台网中心为本研究提供了地震目录和试运行平台,全球区块划分信息来源于美国地质调查局(https://www.usgs.gov/programs/earthquake-hazards/information-region),软件绘图采用PyGMT,在此一并表示衷心感谢!