樊 華,王斐斐,韓貞輝,李曉陽(yáng)
(河南省地震局, 鄭州 450018)
地震災(zāi)害具有突發(fā)性和不可預(yù)測(cè)性,且易產(chǎn)生嚴(yán)重次生災(zāi)害,對(duì)人類(lèi)社會(huì)生活產(chǎn)生較大影響。因此,采取有效的地震災(zāi)后救援對(duì)減輕地震災(zāi)害影響具有非常重要的意義,而震后的災(zāi)情收集與處理分析就成為開(kāi)展應(yīng)急救援的重中之重。
地震應(yīng)急救援的首要基礎(chǔ)是震后快速獲取災(zāi)區(qū)的各種災(zāi)情信息。震后災(zāi)情獲取的速度影響著政府對(duì)災(zāi)情信息的了解程度,也影響著救災(zāi)工作的開(kāi)展規(guī)模和力度[1]。震后,省級(jí)地震部門(mén)通過(guò)各種途徑,迅速了解和收集地震破壞或影響情況,按時(shí)限將災(zāi)情信息上報(bào)中國(guó)地震局,同時(shí)報(bào)告省人民政府。
地震災(zāi)情信息快速獲取、評(píng)估、上報(bào)工作是地震應(yīng)急救援工作中非常重要的環(huán)節(jié)[2]。河南省地震局于2019年印發(fā)《河南省地震系統(tǒng)地震災(zāi)情快速收集處置預(yù)案》,明確了災(zāi)情報(bào)送原則、報(bào)送流程、報(bào)送內(nèi)容等,并提出“探索使用新技術(shù)、新方法開(kāi)展災(zāi)情快速收集工作”。
隨著科技的發(fā)展,災(zāi)情上報(bào)與收集的手段也逐漸多元化和自動(dòng)化,災(zāi)情數(shù)據(jù)的處理也更加智能,因此,河南省內(nèi)地震災(zāi)情信息管理系統(tǒng)的建立顯得尤為重要,作為系統(tǒng)核心的數(shù)據(jù)庫(kù)設(shè)計(jì)也是重中之重。許多專(zhuān)家學(xué)者也對(duì)此做了研究和探索,比如左天惠等[3]開(kāi)發(fā)的基于Android的廣西地震信息推送與災(zāi)情收集系統(tǒng)采用開(kāi)源的MySQL管理數(shù)據(jù)庫(kù),因其屬于關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),可將數(shù)據(jù)保存在不同的表中,提高了速度和靈活性;陳維鋒等[4]采用Oracle數(shù)據(jù)庫(kù)和ArcGIS軟件,完成四川地震災(zāi)情數(shù)據(jù)建庫(kù)和綜合管理;劉文等[5]建立了基于Oracle10的Spring架構(gòu),Spring結(jié)合Hibernate的持久化功能,無(wú)縫對(duì)接Oracle,Spring的靈活性也方便數(shù)據(jù)庫(kù)后續(xù)的更改。上述方法都對(duì)地震災(zāi)情信息數(shù)據(jù)庫(kù)建設(shè)進(jìn)行了討論和研究,但是多偏重對(duì)數(shù)據(jù)庫(kù)的管理,對(duì)數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)以及快速化建庫(kù)缺少較細(xì)致的討論。本文將基于PowerDesigner的數(shù)據(jù)庫(kù)分析建模功能,對(duì)地震災(zāi)情信息數(shù)據(jù)庫(kù)進(jìn)行邏輯設(shè)計(jì),并利用SQL和Python設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)基于PostgreSQL的快速建庫(kù),為提高省內(nèi)地震災(zāi)情收集效率和輔助應(yīng)急人員進(jìn)行快速科學(xué)決策服務(wù)。
PowerDesigner是Sybase公司的CASE工具集,軟件幾乎包含了數(shù)據(jù)庫(kù)模型設(shè)計(jì)的全過(guò)程。使用該軟件能夠智能地進(jìn)行管理系統(tǒng)設(shè)計(jì)分析,它將對(duì)象設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)和關(guān)系數(shù)據(jù)庫(kù)無(wú)縫地集成在一起,提供完整的企業(yè)分布式應(yīng)用系統(tǒng)的分析設(shè)計(jì)功能和建模解決方案,具有生成面向?qū)ο竽P蚈OM、概念數(shù)據(jù)模型CDM、物理數(shù)據(jù)模型PDM的建模功能[6]。
PowerDesigner支持許多流行的數(shù)據(jù)庫(kù)設(shè)計(jì)和開(kāi)發(fā)環(huán)境,如Oracle、PostgreSQL、MySQL等。本文基于該軟件設(shè)計(jì)河南省地震災(zāi)情數(shù)據(jù)庫(kù)表及其表之間的關(guān)聯(lián),通過(guò)SQL和Python語(yǔ)言,將Power Designer的PDM對(duì)接PostgreSQL,實(shí)現(xiàn)智能化快速建庫(kù),后期將基于PostgreSQL和PostGIS進(jìn)行管理應(yīng)用。
為滿(mǎn)足災(zāi)情信息的分析和成圖需求,數(shù)據(jù)庫(kù)應(yīng)具備以下幾項(xiàng)功能:①GIS化,空間屬性信息是地震數(shù)據(jù)的標(biāo)配,GIS有利于數(shù)據(jù)應(yīng)用和共享;②規(guī)范化,規(guī)范準(zhǔn)確的災(zāi)情信息可以充分滿(mǎn)足災(zāi)情評(píng)估和減災(zāi)防災(zāi)的工作需求;③可擴(kuò)展化,即災(zāi)情數(shù)據(jù)庫(kù)在結(jié)構(gòu)上具有可擴(kuò)展性[7]。
災(zāi)情信息數(shù)據(jù)庫(kù)與其他數(shù)據(jù)庫(kù)相比,其中行政區(qū)劃、地震影響場(chǎng)等空間數(shù)據(jù)和災(zāi)情等屬性數(shù)據(jù)之間需要建立合理的連接,所以數(shù)據(jù)庫(kù)須支持非結(jié)構(gòu)化幾何數(shù)據(jù),比如行政區(qū)劃圖等。目前較為普遍的方法一種是運(yùn)用空間數(shù)據(jù)庫(kù)引擎技術(shù)完成不同平臺(tái)之間的數(shù)據(jù)傳遞;另外一種是數(shù)據(jù)庫(kù)生產(chǎn)商通過(guò)擴(kuò)展功能模塊實(shí)現(xiàn)空間數(shù)據(jù)存儲(chǔ)管理[8],比如PostgreSQL的空間對(duì)象擴(kuò)展模塊PostGIS。本文使用第二種方法。
經(jīng)過(guò)詳細(xì)的需求調(diào)研和分析,該數(shù)據(jù)庫(kù)設(shè)計(jì)基于以下5個(gè)模塊進(jìn)行設(shè)計(jì):①災(zāi)情速報(bào)員、災(zāi)情評(píng)估員等用戶(hù)信息模塊;②地震發(fā)布情況模塊;③災(zāi)情收集與上報(bào)信息模塊;④統(tǒng)計(jì)報(bào)表模塊;⑤災(zāi)情渲染圖模塊。
數(shù)據(jù)庫(kù)采用PowerDesigner進(jìn)行建模設(shè)計(jì)?;谠撥浖膹?qiáng)大設(shè)計(jì)功能和可視化操作界面,可以快捷地編寫(xiě)數(shù)據(jù)庫(kù)表結(jié)構(gòu),并搭建表關(guān)系,將復(fù)雜的數(shù)據(jù)庫(kù)代碼變?yōu)橐荒苛巳坏臄?shù)據(jù)庫(kù)表,使得在數(shù)據(jù)庫(kù)前期的設(shè)計(jì)中能夠清晰地梳理復(fù)雜的數(shù)據(jù)庫(kù)表結(jié)構(gòu)與表關(guān)系(圖1)。
圖1 PowerDesigner操作界面
本文梳理了震后地震災(zāi)情收集各步驟之間的關(guān)系(圖2),為創(chuàng)建物理數(shù)據(jù)模型(PDM)理清思路。將數(shù)據(jù)分為基礎(chǔ)數(shù)據(jù)和操縱數(shù)據(jù)?;A(chǔ)數(shù)據(jù)包含基礎(chǔ)地理數(shù)據(jù)、人員信息數(shù)據(jù)和計(jì)算數(shù)據(jù)等;操縱數(shù)據(jù),又分為輸入數(shù)據(jù)和導(dǎo)入數(shù)據(jù),輸入數(shù)據(jù)是災(zāi)情收集表的主要來(lái)源,導(dǎo)入數(shù)據(jù)包含圖件、文檔以及GIS中產(chǎn)出的矢量數(shù)據(jù)等(表1)。
表1 數(shù)據(jù)分類(lèi)表
圖2 震后災(zāi)情信息收集流程
選擇使用PowerDesigner直接創(chuàng)建物理數(shù)據(jù)模型(PDM),配置數(shù)據(jù)庫(kù)鏈接PostgreSQL,并重點(diǎn)應(yīng)用其擴(kuò)展模塊PostGIS的空間信息服務(wù)功能。
2.3.1 數(shù)據(jù)庫(kù)主表設(shè)計(jì)
人員信息中的災(zāi)情速報(bào)員和災(zāi)情評(píng)估員的屬性數(shù)據(jù)需空間化處理,屬性表中坐標(biāo)信息屬性必填(Mandatory),便于震后系統(tǒng)提取震區(qū)人員信息以及在地圖上的分布展示。
災(zāi)情收集表是整個(gè)數(shù)據(jù)庫(kù)表的核心,為整個(gè)數(shù)據(jù)庫(kù)的主表,其結(jié)構(gòu)的合理性影響著后續(xù)的產(chǎn)出。為滿(mǎn)足數(shù)據(jù)分析與應(yīng)用,災(zāi)情收集表主要包含震區(qū)人員信息、有感程度、人員傷亡情況、經(jīng)濟(jì)社會(huì)影響和空間信息等信息儲(chǔ)存字段(表2)。
表2 災(zāi)情收集表屬性
User_id為所有人員編號(hào),包含災(zāi)情速報(bào)員、災(zāi)情評(píng)估員、相關(guān)領(lǐng)導(dǎo)和后臺(tái)信息管理人員,此項(xiàng)具有唯一屬性;地震事件采用日期和時(shí)間的阿拉伯?dāng)?shù)字編號(hào),即:YYYYMMDDHHMMSS,此編號(hào)也視作地震事件的唯一編號(hào);上報(bào)類(lèi)型分首報(bào)和續(xù)報(bào);有感程度分4個(gè)類(lèi)型:①無(wú)明顯震感,②輕微有感,③明顯有感,④強(qiáng)有感;表中第二至七欄,屬性為非空。
基于災(zāi)情的協(xié)同機(jī)制,對(duì)災(zāi)情信息獲取設(shè)計(jì)了2種方式:①向下收集,以這種方式為主,即由后臺(tái)信息管理員(災(zāi)情收集員)根據(jù)地震影響場(chǎng)提取的地震影響范圍內(nèi)災(zāi)情速報(bào)員信息列表,主動(dòng)撥打電話并錄入災(zāi)情信息;②向上上報(bào),即震區(qū)災(zāi)情速報(bào)員可在震后主動(dòng)登錄系統(tǒng)(微信小程序),自動(dòng)定位并填寫(xiě)信息上報(bào)。
綜合以上2種方式產(chǎn)出災(zāi)情收集表信息,利用災(zāi)情統(tǒng)計(jì)分析,生成災(zāi)情統(tǒng)計(jì)報(bào)表,報(bào)表可為災(zāi)情報(bào)告和災(zāi)情圖件提供數(shù)據(jù)基礎(chǔ)。
2.3.2 外部開(kāi)發(fā)需求
由于該災(zāi)情管理系統(tǒng)平臺(tái)基于微信小程序,考慮到用戶(hù)接入信息,需設(shè)計(jì)詳細(xì)的用戶(hù)表,主要包含用戶(hù)基本信息、用戶(hù)登錄信息及賬戶(hù)操作信息。
用戶(hù)基本信息來(lái)自上一部分的人員信息表,用戶(hù)登錄信息和賬戶(hù)操作信息則是登錄微信小程序后獲取的數(shù)據(jù)信息。為了簡(jiǎn)潔設(shè)置,將后2項(xiàng)整合在一個(gè)表里,即用戶(hù)賬號(hào)信息表,包含用戶(hù)登錄小程序并授權(quán)后所獲取的數(shù)據(jù)字段,如表面可見(jiàn)的賬號(hào)基本信息:微信名、昵稱(chēng)、頭像、性別、手機(jī)號(hào)等,以及隱藏代碼:臨時(shí)登錄憑證和用戶(hù)唯一標(biāo)識(shí);賬戶(hù)狀態(tài)信息(可用/關(guān)閉)和首次、末次登錄時(shí)間等也是必設(shè)字段。
基于以上研究,本文共設(shè)計(jì)了災(zāi)情收集表、地震事件表、人員信息表、地震影響表、有感范圍采樣點(diǎn)表、有感范圍表、災(zāi)情報(bào)告表、當(dāng)前人員信息表、用戶(hù)賬號(hào)信息表等共計(jì)9個(gè)數(shù)據(jù)庫(kù)表用于地震災(zāi)情信息管理系統(tǒng)(圖3)。其中地震事件表、地震影響場(chǎng)表、當(dāng)前地震人員表、災(zāi)情收集表、有感范圍采樣點(diǎn)表、有感范圍表和災(zāi)情報(bào)告表通過(guò)地震事件進(jìn)行關(guān)聯(lián);人員信息表、當(dāng)前地震人員表、用戶(hù)賬號(hào)信息通過(guò)人員編號(hào)關(guān)聯(lián)。人員編號(hào)因?yàn)槠湮ㄒ恍郧也豢筛拢O(shè)置為其所在表的主鍵(primary key),地震事件(編號(hào))作為主要的外鍵(foreign key)建立了各表之間的關(guān)聯(lián)。
圖3 災(zāi)情信息數(shù)據(jù)庫(kù)PDM
PowerDesigner將設(shè)計(jì)好的物理數(shù)據(jù)模型生成SQL腳本文件,進(jìn)行該項(xiàng)操作前需先確認(rèn)當(dāng)前數(shù)據(jù)庫(kù)DBMS設(shè)置為PostgreSQL,然后使用生成數(shù)據(jù)庫(kù)(Generate Database)功能將物理數(shù)據(jù)模型生成SQL語(yǔ)句并儲(chǔ)存,用于存取數(shù)據(jù)以及查詢(xún)、更新和管理災(zāi)情信息數(shù)據(jù)庫(kù)(圖4)。
圖4 PowerDesigner生成數(shù)據(jù)庫(kù)
為了與開(kāi)源GIS二次開(kāi)發(fā)更好的銜接,在數(shù)據(jù)庫(kù)模型建立之后,選擇使用Python設(shè)計(jì)語(yǔ)言對(duì)PostgreSQL數(shù)據(jù)庫(kù)表進(jìn)行后續(xù)操作,可在Python中鏈接PostgreSQL并寫(xiě)入SQL語(yǔ)句,完成數(shù)據(jù)庫(kù)表的快速建立。
數(shù)據(jù)庫(kù)應(yīng)用于河南地震災(zāi)情信息管理系統(tǒng)。該系統(tǒng)是一套基于開(kāi)源GIS的災(zāi)情信息管理系統(tǒng),針對(duì)現(xiàn)階段省內(nèi)地震應(yīng)急工作中存在的災(zāi)情收集效率不高的問(wèn)題,以小程序?yàn)槠脚_(tái),使災(zāi)情信息收集多元化、精準(zhǔn)化,數(shù)據(jù)分析處理智能化,地震災(zāi)情信息展示可視化,并能夠較為及時(shí)地產(chǎn)出震后相關(guān)報(bào)告,有效地輔助應(yīng)急人員進(jìn)行快速科學(xué)決策,提高地震災(zāi)情收集效率、提升地震應(yīng)急指揮能力。數(shù)據(jù)庫(kù)在PowerDesigner結(jié)構(gòu)設(shè)計(jì)后,使用Python的輕量化web框架flask搭建,flask框架作為橋梁連接了小程序與PostgreSQL災(zāi)情數(shù)據(jù)庫(kù)。
選取2021年3月7日河南南陽(yáng)(33.42°N,111.28°E)3.0級(jí)地震數(shù)據(jù)測(cè)試數(shù)據(jù)庫(kù)在系統(tǒng)中的應(yīng)用效果。系統(tǒng)獲取地震三要素后,調(diào)用地震影響場(chǎng)表,生成預(yù)估影響范圍,并根據(jù)面積均分為4個(gè)象限(圖5彩色圈),方便收集工作的分配。根據(jù)影響范圍,從庫(kù)中的人員信息表中檢索出坐標(biāo)落在該范圍內(nèi)的人員信息,即“當(dāng)前人員信息表”;點(diǎn)擊某一人員位置點(diǎn),即可獲取人員信息;支持一鍵獲取手機(jī)號(hào)并撥打,以及代為填寫(xiě)災(zāi)情收集表(圖5)。
圖5 地震災(zāi)情信息管理系統(tǒng)應(yīng)用效果展示圖
查詢(xún)預(yù)估影響范圍內(nèi)的人員信息關(guān)鍵代碼如下:
災(zāi)情信息保存在災(zāi)情收集表中,該表系統(tǒng)展示如圖6,系統(tǒng)統(tǒng)計(jì)信息后根據(jù)災(zāi)情報(bào)告模板產(chǎn)出《省內(nèi)地震災(zāi)情速報(bào)》(圖7),
圖6 災(zāi)情收集表頁(yè)面
圖7 省內(nèi)地震災(zāi)情速報(bào)
部分調(diào)用代碼如下:
1)數(shù)據(jù)庫(kù)設(shè)計(jì)是河南地震災(zāi)情信息管理系統(tǒng)開(kāi)發(fā)的重要環(huán)節(jié),PowerDesigner的模型設(shè)計(jì)功能提供了強(qiáng)大的平臺(tái),物理數(shù)據(jù)模型的建立將抽象的代碼變?yōu)榭梢暬年P(guān)系圖,大大方便了數(shù)據(jù)庫(kù)各個(gè)庫(kù)表內(nèi)容的整理及表間關(guān)系的梳理,提高了設(shè)計(jì)效率。
2)通過(guò)對(duì)地震災(zāi)情信息管理系統(tǒng)的需求分析,建立物理數(shù)據(jù)模型,明確各表所包含內(nèi)容,梳理各表間的屬性關(guān)系,應(yīng)用于PostgreSQL,實(shí)現(xiàn)了災(zāi)情信息數(shù)據(jù)庫(kù)的建立。
3)數(shù)據(jù)庫(kù)為地震災(zāi)情信息管理系統(tǒng)提供了數(shù)據(jù)“倉(cāng)庫(kù)”,建立了災(zāi)情數(shù)據(jù)的資源目錄,方便數(shù)據(jù)共享,震后災(zāi)情數(shù)據(jù)可通過(guò)數(shù)據(jù)庫(kù)供應(yīng)急專(zhuān)題圖等系統(tǒng)使用;實(shí)現(xiàn)了數(shù)據(jù)的集中控制與管理,PostgreSQL特有的空間對(duì)象擴(kuò)展模塊PostGIS可以較好地管理地震災(zāi)情中的大量空間矢量數(shù)據(jù),沉淀了數(shù)據(jù)庫(kù)的元數(shù)據(jù)信息,使信息可復(fù)用、有價(jià)值。
4)數(shù)據(jù)庫(kù)服務(wù)于地震災(zāi)情信息管理系統(tǒng),目的是提高河南省內(nèi)災(zāi)情信息的收集效率。經(jīng)過(guò)數(shù)次省內(nèi)2.0級(jí)以上真實(shí)地震的測(cè)試,使用效果較好,主要表現(xiàn)在2個(gè)方面:①快速選定預(yù)估有感范圍內(nèi)災(zāi)情速報(bào)員信息,并支持一鍵撥打電話以及代報(bào)災(zāi)情,提高了災(zāi)情獲取的效率;②快速整合分析已收集信息,并導(dǎo)出簡(jiǎn)報(bào),提高快速輔助決策的效率。
5)數(shù)據(jù)庫(kù)的建設(shè)是一項(xiàng)長(zhǎng)期的過(guò)程,數(shù)據(jù)庫(kù)內(nèi)容、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫(kù)涉及范圍等多方面都是在不斷發(fā)展和進(jìn)步中,后期還需要結(jié)合河南省地震災(zāi)情管理現(xiàn)狀,不斷完善和改進(jìn),為“地震災(zāi)情信息管理系統(tǒng)”做好基礎(chǔ)工作建設(shè),為河南省“災(zāi)情收集手段多元化和自動(dòng)化、災(zāi)情數(shù)據(jù)處理智能化”服務(wù)。