?

震情報告自動產出軟件的設計與實現

2023-12-23 05:37甄宇同顧寶剛王麗杰
防災減災學報 2023年4期
關鍵詞:海城市速報特刊

甄宇同,葉 浩,杜 微,顧寶剛,王麗杰

(海城市地震臺,遼寧 海城 114200)

0 引言

1975 年海城7.3 級地震發生后,海城老震區微震、小震不斷,中強地震頻發,由于民眾防震減災意識不斷提高,這也對海城市地震工作提出了更高的要求。海城市地震臺承擔著向海城市市委、市政府、市地震局等上級主管單位報送震后應急和地震會商材料等任務。

為了能夠及時準確地上報震情信息,根據實際工作專門研發了一套震情報告自動產出軟件,實現快速產出震情文字材料,避免出現由于人工因素存在的問題,提高工作效率,為地震應急決策提供依據[1-4]。

1 軟件設計

1.1 開發思路

震情報告自動產出軟件基于Visual Basic和Python 兩種編程語言開發,整體架構使用多進程、多線程的工作模式,各項功能采用流程化的結構設計。使用Visual Basic語言開發了地震速報信息與地震目錄獲取、地震目錄處理和Word 文檔編輯等功能,使用Python 語言開發了向企業微信推送文件的功能。

軟件模塊充分考慮功能獨立、代碼復用的原則,每個模塊獨立封裝自身參數、方法,并單獨編譯[5]。軟件開發過程中使用了大量控件、類庫和API 函數,增強可操作性,無需安裝其他輔助軟件即可實現相關功能[6]。同時使用了看門狗技術,避免意外崩潰而影響軟件的正常運行。絕大多數參數(如臺站經緯度、震中距、起始震級、地震目錄范圍等)用戶可根據實際需求自行設定,軟件的可擴展性得到大幅提高。

1.2 流程設計

震情報告自動產出軟件自動產出的震情報告包括兩個文檔,一是向海城市市委市政府、應急管理服務中心報送的《震情匯報》,主要是根據每月、每周的地震會商匯總上月或上周海城老震區、省內及鄰區、國內、國外的地震目錄、宏觀異常和分析意見等內容;二是震后向鞍山市地震局報送的《震情特刊》,包括地震簡訊、宏微觀異常及綜合分析意見等內容。因兩個文檔的觸發機制、數據源和文件內容等均不相同,故采取了兩種不同的設計流程。

《震情匯報》的產出采取定時觸發機制,即用戶可以設置每月(月報)、每周(周報)的特定時間產出報告。數據源為中國地震臺網中心的地震目錄數據庫,首先由軟件定時自動下載不同震級下限的地震目錄文件,然后對下載后的地震目錄按設置參數(發震起止日期、起始震級、震中名稱、經緯度范圍、震中距等)自動篩選和格式處理,導入缺省或在日常工作中記錄的宏觀異常等內容,最后對標題、地震目錄列表等文字信息進行自動格式化排版,產出Word文檔。

圖1 軟件工作流程圖Fig.1 Software working flow chart

《震情特刊》的產出采取地震觸發機制,即接收到地震速報信息后根據設定的參數達到報告產出的條件則產出《震情特刊》。數據源為遼寧臺網發布的地震速報短信,首先由地震速報短信接收設備負責接收遼寧臺網推送的地震速報短信(這里不再詳述),本軟件對短信內容進行格式化處理提取地震三要素等信息,然后根據設置參數判斷是否符合產出報告條件,若符合條件則調用《震情特刊》Word 文檔編輯模塊產出報告。

報告產出后存儲在本地指定目錄,最后將報告手動或自動推送給指定人員即完成了整個流程。報告推送的方式有兩種,一是調用企業微信推送可執行程序發送給指定企業微信用戶;二是通過電子郵件方式推送指定收件人,如圖1所示。

2 軟件功能實現

震情報告自動產出軟件按照設計流程和預設模板自動產出和推送報告,為實現自動數據獲取、數據處理、文檔編輯和自動發送功能,使用了多個Timer 控件。軟件同時還具備手動產出功能,可在需要時立即手動產出報告。這里以《震情匯報》為例主要介紹創建模板和報告自動推送的相關技術和方法。

2.1 創建模板

