基于开源平台的陕西省地震应急专题图自动生成技术的研究和实现

孙哲, 鲜敏, 郭建兴

孙哲,鲜敏,郭建兴. 基于开源平台的陕西省地震应急专题图自动生成技术的研究和实现[J]. 华北地震科学,2022, 40(4):34-39. doi:10.3969/j.issn.1003−1375.2022.04.006.
引用本文: 孙哲,鲜敏,郭建兴. 基于开源平台的陕西省地震应急专题图自动生成技术的研究和实现[J]. 华北地震科学,2022, 40(4):34-39. doi:10.3969/j.issn.1003−1375.2022.04.006.
SUN Zhe,XIAN Min,GUO Jianxing. Automatic Generation Technology of Earthquake Emergency Thematic Map in Shaanxi Province based on Open Source Platform[J]. North China Earthquake Sciences,2022, 40(4):34-39. doi:10.3969/j.issn.1003−1375.2022.04.006.
Citation: SUN Zhe,XIAN Min,GUO Jianxing. Automatic Generation Technology of Earthquake Emergency Thematic Map in Shaanxi Province based on Open Source Platform[J]. North China Earthquake Sciences,2022, 40(4):34-39. doi:10.3969/j.issn.1003−1375.2022.04.006.

基于开源平台的陕西省地震应急专题图自动生成技术的研究和实现

基金项目: 陕西省地震局启航与创新基金课题(QC202018)
详细信息
    作者简介:

    孙哲(1984—),男,陕西西安人,高级工程师,主要从事地震应急研究. E-mail:sunzhe19841129@163.com

  • 中图分类号: P315-391

