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