基金项目:地震监测、预测、科研三结合课题(3JH-202401005);广东省地震局青年地震科学基金(重点实验室开放项目) (GDDZZ202306)联合资助。
作者简介:姜喜姣(1989-),女,工程师,主要从事震源机制、地震监测相关技术研究等。E-mail:530365163@qq.com
通信作者:林庆西(1986-),男,高级工程师,主要从事地震速报预警技术研究、相关软件研发等。E-mail:forkiter@163.com
Guangdong Earthquake Agency , Guangzhou 510070, China
Earthquake early warning;Operation output;Django;Service platform
DOI: 10.13512/j.hndz.2025.02.05
国家地震烈度速报与预警工程项目建设和实施是我国防震减灾工作的关键环节,是健全我国防震减灾工作体系,加强地震灾害监测预警和风险防控能力的重要组成部分[1]。该项目于2018年正式启动,至2024年宣布竣工完成,标志着我国地震烈度速报与预警正式进入全面运行阶段[2-5]。为了向社会提供稳定的秒级地震预警信息,国、省两级多中心多套数据处理系统实时汇集产出海量的多源异构地震监测预警数据,并由融合决策平台处理和产出唯一的预警结果信息用于对外发布[6-7]。这些地震预警数据是预警系统核心产出结果,是提供预警信息服务的重要来源,是判断系统运行是否高效稳定和准确可靠的重要标志。同时,预警数据可用于地震预警业务系统的评估,对于减少地震事件误报、错报和漏报,分析完善台站布局以及各项科学研究都有着重要的意义。
目前,国内专家学者多采用人工处理的方式对预警产出结果进行研究和分析[8-10]。而国家及省级预警中心产出的预警数据结果数以万计,亟需一套预警数据产出服务平台,汇集相关预警数据并产出对应的预警产品。基于此,我们设计并开发了地震预警数据产出服务平台,用于汇集国家及省级各系统产出和融合的预警数据,实现了预警信息查询、可视化分析、数据归档、报告生成等功能。该平台服务于国家和省级地震预警从业者,减轻了其相关业务工作,为地震预警评估等工作提供重要的决策支持,为地震预警系统提供相应的数据保障和必要的技术支撑。
为了使地震预警数据更好地应用于业务化分析及科学研究,同时便于预警服务体系和内容的不断拓展,针对目前预警产出数据量庞大且服务相对单一的问题,系统构建多种产出成果的地震预警数据服务平台,从而满足国家及省级地震从业人员的服务需求,实现地震预警整体服务能力的提升。
地震预警数据产出服务平台总体架构如图1所示,自下而上分为基础层、数据层、支撑层、服务层和用户层共五层。
基础层为支持软件系统的基础运行环境,包括服务器设备、存储设备、网络设备等。数据层为平台功能的实现提供相应的数据支持,用于存储地震事件目录、台站参数、预警数据、地图数据和报告等全部产出数据。支撑层为平台数据产出与业务服务的关键,其主要是将各类数据资源转换为多项业务产出,并为平台后端管理等提供有力的技术支撑。服务层是平台承载的重要核心业务,其将支撑层提供的服务全部实现,为业务工作提供数据访问支持,同时提供预警数据分类分条展示、预警数据查询与可视化、地图生成与展示、报告产出等。用户层面向地震预警相关从业人员提供Web端交互平台,同时设置管理人员,按照相关网络安全策略,对用户权限进行管理,提升数据访问安全。
地震预警数据产出服务平台采用Django框架进行Web开发,编程语言为Python,整个编译环境采用PyCharm作为集成开发工具,方便管理整个项目并基于Django框架构建整个系统平台。前端主要采用HTML语言、CSS、JS等实现网页渲染,后端采用Django框架实现功能设计,融合各类算法完成数据处理并产出各类服务。服务器端适配Ubuntu等Linux操作系统,客户端支持chrome、firefox等浏览器提供相关服务。
Django是一种基于Python的开源Web框架,具有快速简便的开发特点,在地震行业内得到了广泛应用[11-13]。利用Django架设具有后端程序和数据库的网络服务器,可以方便用户利用前端浏览器进行交互操作。
本 次 平 台 开 发 采 用 MVT(Model-View-Template)模式,确保地震预警数据产出服务平台各功能模块之间保持松耦合关系,使其相对独立,易于平台升级维护和扩展相关功能。模型(Model)主要负责业务逻辑的封装与应用,并处理和数据有关的所有业务,用以设定地震预警数据产出服务平台中不同模块功能,负责业务对象与地震数据库交互,并进行数据处理。模板(Template)是将模型数据与前端页面结合起来的引擎,在此系统中负责把前端地震目录和预警等相关信息界面展示给用户。视图(View)负责实际具体业务逻辑实现,接收请求,进行业务处理,并在需要时调用模型和模板,返回应答。
图1 地震预警数据产出服务平台总体架构Fig.1 Overall architecture of earthquake early warning data output service platform
平台利用Django的路由(URL)功能将用户的请求分发到相应的视图函数进行处理,之后将处理结果返回到浏览器,并向用户展示处理结果。
为了确保预警数据的安全和完整性,满足预警数据产出业务管理中多用户多角色的需求,地震预警数据产出服务平台采用MySQL关系型数据库进行开发设计。
平台数据库实体关系主要有2个:权限控制实体关系和预警数据实体关系。权限控制实体关系包括URL访问权限、用户、角色和角色权限多个数据表之间的关系。预警数据实体关系是平台数据库关系的核心,包括地震目录(eew_yjcatalog)、预警子系统产出结果(eew_yjw)、预警二级融合决策平台产出结果(eew_yjmergesecondw)、预警一级融合决策平台产出结果(eew_yjmergefirstw)、预警台站信息(eew_yjsta)、台站测定震级(eew_yjstam)等预警相关数据之间的关系。其中,地震目录用以存储人工测定地震目录信息,包括地震速报结果和编目结果。单系统预警产出结果和一级二级融合决策结果以多对一的关系方式与地震目录连接,不同产出结果之间存在一对多的数据关系。预警产出结果除了包含相关预警目录外,与预警台站和测定震级为一对多关系,用于生成相关地图和报告。
为了缓解多用户向服务器静态或动态资源频繁访问造成的网络拥堵,从而提升响应速度,地震预警数据产出服务平台设计采用两套Web服务器,Nginx服务器和uWSGI服务器。
Nginx服务器主要负责处理静态请求和响应,担任网站服务器、反向代理服务器、负载均衡服务器等角色。它不依赖第三方服务和模块,不直接处理请求,增加了后端源代码安全性。uWSGI服务器主要处理动态请求和响应,是连接后端应用和前端展示的主要发布通道。在接收用户请求后,通过WSGI协议转发给Django框架应用。
地震预警数据产出服务平台总体技术架构如图3所示。
图2 预警产出数据实体关系图Fig.2 Entity relationship diagram of early warning output data
图3 地震预警数据产出服务平台技术架构Fig.3 Technical architecture of earthquake early warning data output service platform
地震预警数据产出服务平台共包含5个功能模块,分别是预警数据上传与处理、预警数据展示与查询、预警数据可视化、预警报告产出、系统权限管理功能模块(图4)。这些模块的构建实现了地震预警数据产出的各项核心业务功能。
上传数据是将地震目录和预警产出数据归类整理并存储进入本地数据库,方便后续各类服务功能的实现。数据获取最好的方式是从预警核心系统数据库进行资源访问和调取,但考虑到预警核心系统的安全性和稳定性,为了避免预警系统受到影响,本平台将采用基于Requests模块的Python网络爬虫技术获取相关数据[14-15]。
地震目录包含速报地震目录和编目地震目录,其中速报地震目录可通过EQIM网页进行爬虫获取;编目地震目录可通过本地编目系统数据库或全国地震编目系统网页进行爬虫获取。地震目录可作为标准事件目录,通过对比预警信息可得出预警产出数据是否正常,对于判断预警系统产出性能和结果优劣起着重要的作用。
预警数据包含子系统(JEEW系统和EEW系统)产出的原始结果,同时这些结果通过国家和省级二级融合决策子系统融合产出二级结果并发送至国家中心和备份中心一级融合决策子系统。国家中心和备份中心同时对接收到的3个二级结果(国家中心二级、备份中心二级和省级中心二级)进行融合决策,最终产出唯一的预警结果[6]。这些结果统一由融合决策客户端和网页予以展示,本平台通过爬虫技术对该预警产出数据分类整理,并存储至相应数据库。同时,通过相关处理,得到每个预警结果的偏差情况、预警数据重点区分布等信息。另外,每个结果除包含地震信息外,还有接收台站情况以及每个台站测定的震级等数据,将该数据存入对应的数据库,方便后期地图展示和报告生成。
图4 地震预警数据产出服务平台功能模块图Fig.4 Functional module of earthquake early warning data output service platform
本平台采用自动定时上传和手动上传两种方式存储预警数据。开启自动上传功能时,平台以30 min为间隔,自动爬取融合决策平台网页数据并实时处理存储。为了避免部分预警数据遗漏,对于爬取时刻附近的地震事件再次以5 min的时间间隔重新获取。通过分析2022年2月至今所有地震事件的预警用时,发现最长用时事件为2022年11月18日新疆阿克苏地区库车市3.6级地震,本次地震共融合产出95个结果,最后结果用时为102.6 s。因此,5 min的时间间隔可确保完整获取对应事件的预警数据。另外,为了避免网络中断、系统故障等原因导致预警数据中断而获取不到相关数据,平台开发了手动上传功能并提供相应权限,在选取的时间段内可完成该时间范围内所有的数据存储和处理。
存储并处理后的预警数据将通过网页列表形式直观展示给用户。预警数据按照产出时间顺序排列,并以2个子系统产出结果以及2个融合决策平台的融合结果进行划分,每个结果都会展示出其融合来源。同时,每一个预警结果都会给出震中偏差值和震级偏差值。相较于原有融合产出平台,地震预警数据产出服务平台展示预警数据更为直观且有序,有利于业务人员快速评估预警系统运行情况,及时处置误报错报地震事件。另外,根据地震预警业务系统运行产出评估要求,平台为符合评估标准的地震预警事件进行评分,其评分结果可直观展示该预警事件产出的规范性、准确性和可靠性,为预警系统运维提供更为优质便捷的判断依据。
地震预警数据产出服务平台利用Django中ORM管理模型和数据库进行交互,实现了数据库便捷和快速高效的查询功能。平台主要有两种查询方式:目录查询和预警查询。目录查询以速报或编目目录为标准,按照限制条件查找相关地震数据及相对应产出的预警数据;预警查询可按照数据来源、偏差值、预警用时、预警报数等评估条件进行筛选,给出相关结果列表。另外,平台提供相关下载功能,方便用户将查询结果下载到各类格式(如CSV、PDF等)的本地文件中。
预警数据可视化模块包括地图生成与展示和可视化展示两部分,提供在线实时展现发震位置,时间段内用时和偏差折线图等功能。地图生成主要利用天地图为基础底图,将相关地震分布、预警台站分布等信息加载到电子地图中,向用户直观展示预警相关信息。可视化主要采用基于JavaScript的echarts数据可视化库生成相关图表,该图表具有可交互功能,方便用户直观分析预警产出的情况。
预警报告主要包括预警专报、预警月报和预警异常排查报告,按照相关要求,业务单位须在规定时限内完成相关报告产出工作。其中,预警专报主要包含地震信息、决策系统产出情况、预警子系统产出情况等;预警月报主要包含当月预警系统运行概况、台站接入情况、预警产出情况以及误触发和偏差等信息分析;预警异常排查报告主要是对预警事件异常产出的原因进行相关详述。
地震预警数据产出服务平台根据以上相关内容和规范,自动产出对应的预警报告,方便从业者及时进行下载、查阅和提交。报告主要采用Python-docx、Folium等第三方模块制作完成。
为了提升系统整体安全性,方便用户管理,地震预警数据产出服务平台开发并实现了用户管理、角色管理和权限管理功能。其中,用户管理主要完成对平台中用户权限的验证和管理,从而提供一种更加安全的工作方式;角色权限管理是将不同的用户组划分,每个角色都有事先定义好的一系列使用权限,只有对某种操作具有使用权限的用户才可以运行该操作;权限管理可以针对不同的平台功能定义一系列使用权限,用于不同角色间的区分。
本文以国家预警备份中心在2024年8月产出的预警数据为例,展示平台的应用效果。在该时段,国家预警备份中心一级融合决策平台共产出75个地震事件,发布预警信息102条,最小预警震级为2.3级,最大预警震级为6.1级,最小预警用时为4.6 s,最大预警用时为48.8 s。第一报平均用时12.5 s,震中位置平均偏差6.6,震级平均偏差0.4。以2022年8月20日云南普洱市思茅区4.6级地震为例,国家预警备份中心一级融合决策平台共发布预警信息1条,二级融合决策平台共产出融合结果48个,JEEW和EEW子系统分别产出预警结果45个和3个。图5(a)展示了该地震事件预警产出的部分内容,根据列表可直观看到预警结果偏差情况、用时情况以及每个结果的融合来源。通过查看分布图,可以获取每个预警结果台站分布情况,如图5 (b)所示的国家预警备份中心二级融合决策平台产出的预警信息台站分布图,从图中可以清晰看到该预警信息所接收到的台站包围情况,以及每个台站测定的震级大小。其中JN001台站测定震级为负,说明该台站参数配置错误或预警产出时计算错误,方便运维管理人员进行相关故障排查。
图5 预警数据产出列表展示(a)和预警台站分布图(b) Fig.5 List display of early warning data output(a)and distribution map of early warning stations(b)
平台预警数据查询功能可按照搜索条件获取到用户满意的预警数据。例如,在该时间段内按照预警用时大于10 s,查询JEEW子系统第一报产出的预警数据,如图6所示。共查询得到12条预警信息,通过查询结果可分析判断产出时间较长的原因等,对后期站点分布完善、系统技术改进等有着重要的指导意义。
图6 预警查询结果展示Fig.6 Display of the early warning query results
图7 预警产出评估评分表示例图Fig.7 Example of scoring form for the evaluation of early warning outputs
根据预警业务系统产出评估要求,平台针对预警重点区符合震级要求的地震产出进行评分。以2024年11月7日河北张家口市崇礼区3.7级地震为例,按照台站触发率、系统触发、偏差情况、报告报送情况分别进行评分,如图7所示。评分结果可作为系统产出质量评估的一项重要依据,对提升运行产出质量和效率具有重要的意义。
利用平台可视化功能可直观展示预警地震分布情况、预警参数偏差情况等。图8(a)为8月份产出的预警地震分布情况,图8(b)为该时间段内,预警震中偏差情况。通过人机交互点选,可展示预警详细结果。
图8 2024年8月国家预警备份中心产出预警地震分布图(a)和预警地震震中偏差图(b) Fig.8 Early warning earthquake distribution map(a)and early warning earthquake epicenter deviation map(b) from National Early Warning Backup Cente in August 2024
地震预警数据产出服务平台可以一键产出预警专报、预警月报和预警异常排查报告,报告均按照相关要求规范化编制,方便用户快捷产出并归档。另外,平台提供了账号注册、账号登录、权限管理等功能,在提升安全性保障的同时,方便用户管理。
本文结合国家地震烈度速报与预警业务系统运行产出的工作需要,设计并实现了一套以地震目录和预警数据为基础数据库,由数据存储与处理、预警数据查询与可视化、报告产出、权限管理等多个功能模块构成的地震预警数据产出服务平台。通过对平台架构和设计、主要功能、应用实现等方面进行探讨,获得了如下几点认识:
(1)地震预警数据产出服务平台依托于国家烈度速报与预警系统,对海量预警数据进行分类归档,并提供相应的产出服务。该平台具有较高的时效性和准确性,为国家烈度速报与预警系统的稳定运行提供了强有力的支撑,其服务产品对预警系统的后期维护有着重要的参考意义。
(2)平台提供的各项服务功能,基本解决了现阶段地震预警分析人员的痛点和难点问题,进一步提升了相关业务从业人员的工作效率,在运行产出评估中起到了重要的作用。
(3)平台设计中采用的Django框架具有较强的扩展性能,方便植入更为便捷高效的业务功能,从而丰富整个服务平台,为广大地震行业从业者提供更为优质的服务。
目前,地震预警数据产出服务平台运行稳定,在持续产出服务产品的同时展现了良好的应用效果。接下来,随着国家烈度速报系统功能进一步升级,各项业务全面铺开,产出的各类数据和产品会日益增多。在优化该平台架构提升平台性能的同时,结合实际进一步完善该平台,提升服务水平和质量,从而更好地服务于地震预警工作。
致谢:本文所用到的数据全部来源于国家地震预警备份中心,在此表示感谢。