Automatic Generation Technology of Earthquake Emergency Thematic Map in Shaanxi Province based on Open Source Platform

  • 摘要: 结合陕西省地震应急对专题图产出的要求,通过研究开源GIS平台,在QGIS和PostGIS中实现地震信息的自动获取、影响场生成和专题图的自动产出,并通过与Docker微服务构架结合构建多服务并行运行框架,最终实现基于开源平台的陕西省地震应急专题图自动产出。经测试显示,该系统提高了地震应急专题图出图效率和运行稳定性,并减少了系统开发和运维的成本。
    Abstract: Combined with the requirements for seismic thematic mapping in earthquake emergency, this paper realizes the automatic acquisition of seismic information, the generation of seismic influence field and the automatic output of thematic map in QGIS and PostGIS by studying the open source GIS platform, and constructs a multi service parallel operation framework by combining with Docker micro service application container, so as to finally realize the automatic output of seismic thematic map based on the open source platform. The system improves the drawing efficiency and operation stability of seismic emergency thematic map, and reduces the cost of system development and operation and maintenance.
  • 地震作为一个突发事件具有影响范围广、破坏性大、灾害信息复杂,灾害种类多样及救援难度大等特点[1],因此地震发生后快速掌握震区相关人口、经济、地质条件等情况,对开展地震应急救援工作至关重要。地震应急专题图是将震区各种信息通过图件方式展示,是了解灾区背景资料的最为直观的方式。与普通地图相比,地震应急专题图不仅可以表示地震灾区各种要素的现状及其分布,而且能够表示地震应急救援过程中各种要素的动态变化和发展规律,因此研究如何在地震发生后最短时间内快速有效地产出各类地震专题图就具有重要的意义[2]。目前,地震应急专题图产出已经逐步淘汰了人工出图技术,地震系统主要采用基于商业GIS平台进行二次开发实现地震应急专题图的自动产出。这种方式虽然减少了人工干预,大大提高了地震应急专题图产出的效果,但大多商业 GIS 平台都相互独立和封闭,数据结构和存储模式不同,且费用昂贵,导致系统在开发、部署和后期维护成本都较高[3]。这就限制了地震应急专题图产出系统的使用,同时由于采用单机模式,系统稳定性也存在一定隐患。

    因此,本文通过对开源平台下的地震影响场自动生成、专题图模板的制作、图件自动整饰、微服务构架搭建等技术的研究,构建基于开源平台的地震应急专题图自动出图系统。系统采用了开源GIS平台下的微服务构架技术,实现多服务并行出图,提高图件产出效率和系统运行稳定性,同时也减少了系统开发、部署和后期维护的成本。

    开源 GIS 是将开源技术与GIS平台相结合,通过遵循统一的OpenGIS开放标准,实现各种地理信息相关服务。其具有源代码开放、便于互操作、可扩展性强、成本低廉等优点[4],真正实现了自由和开放。开源GIS软件得到学术界和GIS平台厂商越来越多的重视,成为GIS研究和应用创新的一个重要领域。

    QGIS是一款用户界面友好、跨平台、基于Qt、使用C++开发的开源版桌面地理信息系统。该系统具有操作界面简单、软件操作容易、支持多种文件格式等特点[5]。同时相比于其他商业软件,QGIS具有平台免费、体积小、占用内存和处理能力少,图件制作和渲染上功能更加灵活多变,支持多个操作系统,并提供多种二次开发的方式,能够更好地与其他软件架构相结合等优势。因此,系统选用QGIS作为地震应急专题图出图平台。

    PostgreSQL 是一款开源的跨平台关系型数据库管理系统,PostGIS是其空间操作的扩展,遵循OpenGIS开放标准,支持的主要几何类型包括:点、线、多边形、多点、多线、多多边形和集合对象集等,并提供了包括空间对象、空间索引、空间操作函数和空间操作符等空间信息服务功能。通过PostGIS,PostgreSQL数据库升级为空间数据库,实现了空间数据的存储、管理和操作[6]

    地震应急专题图自动产出系统基于myeclipse平台和Python2.7脚本语言开发,数据库使用PostGIS,出图平台使用QGIS,出图脚本统一存储在Docker微服务架构中,系统各个服务之间通过RabbitMQ进行通信。系统主要分为3个部分:①地震影响场自动生成模块;②专题图自动产出模块;③微服务构架模块。

    系统整体流程(图1),系统监控地震速报数据库,当有新纪录后系统自动提取地震三要素,根据地震三要素通过地震影响场自动生成模块产出对应的地震影响场并存入数据库中。系统通过制图服务,选择对应的模板生成地震应急专题图制图任务列表,在通过消息池将任务分发给不同的专题图出图服务,并将专题图产出的情况返回给制图服务。每个专题图服务中包含一个基于QGIS的出图脚本用于调取专题图模板、修改图名、变更图幅范围、增加地震影响场和最终专题图的产出。

    图  1  系统流程图

    数据库基于PostGIS平台,主要建立地震事件表(表1),地震影响场表(表2),地震应急专题图任务表(表3)3个数据库表,用于存储地震相关信息、系统的地震影响场数据和产出的地震应急专题图任务列表数据。

    表  1  地震事件表
    字段中文名格式备注
    CATALOG_ID地震IDVARCHAR2(50)字段内容为地震的编号
    O_TIME发震时刻DATE发震时刻精确到0.1 s
    EPI_LAT震中纬度DOUBLE地震发生的经度 
    EPI_LONG震中经度DOUBLE地震发生的纬度
    EPI_DEPTH震中深度DOUBLE地震发生的深度 
    LOC_NAME震中地名VARCHAR2(50)地震震中地名
    MAG震级DOUBLE该表中震级即为最终向社会公布的震级,精确到小数点后一位
    CLASS地震类别VARCHAR2(20)天然地震\演练地震\塌陷地震
     *表名为:DZYJ_CATALOG 用于存储地震三要素;地震编号为14位编码,格式为YYYYMMDDHHMMSS。
    下载: 导出CSV 
    | 显示表格
    表  2  地震影响场表
    字段中文名格式备注
    CATALOG_ID地震IDVARCHAR2(50)字段内容为地震的ID号,不同地震ID不同
    YXC_ID影响场IDVARCHAR2(50)字段内容为地震的ID号,不同地震ID不同
    LIEDU烈度VARCHAR2(10)生成的影响场烈度
    MAJORAXIS长轴半径DOUBLE精确到小数点后1位
    MINORAXIS短轴半径DOUBLE精确到小数点后1位
    AREA面积DOUBLE精确到小数点后1位
     *表名为:DZYJ_YXC用于存储自动生成的地震影响场,一次地震事件只有一个自动地震影响场。
    下载: 导出CSV 
    | 显示表格
    表  3  地震应急专题图任务表
    字段中文名格式备注
    CATALOG_ID影响场IDVARCHAR2(50)与影响场地震ID相同
    NAME专题图名称VARCHAR2(50)模板的名称
    PATH专题图路径VARCHAR2(50)模板存储的路径
    STATE专题图产出情况INT1代表已经产出、0代表未产出
    TIME出图时间DATE出图时间精确到秒。
    FLAG是否需要影响场INT1代表需要、0代表不需要
    CLASS模板类别VARCHAR2(50)天然地震\塌陷地震
    CATALOG_ID影响场IDVARCHAR2(50)与影响场地震ID相同
     *表名为:DZYJ_MAP用于存储地震对应的地震应急专题图任务列表。
    下载: 导出CSV 
    | 显示表格

    由于不同震级的地震影响范围不同,地震专题图显示的范围和所涉及的专题图符号、地图比例尺、专题内容的详细程度等都会有差异。本系统根据中国地震局《破坏性地震应急专题地图产出流程与制图规范(试行)》要求,结合《陕西省地震局地震应急预案》和地震应急的实际经验构建陕西省地震应急专题图模板体系。

    陕西省地震应急专题图模板按照地震类型分为两大类,塌陷地震和天然地震。其中,塌陷地震按照地震应急专题图的用途分为不同幅面,而天然地震按照是否包含影响场分为两大类:需要显示地震影响场和无需显示地震影响场。对于需要显示地震影响场,考虑到不同震级影响场比例尺的差别在根据地震震级结合实际应急的经验,将其分为7档,每个档位在按照不同的用途分为不同幅面,最终构建完成陕西省地震专题图模板分类体系(图2)。

    图  2  专题图模板分类

    在根据设计好的分类体系基于QGIS平台制作专题图模板和各类专题符号。其中,基础地理要素按照国土测绘行业相关国标进行设计,地震相关专题要素参考地震烈度图、地震灾害风险普查制图说明等地震行业相关规范进行设计,比例尺、图名、出图单位等出图要素采用统一名称,由出图系统自动定位生成(图3)。

    图  3  地震应急专题图模板

    地震影响场自动生成服务采用QGIS提供的Python插件编写,产出的数据存入PostGIS数据库。地震影响场通过烈度衰减模型生成,本文使用的烈度衰减模型是地震系统常用的椭圆模型(公式1)[7],参数采用《中国地震动参数区划图宣贯材料》中提供的陕西省所在的中部强震区衰减关系系数(表4[8]。系统通过地震三要素进行空间分析确定地震落入的区间,提取对应的系数后,根据模型计算得到长、短轴的长度和烈度圈点P1的经纬度(图4),最后得到所有P1点的集合ipointarray();再根据arcpy.Polygon()函数将集合转换成面状图形,完成椭圆影响场的生成。

    表  4  陕西省地震烈度衰减参数
    区域名称L1L2L3L4S1S2S3S4
    陕西5.841 01.071 03.657 0153.944 01.071 02.845 07
    下载: 导出CSV 
    | 显示表格
    图  4  烈度衰减模型图
    $$\begin{split}{\text{ 长轴:}}& {I}_{a} = {L}_{1}+{L}_{2}M-{L}_{3}{L}_{n}\left(R+{L}_{4}\right) \\{\text{短轴:}}& {I}_{b} = {S}_{1}+{S}_{2}M-{S}_{3}{L}_{n}\left(R+{S}_{4}\right)\end{split} $$ (1)

    关键代码如下:

    starLdis = Math.Exp((l1 + l2 * lieDu - i) / l3) - l4;//计算长轴长度

    starSdis = Math.Exp((s1 + s2 * lieDu - i) / s3) - s4//计算短轴长度

    P1.PutCoords((x2 + x * cosa - y * sina), (y2 + x * sina + y * cosa))//计算P1点的坐标

    points. ipointarray(P1)

    IGeometryCollection theGeos = new PolygonClass()

    theGeos.AddGeometries(1, ref pRawGeo1);

    arcpy.Polygon() = (IPolygon)theGeos//生成椭圆

    专题图自动出图脚本是通过在myeclipse平台中调入QGIS内置的Python插件进行二次开发,实现地震空间分析、专题图模板的读取、图名的修改、幅面的调整、专题图的导出等相关功能。

    根据设计完成的陕西省地震应急专题图模板体系。服务通过获取到地震相关信息,根据地震震级和地震类型判断对应的专题图模板,并在数据库中生成与该地震对应的地震专题图任务列表。

    确定专题图任务列表后,系统选择没有产出的专题图任务并调取对应的专题图模板。首先,通过layoutByName()读取每个模板对应的制图页面;其次,通过layout.items()函数遍历模板中的模板图名、图例、产出时间等要素并对其进行修改,在通过setExtent()函数确定专题图的出图范围;最后,通过exportToImage()函数设定出图路径、文件名称、分辨率等要素并完成出图。关键代码如下:

    project = QgsProject.instance(name)//读取制图模板

    labels = layout.items()

    for x in labels:

    if project .ayout.items(x, QgsLayoutItemLabel):

    if x.text()=="出图时间":

    x.setText("出图时间:"+O_TIME1)// 遍历模板中的模板图名、图例、产出时间等要素并对其进行修改

    layoutExporter. exportToImage ()//导出地图

    对QGIS出图脚本进行扩展部署,引入基于Docker技术的微服务架构。通过构建多个地震专题图出图微服务,实现多个服务同时出图,改变了以前单一的进程机制,提高地震应急专题图产出速度的同时也增强了系统的稳定性。

    整个出图微服务构架主要可分为消息池、制图服务、专题图出图服务集群3个主要内容(图5)。其中,制图服务用于管理制图任务、控制制图队列和专题图的产出;消息池采用RabbitMQ实现消息的管理和传递,用于监控服务运行状态和服务之间的通信,用来传递制图信息、制图状态;专题图出图服务,在服务器上虚拟多个Docker作为单体服务的容器,每个Docker上存储单独QGIS出图脚本和模板,一个Docker对应一个出图服务。系统实现了同时多个专题图出图服务并行出图,并由一个总的制图服务对其进行统一的管理。

    图  5  微服务架构图

    由于陕西省境内近期没有发生有震害的地震,最后通过设计地震数据,对系统进行测试。模拟台网记录在数据库中写入地震信息:2021年11月15日9时00分00秒陕西省宝鸡市眉县6.0级地震(108.02°E,34.13°N)。运行地震专题图自动出图软件,监视系统运行结果(图6);09:00:13系统触发成功,自动开始制作专题图;09:05:33专题图制作完成,产出A1、A3、A4、网站用途共4个幅面55张专题图(图7)。

    图  6  系统运行信息
    图  7  产出的地震专题图

    系统通过对开源GIS平台和微服务构架的研究,构建了陕西省地震专题图模板体系,实现了基于开源平台的地震应急专题图自动生成,降低了使用传统商业平台在软件开发、部署和运维方面的成本。同时采用微服务构架,实现了多个服务并行产出,也大大提高了系统产出效率和系统的稳定性,为地震应急第一时间获得各种地震应急专题图提供有效的技术支撑。

  • 图  1   系统流程图

    图  2   专题图模板分类

    图  3   地震应急专题图模板

    图  4   烈度衰减模型图

    图  5   微服务架构图

    图  6   系统运行信息

    图  7   产出的地震专题图

    表  1   地震事件表

    字段中文名格式备注
    CATALOG_ID地震IDVARCHAR2(50)字段内容为地震的编号
    O_TIME发震时刻DATE发震时刻精确到0.1 s
    EPI_LAT震中纬度DOUBLE地震发生的经度 
    EPI_LONG震中经度DOUBLE地震发生的纬度
    EPI_DEPTH震中深度DOUBLE地震发生的深度 
    LOC_NAME震中地名VARCHAR2(50)地震震中地名
    MAG震级DOUBLE该表中震级即为最终向社会公布的震级,精确到小数点后一位
    CLASS地震类别VARCHAR2(20)天然地震\演练地震\塌陷地震
     *表名为:DZYJ_CATALOG 用于存储地震三要素;地震编号为14位编码,格式为YYYYMMDDHHMMSS。
    下载: 导出CSV

    表  2   地震影响场表

    字段中文名格式备注
    CATALOG_ID地震IDVARCHAR2(50)字段内容为地震的ID号,不同地震ID不同
    YXC_ID影响场IDVARCHAR2(50)字段内容为地震的ID号,不同地震ID不同
    LIEDU烈度VARCHAR2(10)生成的影响场烈度
    MAJORAXIS长轴半径DOUBLE精确到小数点后1位
    MINORAXIS短轴半径DOUBLE精确到小数点后1位
    AREA面积DOUBLE精确到小数点后1位
     *表名为:DZYJ_YXC用于存储自动生成的地震影响场,一次地震事件只有一个自动地震影响场。
    下载: 导出CSV

    表  3   地震应急专题图任务表

    字段中文名格式备注
    CATALOG_ID影响场IDVARCHAR2(50)与影响场地震ID相同
    NAME专题图名称VARCHAR2(50)模板的名称
    PATH专题图路径VARCHAR2(50)模板存储的路径
    STATE专题图产出情况INT1代表已经产出、0代表未产出
    TIME出图时间DATE出图时间精确到秒。
    FLAG是否需要影响场INT1代表需要、0代表不需要
    CLASS模板类别VARCHAR2(50)天然地震\塌陷地震
    CATALOG_ID影响场IDVARCHAR2(50)与影响场地震ID相同
     *表名为:DZYJ_MAP用于存储地震对应的地震应急专题图任务列表。
    下载: 导出CSV

    表  4   陕西省地震烈度衰减参数

    区域名称L1L2L3L4S1S2S3S4
    陕西5.841 01.071 03.657 0153.944 01.071 02.845 07
    下载: 导出CSV
  • [1] 魏艳旭, 贾军鹏, 杨凡, 等. 河北省地震应急专题图模板化及快速出图技术研究[J]. 国际地震动态, 2016(6): 20-25. doi: 10.3969/j.issn.0253-4975.2016.06.004
    [2] 陈文凯, 孙艳萍, 周中红, 等. 甘肃省地震应急专题图的设计与实现[J]. 地震工程学报, 2015, 37(3): 884-889,900. doi: 10.3969/j.issn.1000-0844.2015.03.0884
    [3] 焦汉科, 黄悦, 曹凯滨. 开源GIS研究及应用初探[J]. 测绘通报, 2016(S2): 44-48. doi: 10.13474/j.cnki.11-2246.2016.0683
    [4] 马林兵, 周群, 焦汉科. 开源GIS项目引入高校GIS专业实验教学的探讨[J]. 高教论坛, 2014(5): 49-52. doi: 10.3969/j.issn.1671-9719.2014.05.014
    [5] 孔祥雪, 王万宁, 冯石, 等. QGIS在地震应急专题图绘制中的应用[J]. 黑龙江科学, 2021, 12(2): 106-107.
    [6] 方登茂, 张晓平, 刘梁. 基于PostGIS的矢量瓦片按需组装技术研究[J]. 城市勘测, 2021(5): 65-69. doi: 10.3969/j.issn.1672-8262.2021.05.014
    [7] 汪素云, 俞言祥, 高阿甲, 等. 中国分区地震动衰减关系的确定[J]. 中国地震, 2000, 16(2): 99-106. doi: 10.3969/j.issn.1001-4683.2000.02.001
    [8] 高孟潭. GB 18306-2015《中国地震动参数区划图》宣贯教材[M]. 北京: 中国质检出版社, 中国标准出版社, 2015.
  • 期刊类型引用(2)

    1. 张海洋. 2019年丰南4.5级地震前后岩石圈磁场水平矢量动态演化特征. 中国地震. 2024(02): 426-435 . 百度学术
    2. 彭莱,樊春燕,汪倩,蒋雨函,周启超,高小其. 中国地震断裂带CO_2观测研究现状. 中国地震. 2024(04): 733-751 . 百度学术

    其他类型引用(0)

图(7)  /  表(4)
计量
  • 文章访问数:  2423
  • HTML全文浏览量:  1176
  • PDF下载量:  35
  • 被引次数: 2
出版历程
  • 收稿日期:  2022-02-07
  • 网络出版日期:  2022-10-10
  • 刊出日期:  2022-10-30

目录

/

返回文章
返回