基于PowerDesigner的河南地震灾情信息管理系统的数据库设计
2022-07-22王斐斐韩贞辉李晓阳
樊 华,王斐斐,韩贞辉,李晓阳
(河南省地震局, 郑州 450018)
0 引言
地震灾害具有突发性和不可预测性,且易产生严重次生灾害,对人类社会生活产生较大影响。因此,采取有效的地震灾后救援对减轻地震灾害影响具有非常重要的意义,而震后的灾情收集与处理分析就成为开展应急救援的重中之重。
地震应急救援的首要基础是震后快速获取灾区的各种灾情信息。震后灾情获取的速度影响着政府对灾情信息的了解程度,也影响着救灾工作的开展规模和力度[1]。震后,省级地震部门通过各种途径,迅速了解和收集地震破坏或影响情况,按时限将灾情信息上报中国地震局,同时报告省人民政府。
地震灾情信息快速获取、评估、上报工作是地震应急救援工作中非常重要的环节[2]。河南省地震局于2019年印发《河南省地震系统地震灾情快速收集处置预案》,明确了灾情报送原则、报送流程、报送内容等,并提出“探索使用新技术、新方法开展灾情快速收集工作”。
随着科技的发展,灾情上报与收集的手段也逐渐多元化和自动化,灾情数据的处理也更加智能,因此,河南省内地震灾情信息管理系统的建立显得尤为重要,作为系统核心的数据库设计也是重中之重。许多专家学者也对此做了研究和探索,比如左天惠等[3]开发的基于Android的广西地震信息推送与灾情收集系统采用开源的MySQL管理数据库,因其属于关联数据库管理系统,可将数据保存在不同的表中,提高了速度和灵活性;陈维锋等[4]采用Oracle数据库和ArcGIS软件,完成四川地震灾情数据建库和综合管理;刘文等[5]建立了基于Oracle10的Spring架构,Spring结合Hibernate的持久化功能,无缝对接Oracle,Spring的灵活性也方便数据库后续的更改。上述方法都对地震灾情信息数据库建设进行了讨论和研究,但是多偏重对数据库的管理,对数据库的逻辑设计以及快速化建库缺少较细致的讨论。本文将基于PowerDesigner的数据库分析建模功能,对地震灾情信息数据库进行逻辑设计,并利用SQL和Python设计语言实现基于PostgreSQL的快速建库,为提高省内地震灾情收集效率和辅助应急人员进行快速科学决策服务。
PowerDesigner是Sybase公司的CASE工具集,软件几乎包含了数据库模型设计的全过程。使用该软件能够智能地进行管理系统设计分析,它将对象设计、数据库设计和关系数据库无缝地集成在一起,提供完整的企业分布式应用系统的分析设计功能和建模解决方案,具有生成面向对象模型OOM、概念数据模型CDM、物理数据模型PDM的建模功能[6]。
PowerDesigner支持许多流行的数据库设计和开发环境,如Oracle、PostgreSQL、MySQL等。本文基于该软件设计河南省地震灾情数据库表及其表之间的关联,通过SQL和Python语言,将Power Designer的PDM对接PostgreSQL,实现智能化快速建库,后期将基于PostgreSQL和PostGIS进行管理应用。
1 地震灾情数据库分析
为满足灾情信息的分析和成图需求,数据库应具备以下几项功能:①GIS化,空间属性信息是地震数据的标配,GIS有利于数据应用和共享;②规范化,规范准确的灾情信息可以充分满足灾情评估和减灾防灾的工作需求;③可扩展化,即灾情数据库在结构上具有可扩展性[7]。
灾情信息数据库与其他数据库相比,其中行政区划、地震影响场等空间数据和灾情等属性数据之间需要建立合理的连接,所以数据库须支持非结构化几何数据,比如行政区划图等。目前较为普遍的方法一种是运用空间数据库引擎技术完成不同平台之间的数据传递;另外一种是数据库生产商通过扩展功能模块实现空间数据存储管理[8],比如PostgreSQL的空间对象扩展模块PostGIS。本文使用第二种方法。
经过详细的需求调研和分析,该数据库设计基于以下5个模块进行设计:①灾情速报员、灾情评估员等用户信息模块;②地震发布情况模块;③灾情收集与上报信息模块;④统计报表模块;⑤灾情渲染图模块。
2 数据库设计方案
2.1 可视化建模工具分析
数据库采用PowerDesigner进行建模设计。基于该软件的强大设计功能和可视化操作界面,可以快捷地编写数据库表结构,并搭建表关系,将复杂的数据库代码变为一目了然的数据库表,使得在数据库前期的设计中能够清晰地梳理复杂的数据库表结构与表关系(图1)。
图1 PowerDesigner操作界面
2.2 数据分类
本文梳理了震后地震灾情收集各步骤之间的关系(图2),为创建物理数据模型(PDM)理清思路。将数据分为基础数据和操纵数据。基础数据包含基础地理数据、人员信息数据和计算数据等;操纵数据,又分为输入数据和导入数据,输入数据是灾情收集表的主要来源,导入数据包含图件、文档以及GIS中产出的矢量数据等(表1)。
表1 数据分类表
图2 震后灾情信息收集流程
2.3 建立物理数据模型
选择使用PowerDesigner直接创建物理数据模型(PDM),配置数据库链接PostgreSQL,并重点应用其扩展模块PostGIS的空间信息服务功能。
2.3.1 数据库主表设计
人员信息中的灾情速报员和灾情评估员的属性数据需空间化处理,属性表中坐标信息属性必填(Mandatory),便于震后系统提取震区人员信息以及在地图上的分布展示。
灾情收集表是整个数据库表的核心,为整个数据库的主表,其结构的合理性影响着后续的产出。为满足数据分析与应用,灾情收集表主要包含震区人员信息、有感程度、人员伤亡情况、经济社会影响和空间信息等信息储存字段(表2)。
表2 灾情收集表属性
User_id为所有人员编号,包含灾情速报员、灾情评估员、相关领导和后台信息管理人员,此项具有唯一属性;地震事件采用日期和时间的阿拉伯数字编号,即:YYYYMMDDHHMMSS,此编号也视作地震事件的唯一编号;上报类型分首报和续报;有感程度分4个类型:①无明显震感,②轻微有感,③明显有感,④强有感;表中第二至七栏,属性为非空。
基于灾情的协同机制,对灾情信息获取设计了2种方式:①向下收集,以这种方式为主,即由后台信息管理员(灾情收集员)根据地震影响场提取的地震影响范围内灾情速报员信息列表,主动拨打电话并录入灾情信息;②向上上报,即震区灾情速报员可在震后主动登录系统(微信小程序),自动定位并填写信息上报。
综合以上2种方式产出灾情收集表信息,利用灾情统计分析,生成灾情统计报表,报表可为灾情报告和灾情图件提供数据基础。
2.3.2 外部开发需求
由于该灾情管理系统平台基于微信小程序,考虑到用户接入信息,需设计详细的用户表,主要包含用户基本信息、用户登录信息及账户操作信息。
用户基本信息来自上一部分的人员信息表,用户登录信息和账户操作信息则是登录微信小程序后获取的数据信息。为了简洁设置,将后2项整合在一个表里,即用户账号信息表,包含用户登录小程序并授权后所获取的数据字段,如表面可见的账号基本信息:微信名、昵称、头像、性别、手机号等,以及隐藏代码:临时登录凭证和用户唯一标识;账户状态信息(可用/关闭)和首次、末次登录时间等也是必设字段。
2.4 数据库表设计及各类数据间的关联关系
基于以上研究,本文共设计了灾情收集表、地震事件表、人员信息表、地震影响表、有感范围采样点表、有感范围表、灾情报告表、当前人员信息表、用户账号信息表等共计9个数据库表用于地震灾情信息管理系统(图3)。其中地震事件表、地震影响场表、当前地震人员表、灾情收集表、有感范围采样点表、有感范围表和灾情报告表通过地震事件进行关联;人员信息表、当前地震人员表、用户账号信息通过人员编号关联。人员编号因为其唯一性且不可更新,均设置为其所在表的主键(primary key),地震事件(编号)作为主要的外键(foreign key)建立了各表之间的关联。
图3 灾情信息数据库PDM
3 数据库生成
PowerDesigner将设计好的物理数据模型生成SQL脚本文件,进行该项操作前需先确认当前数据库DBMS设置为PostgreSQL,然后使用生成数据库(Generate Database)功能将物理数据模型生成SQL语句并储存,用于存取数据以及查询、更新和管理灾情信息数据库(图4)。
图4 PowerDesigner生成数据库
为了与开源GIS二次开发更好的衔接,在数据库模型建立之后,选择使用Python设计语言对PostgreSQL数据库表进行后续操作,可在Python中链接PostgreSQL并写入SQL语句,完成数据库表的快速建立。
4 数据库应用
数据库应用于河南地震灾情信息管理系统。该系统是一套基于开源GIS的灾情信息管理系统,针对现阶段省内地震应急工作中存在的灾情收集效率不高的问题,以小程序为平台,使灾情信息收集多元化、精准化,数据分析处理智能化,地震灾情信息展示可视化,并能够较为及时地产出震后相关报告,有效地辅助应急人员进行快速科学决策,提高地震灾情收集效率、提升地震应急指挥能力。数据库在PowerDesigner结构设计后,使用Python的轻量化web框架flask搭建,flask框架作为桥梁连接了小程序与PostgreSQL灾情数据库。
选取2021年3月7日河南南阳(33.42°N,111.28°E)3.0级地震数据测试数据库在系统中的应用效果。系统获取地震三要素后,调用地震影响场表,生成预估影响范围,并根据面积均分为4个象限(图5彩色圈),方便收集工作的分配。根据影响范围,从库中的人员信息表中检索出坐标落在该范围内的人员信息,即“当前人员信息表”;点击某一人员位置点,即可获取人员信息;支持一键获取手机号并拨打,以及代为填写灾情收集表(图5)。
图5 地震灾情信息管理系统应用效果展示图
查询预估影响范围内的人员信息关键代码如下:
灾情信息保存在灾情收集表中,该表系统展示如图6,系统统计信息后根据灾情报告模板产出《省内地震灾情速报》(图7),
图6 灾情收集表页面
图7 省内地震灾情速报
部分调用代码如下:
5 结论与展望
1)数据库设计是河南地震灾情信息管理系统开发的重要环节,PowerDesigner的模型设计功能提供了强大的平台,物理数据模型的建立将抽象的代码变为可视化的关系图,大大方便了数据库各个库表内容的整理及表间关系的梳理,提高了设计效率。
2)通过对地震灾情信息管理系统的需求分析,建立物理数据模型,明确各表所包含内容,梳理各表间的属性关系,应用于PostgreSQL,实现了灾情信息数据库的建立。
3)数据库为地震灾情信息管理系统提供了数据“仓库”,建立了灾情数据的资源目录,方便数据共享,震后灾情数据可通过数据库供应急专题图等系统使用;实现了数据的集中控制与管理,PostgreSQL特有的空间对象扩展模块PostGIS可以较好地管理地震灾情中的大量空间矢量数据,沉淀了数据库的元数据信息,使信息可复用、有价值。
4)数据库服务于地震灾情信息管理系统,目的是提高河南省内灾情信息的收集效率。经过数次省内2.0级以上真实地震的测试,使用效果较好,主要表现在2个方面:①快速选定预估有感范围内灾情速报员信息,并支持一键拨打电话以及代报灾情,提高了灾情获取的效率;②快速整合分析已收集信息,并导出简报,提高快速辅助决策的效率。
5)数据库的建设是一项长期的过程,数据库内容、数据结构、数据库涉及范围等多方面都是在不断发展和进步中,后期还需要结合河南省地震灾情管理现状,不断完善和改进,为“地震灾情信息管理系统”做好基础工作建设,为河南省“灾情收集手段多元化和自动化、灾情数据处理智能化”服务。