在Visual Basic 調用Word 之前,需要先引入Microsoft Word 16.0 Object Library 對象庫[7-8]才能便捷地以Word 為對象編程,然后建立Application 對象和Document 對象。報告內容部分包括紅頭標識和期數、海城老震區地震活動、省內及鄰區(ML≥2.0)、國內(MS≥5.0)、國外(MS≥7.0)、宏觀異常、分析意見和報送單位等部分。正文部分涉及震中距計算、震中所在鄉鎮名稱獲取的有關技術和算法不再詳述。軟件可預設缺省的宏觀異常和分析意見,也可進行手動編輯。

2.2 核心流程實現

以《震情匯報》的定期自動產出為例,其核心流程包括地震目錄下載、按條件篩選地震、導入缺省或在日常工作中記錄的宏觀異常記錄文本和報告推送(2.3節)等。

地震目錄數據的下載基于FTP 協議,其步驟為啟動與遠程主機建立連接,然后向遠程主機發出傳輸命令,遠程主機在收到命令后給予響應,并執行正確的命令。

地震目錄篩選步驟為:首先讀取發震日期、震中位置字符串,如篩選2022 年8 月份海城市發生的地震,則逐行讀取地震目錄文件截取發震日期字符串并將其轉變為數值類型,條件為:20220801≤Date≤20220831,同時查找震中位置字符串中是否包含“鞍山市海城市”字符,若符合這兩個條件則保存至Haicheng202208.EQT文件,再讀取該文件進行震級區間次數統計并根據冒泡算法篩選出最大地震。

宏觀異常記錄部分由軟件提供錄入窗口,缺省為無宏觀異常描述文本,當有宏觀異常時用戶可對文本內容進行修改,軟件將自動保存為TXT 文件,產出報告時讀取該文件內容并添加到預設位置。

2.3 報告自動推送

2.3.1 企業微信方式

企業微信推送方式可以讓工作人員通過手機隨時隨地接收到軟件產出的報告,便于查閱和校核。這部分使用Python 語言開發,將代碼編譯成可執行文件,待報告產出后由震情報告自動產出軟件調用將報告文件推送到企業微信“自建應用”—地震速報[海城市地震臺](圖2),自建應用可見范圍的人員均可看到報告文件。有關企業微信企業ID、部門ID、AgentId和Secret等敏感信息寫入加密后的Access數據庫。

圖2 企業微信自建應用收到的報告文件Fig.2 Report files received by enterprise Wechat self-built applications

2.3.2 電子郵件方式

電子郵件推送方式主要用于自動向上級主管單位和領導發送產出的報告,可同時發送給多個收件人。通過調用系統自帶的CDO 接口完成電子郵件的自動推送,對外發送郵箱需要開啟POP3/SMTP模式。代碼如下:

3 實際應用

震情報告自動產出軟件自2022 年3 月投入使用以來,不管是在固定時間還是震后均能保證觸發產出快速、運行穩定,實現了信息自動化。如:《震情匯報》月報(圖3a)設置的開始產出時間為每月1 日8 時30 分,一般用時35秒左右即自動完成了地震目錄下載、篩選、報告編輯和推送等一整套流程,這在以往人工操作時一般需要2~3 個小時才能完成;再如:2022 年4 月3 日10 時42 分在遼寧省鞍山市海城市發生M2.2 級地震,10 時47 分短信接收設備接收到速報短信,13 秒后即產出本次地震的《震情特刊》(圖3b)并完成自動推送,這在以往人工操作時一般需要20~30分鐘才能完成。

圖3 軟件自動生成的《震情匯報》和《震情特刊》Fig.3 Earthquake Report and Earthquake Special Issue automatically generated by software

4 結語

震情報告自動產出軟件觸發設定后,程序自動完成數據獲取、處理及報告產出和推送。軟件架構合理,運行穩定,報告的產出和推送及時、準確,極大地縮短了震后應急和地震會商資料的準備時間,減少了大量的重復性勞動[9],滿足了海城市地震臺地震應急和地震會商工作的時效性需求。今后,將緊密結合實際工作的進一步完善、擴展和升級軟件功能,以便發揮該軟件的更大作用。

猜你喜歡
海城市速報特刊
每月速報
每月速報
海城市實現節水規劃的途徑及措施
每月速報
海城市材料價格補充信息
海城市材料價格補充信息
海城市材料價格補充信息
兩會特刊
奧運特刊
奧運特刊
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合