江苏省地震应急专题图快速产出系统设计与实现
2023-10-19王冬辰
王冬辰 王 琛 张 婷 高 飞
(中国南京 210014 江苏省地震局)
0 引言
地震是一种影响范围广、破坏性大、灾害信息复杂的地质灾害现象,在地震发生后的黑箱期(聂高众等,2012),可获取的震区相关信息有限。地震应急专题图作为直观展示震区相关地理空间信息及地震专题信息的技术手段,可及时为地震应急决策及救援提供支持,而地震应急专题图的时效性和准确性则直接影响到抗震救灾工作的顺利开展。因此,研究震后短时间内快速高效地产出各类地震应急专题图具有重要意义。
以往地震应急专题图需专业制图人员在应急岗位手动操作制图软件进行绘制,步骤繁琐,耗时较长,容易出错,已无法满足地震应急快速响应的需求。因此,亟需研究如何在地震发生后以最快速度自动产出各类地震专题图件。近年来,已有许多学者通过各类技术手段研究地震应急专题图的自动快速产出,如利用ArcGIS Engine平台,建立一套脱离专业GIS制图软件的地震应急自动成图系统,录入模板,根据地震应急工作的具体需求产出相应专题图(张树君等,2018)。按照不同需求,利用ArcGIS模型构建器,对应急专题图数据库中的数据进行分类,使用ArcPy自动出图脚本进行地震应急专题地图的批量制图(程显洲等,2018)。利用Python语言编写脚本,获取地震灾情评估系统产出的地震三要素、地震影响场、震中距等数据,并调用预制模板,实现地震应急专题图的快速产出(韩贞辉等,2020)。建立相关地区独立数据库,利用VB6.0开发一套不依赖网络、适用于地震应急救援的专题地图快速产出系统(马宝君等,2021)。通过对开源GIS平台和微服务构架的研究,构建陕西省地震专题图模板体系,实现基于开源平台的地震应急专题图自动生成(孙哲等,2022)。2022年,中国地震台网中心牵头为各省地震局部署“地震应急快速评估系统及地震应急辅助决策分析一张图系统”。该系统采用微服务架构,功能强大、产品丰富,可快速产出一系列专题图件,但其在离线环境中无法使用,也暂时无法根据各省地震特点和应急场景更改地震影响场模型及制图模板,因此主要作为各省地震局的应急辅助产品使用。
江苏省及其邻区是我国东部中强地震发生较多的地区,其地震灾害具有“震级不大、灾害较重;波及范围广、社会经济影响大”的特点(王斌等,2009)。目前,江苏省地震局仍缺少适用于本省地震特点和应急情景的快速制图方式。本文基于Python语言,设计并实现适用于江苏地区的地震应急专题图快速产出系统,在用户界面输入地震事件参数,可自动生成地震事件要素,快速产出大量应急专题图件,从而大幅提升地震应急工作的处置效率。
1 系统设计
1.1 系统框架
系统使用Python语言进行开发,根据设计需求分为地震事件创建和专题图产出2个模块。地震事件创建模块用于自动创建震中点、地震影响场及震中与城市距离,并可在后续应急工作中根据实际情况修正影响场的烈度衰减模型和方向。专题图产出模块用于实现地图模板更新及多进程并行出图。模块功能主要通过ArcPy实现。ArcPy是随ArcGIS安装的站点包,该包提供大量类和函数用以执行地理数据的分析、转换、管理和地图制图自动化命令,并能高效调用ArcGIS中的各种地理处理工具。利用Tkinter编写系统图形界面,其为Python自带的标准GUI设计库。系统采用Tkinter创建用户交互窗口,便于输入地震参数、调用模块计算并展示运行结果。使用py2exe将系统打包封装成可执行文件,便于未来进行跨平台移植。
1.2 技术流程
系统启动后,输入地震参数,系统将依照模块的逻辑顺序执行,流程(图1)如下:①根据地震参数及江苏地区烈度衰减模型依次生成震中、地震影响场及震中点与主要城市距离。②判定影响场是否需要修正,如需修正,则通过更改烈度衰减模型及方向,创建修正后影响场,无需修正则直接调用专题图预制模板,更新图名、图幅等要素。③将模板经进程池分配至不同进程,批量快速产出多幅地震应急专题图件。
图1 系统技术流程Fig.1 System technical flowchart
2 数据库与模板构建
2.1 地震应急数据库构建
地震应急数据库是系统快速调用数据的前提条件,同时保障了数据的安全及稳定性。本系统的地震应急基础数据库通过File Geodatebase模型构建,采用统一的CGCS2000大地坐标系,存储并管理本系统所需的各类数据。根据数据类型,将地震应急数据分为4类:行政区划、交通、水系等地理基础数据,人口、经济等社会统计数据,历史地震、活动断裂等地震专题数据,以及根据地震事件产生的震中点、地震影响场和震中距等地震事件数据(表1)。
表1 地震应急数据Table 1 Earthquake emergency data
2.2 专题图模板构建
为保证专题图的产出数量及速度达到预期目标,需要预先制作地震应急专题图模板。地震应急专题图模板为地图文档mxd格式,所关联数据存储于地震应急数据库。模板内地理底图要素按照测绘行业标准设计图层(符号)样式,地震专题要素按照地震行业标准设计图层(符号)样式,图名、图例、比例尺及制图时间等要素则根据地震事件由系统自动产生。由于不同地震应急专题图所强调的要素不同,根据中国地震局《破坏性地震应急专题地图产出流程与制图规范(试行)》要求,结合《江苏省地震局地震应急预案》和当地地震应急工作经验,共设计24张江苏省地震应急专题图模板,其主题和幅面不同(表2)。
表2 专题图模板Table 2 Thematic map templates
3 系统功能实现
3.1 地震事件创建
3.1.1 创建震中要素。震中是震源在地面上的垂直投影,也是专题图展现区域的中心,在获取地震参数后,系统根据经纬度坐标,使用ArcPy库中的游标UpdateCursor函数,对地震应急数据库中原有震中点要素的x、y坐标进行修改,从而更新此次地震事件的震中点几何信息,生成新的震中点位置信息存入数据库。通过SpatialJoin函数与行政区划数据进行空间连接,进而获取震中点所处地理位置的名称。根据地震行业标准《地震名称确定规则》(DB/T 58—2014),当震中位于县级行政区内,地名由省级和县级行政区名称组成,如“江苏昆山”,当震中位于地级市辖区内,地名由省级和地级市名称组成,如震中位于江苏省南京市玄武区,则地名为“江苏南京”。
3.1.2 创建地震影响场。地震影响场反映了地表受地震破坏的区域分布情况。它能直观展现受地震影响的区域范围,是地震应急专题图中最重要的地震信息。地震影响场通常由多个椭圆烈度圈叠加形成,而烈度圈由地震烈度衰减公式计算生成。不同地区所采用的烈度衰减公式有所不同,根据江苏地区地理位置及地震特征,采用更适用于本省的地震烈度衰减公式生成烈度圈(何奕成等,2020)。该公式在郯庐断裂带东侧地区、3.0≤M≤7.0范围内相对可靠。沿椭圆模型的长轴和短轴方向,地震烈度衰减公式如下
式中,I为地震烈度,M为震级,R为椭圆烈度圈的轴长,a代表长轴方向,b代表短轴方向。
烈度圈椭圆模型的生成需获取椭圆的中心点坐标、长短轴及方位角参数(图2)。其中,中心点坐标用来确定椭圆在地理坐标系中的位置,长短轴用来确定椭圆的几何形态及大小,方位角用来确定椭圆的长轴方向。椭圆中心点坐标即为震中经纬度坐标。根据公式(1)—(2)可计算震级在不同烈度值下椭圆烈度圈的长短轴长度。系统通过ArcPy库中的Near函数查找距震中最近的活动断裂走向,以此作为地震影响场的方位角。利用TableToEllipse函数分别读取震中经纬度、烈度值对应的轴长、方位角,构建生成多个椭圆线要素,该要素表现为沿地球椭球体延伸的大地测量线。基于FeatureToPolygon函数将椭圆线要素转化为椭圆面要素,利用SpatialJoin函数将属性数据写入椭圆面,即可快速生成具有多层椭圆烈度圈的地震影响场。
图2 地震烈度衰减椭圆模型Fig.2 Elliptical model of seismic intensity attenuation
3.1.3 修正地震影响场。在实际地震应急工作中,常根据余震序列、震源机制解、场地条件等信息对地震影响场的椭圆长短轴长度和方位角进行修正,从而更加准确地描述地震影响范围。在地震事件生成后,如需要对影响场进行调整,则可在系统界面更改适合此次地震区域的其他烈度衰减模型,系统调用该模型的烈度衰减参数,计算得到修正后的烈度圈椭圆长短轴。利用ArcPy库中的InsertCursor函数建立写入游标,将修正后的轴长和方位角覆写到影响场要素表中,从而达到更新椭圆烈度圈、修正地震影响场的目的。
3.1.4 创建震中与城市距离。震中距是震中到某点的地面距离。地震发生后,需要了解震中到周边主要城市的距离,用以估计城市受地震影响程度,拟定应急救援方案。在生成震中及地震影响场后,利用ArcPy库中的extent函数及SelectLayerByLocation函数获取震中附近一定范围内的城市信息,利用AddXY函数获取震中及各城市经纬度坐标,基于XYToLine函数在数据库中创建各城市到震中点的连线,利用AddGeometryAttributes函数计算各连线的测地线长度,即为震中与城市的距离。
3.2 专题图自动产出
3.2.1 地图模板更新。产出的专题图件要表现出震区的影响范围,因此,系统遍历每个专题图模板,读取影响场图层,通过ArcPy库中的zoomToSelectedFeatures函数及scale函数将影响场在图面上居中展示,并缩放至合适的比例范围。修改模板的图名标题,使其包含前述获取的震中所在地名及震级大小,成为“震中地名+震级+模板名”的格式。图件的出图时间设置为当前系统时间,图例及比例尺设置为可根据地图范围动态调整内容和大小。最终保存模板,完成模板更新功能。
3.2.2 多进程出图。系统通过ArcPy库中的ExportToJPEG函数调用专题图模板,设定出图路径、图件名称及分辨率等参数,将mxd地图文档导出为jpg格式的图片文件。由于按单个模板排队依次产出图件耗时较长,考虑采用多进程并行出图方式批量生成图件。Multiprocessing是Python自带的用于产生多进程的库,可利用库中pool类创建进程池来管理进程。进程池可提供一组指定数量(通常默认为cpu内核数量)的进程并重复利用。使用apply_async方法将任务请求提交至进程池,并以异步非阻塞方式分发给可用进程,则不必等待当前进程执行完成,便可随时根据系统调度切换至其他已释放资源的空闲进程,以达到多个进程并行处理出图任务、提高程序执行效率的目的。
4 系统测试与应用
江苏及其周边地区近期无破坏性地震发生,故通过模拟地震事件进行系统测试。模拟地震事件设定为:2023年1月30日09时00分00秒在江苏省南京市江宁区(118.95°E,32.05°N)发生MS6.0地震。打开地震应急专题图快速产出系统,在系统界面中输入此次地震参数,系统于09:00:10开始生成地震事件,09:00:46完成计算,进行多进程产出,09:02:10完成出图任务,共生成24张图件。整个过程用时120 s(图3)。运行结果表明,该系统可自动生成震中点位置、地震影响场、震中距,并快速产出各类地震应急专题图件(图4,图5)。
图3 系统界面及运行结果Fig.3 System interface and operation results
图4 震区地震影响场分布图示例Fig.4 Example of distribution map of seismic influence field in earthquake area
图5 震中与附近主要城市距离图示例Fig.5 Example of distance map of the epicenter and major cities nearby
5 结束语
地震应急专题图的产出是地震应急工作的重要内容和关键环节。根据江苏省地震应急工作需求,构建一套系统专用数据库及专题图模板,设计并实现了江苏省地震应急专题图快速产出系统。本系统可自动生成震中点位置、地震影响场及震中距,继而更新预制地图模板,利用多进程方式批量产出图件。同时,为系统创建用户界面窗口,并封装为可执行文件,提高了系统的易用性和稳定性。通过该系统,江苏省地震局实现了应急专题图的自动批量快速产出,满足了当前地震应急响应工作的需求,为快速获取各类地震应急专题图提供有效的技术支撑。
该系统采用单机离线模式运行,避免了网络不稳定可能带来的干扰现象。但是,目前该系统仍未实现自动接收地震信息、生产图件并打印的效果,未来可考虑将系统架设至服务器上,并接入EQIM,以实现全自动触发及产出,为江苏省地震应急工作提供更加迅速便捷的制图技术保障。