宮卓宏,梁 艷,閆美蓉,劉 發(fā),彭麗娟
(1.山西省地震局,山西 太原 030021;2.山西省地震局大同地震監(jiān)測中心站,山西 大同 037000;3.太原大陸裂谷動力學國家野外科學觀測研究站,山西 太原 030025)
地震計是測震站網(wǎng)的觀測儀器部件,標定是檢測地震計是否正常工作的手段,標定合格才能保證觀測數(shù)據(jù)的質(zhì)量。目前,在實驗室環(huán)境下,采用振動臺測試法對地震計進行絕對標定。由于振動臺復(fù)雜且昂貴,省地震局很難用到振動臺[1],因此,測震站網(wǎng)運維人員主要采用電標定法對地震計進行標定[2]。
山西數(shù)字測震站網(wǎng)現(xiàn)有57個臺站,專業(yè)設(shè)備由寬頻帶地震計和多通道數(shù)采組成,專業(yè)設(shè)備的正常運行是做好地震監(jiān)測預(yù)報預(yù)警和區(qū)域性地震危險評估等工作的重要基礎(chǔ),對專業(yè)設(shè)備定期開展正弦標定和脈沖標定,是監(jiān)控地震計運行狀態(tài)的主要手段。
山西測震站網(wǎng)目前采用基于MATLAB的標定計算腳本進行日常標定數(shù)據(jù)的處理[3-4],隨著近年來測震站網(wǎng)不斷增加,設(shè)備標定的工作量越來越大,采用現(xiàn)有的標定流程,問題越來越突出,主要有:各臺站數(shù)采和地震計的組合多種多樣,標定參數(shù)各異;標定計算的結(jié)果參數(shù)文件分布在不同目錄的不同文件中,手動匯總較繁瑣,易出現(xiàn)失誤;各類標定步驟繁雜,缺乏記錄和整理。 為此,結(jié)合工作實際,開發(fā)適用于山西測震站網(wǎng)儀器標定的管理軟件非常必要,用以實現(xiàn)標定和計算數(shù)據(jù)的信息化管理,方便省地震局和各地震監(jiān)測中心站維護人員管理儀器的標定和計算以及上報儀器的標定結(jié)果,針對測震站網(wǎng)標定結(jié)果上報所需設(shè)計不同報表模板,用戶可以根據(jù)需要對標定參數(shù)信息、標定記錄等進行查詢和統(tǒng)計,既減少測震標定、計算、上報等工作量和手動匯總造成的人為錯誤,又能提高標定工作效率和上報結(jié)果的準確度。下面從設(shè)計思路、模塊化設(shè)計實現(xiàn)等方面對此款標定管理系統(tǒng)進行介紹。
為提高日常的標定工作效率,管理軟件需滿足以下設(shè)計目標:
(1) 契合標定流程的管理功能。
創(chuàng)建標定信息數(shù)據(jù)庫,包含臺站信息、用戶信息、標定結(jié)果等多個數(shù)據(jù)表,便于管理標定流程和結(jié)果??紤]臺站參數(shù)因改造等原因會有變動,需實現(xiàn)臺站信息的錄入和修改。實現(xiàn)標定結(jié)果直接從文件讀取、入庫,避免手動輸入帶來的操作失誤。
(2) 標定流程規(guī)范化和管理匯總快捷化。
之前各維護中心的標定、計算及結(jié)果上傳的流程各有不同,易出現(xiàn)標定結(jié)果的錄入、匯總因不規(guī)范操作而出現(xiàn)錯誤。因此,規(guī)范計算結(jié)果的文件目錄,不僅便于軟件入庫,且有利于標定流程的規(guī)范化,為匯總做準備。
(3) 工作效率的持續(xù)提升。
通過便捷的標定結(jié)果導(dǎo)入和匯總功能,運維人員不需要進行重復(fù)的手動處理數(shù)據(jù),可提升工作效率。其他類型的標定匯總工作也可以通過增設(shè)相應(yīng)的模板來實現(xiàn)。
為達成上述設(shè)計目標,該軟件采用模塊化設(shè)計,基于C++[5]語言,使用Qt[6-9]框架進行開發(fā),具有五個功能模塊,分別是用戶管理模塊、信息查詢模塊、標定結(jié)果錄入模塊、表格輸出模塊和后臺數(shù)據(jù)庫模塊。整體功能如圖1所示,軟件流程如圖2所示,其中數(shù)據(jù)庫[10]模塊是存儲和修改數(shù)據(jù)的關(guān)鍵模塊,其數(shù)據(jù)表的構(gòu)成如表1所示。
圖1 功能模塊圖Fig.1 Software functional module diagram
用戶管理模塊用于管理用戶權(quán)限,控制不同權(quán)限用戶對不同界面的訪問。信息查詢模塊用于查詢、修改標定臺站和儀器信息、查看處理記錄等,方便用戶了解標定相關(guān)信息。標定結(jié)果錄入模塊和表格輸出模塊是本軟件的核心功能模塊,用戶選定標定處理結(jié)果所在路徑,使用結(jié)果錄入功能即可將各臺站標定結(jié)果文件中的信息提取到數(shù)據(jù)庫,便于查詢和導(dǎo)出。用戶使用表格輸出功能將選定數(shù)據(jù)庫中需導(dǎo)出的標定結(jié)果條目,按照預(yù)設(shè)格式以表格形式導(dǎo)出。
信息查詢模塊主要進行標定信息的整理和查詢。標定結(jié)果讀取模塊應(yīng)按照標定流程規(guī)范,依據(jù)預(yù)設(shè)的邏輯讀取指定文件內(nèi)容到數(shù)據(jù)庫中。表格輸出模塊按照表格模板,將數(shù)據(jù)庫中的對應(yīng)內(nèi)容,規(guī)范輸出到表格文件中。設(shè)計的各模塊要便于操作,平臺要方便維護,實現(xiàn)及時處理異常、更新。
該模塊可解決手動處理數(shù)據(jù)帶來的人為失誤。由于標定結(jié)果的各項關(guān)鍵參數(shù)分布在結(jié)果路徑下不同文件的不同數(shù)據(jù)段,按照文件規(guī)則讀取時方便快捷。
結(jié)果讀取的過程大致如下。首先,用戶選擇標定結(jié)果的文件路徑,根據(jù)標定流程規(guī)范,該路徑下應(yīng)當以各個臺站代碼命名子文件夾,也是標定的各結(jié)果文件;其次,程序從數(shù)據(jù)庫中讀取臺站代碼,指定的路徑+臺站代碼+特定文件名,得到單個臺站標定結(jié)果的完整文件路徑。標定結(jié)果數(shù)據(jù)以文本文件形式存儲,用文件流讀取到對應(yīng)行,然后處理字符串即可獲得所需的數(shù)據(jù)。依據(jù)此文件路徑,讀取對應(yīng)文件中的數(shù)據(jù)并存儲到數(shù)據(jù)庫中。按此做法遍歷臺站列表,至所有臺站讀取完畢。文件讀取界面如圖3所示。
圖3 信息查詢和讀取文件界面Fig.3 Interface of information query and reading files
選擇文件夾使用QFileDialog類中的getExistingDirectory靜態(tài)成員函數(shù),讀取文件使用QDir類中的setNameFilters函數(shù)篩選出要讀取的文件,使用QTextStream類即文件流按行讀取文件內(nèi)容。
日常標定計算過程中,將標定結(jié)果按臺站分類存放在文件夾中,每個臺站一個文件夾,每個臺站需要錄入的數(shù)據(jù)在標定結(jié)果文件夾中的兩個結(jié)果匯總到文本文件中。標定結(jié)果錄入模塊可以在用戶選擇對應(yīng)文件夾后,逐個讀取每個臺站對應(yīng)的兩個文本文件,將該文件夾下所有臺站的數(shù)據(jù)全部錄入數(shù)據(jù)庫中。讀取流程如圖4所示。
圖4 讀取文件流程圖Fig.4 File reading process flowchart
此模塊主要包括三部分功能。第一是標定信息的查詢(見圖3)。包括各臺站經(jīng)緯度、標定靈敏度等。第二是標定記錄查詢。在標定結(jié)果讀取模塊將標定結(jié)果存入數(shù)據(jù)庫后,在標定記錄查詢頁面查看已經(jīng)入庫的標定結(jié)果條目。第三是臺站更新及更新記錄。各臺站的標定信息可以在程序頁面中進行增加、刪除、修改等,歷史改動都可以在更新記錄頁面查看,只需在臺站更新頁面選擇記錄修改信息即可。
表格輸出模塊在用戶選擇需要輸出的臺站和格式后,把標定數(shù)據(jù)輸出到對應(yīng)的表格模板中,表格模板存放在軟件目錄下,程序跳過表格的前三行即表頭,從第四行開始逐個寫入數(shù)據(jù)。每個臺站每個分向的數(shù)據(jù)占一行,每行有臺站信息、標定時間、周期振幅等數(shù)據(jù),分別對應(yīng)表頭的每一列。
用戶選擇需要輸出的臺站和格式并確定輸出后,程序打開表格模板文件,從數(shù)據(jù)庫中提取第一個臺站的各項數(shù)據(jù)并保存到對應(yīng)的單元格中;再操作下一個臺站,直到寫完所有選中的臺站數(shù)據(jù),最后保存表格文件。表格輸出界面如圖5所示。
圖5 表格輸出界面Fig.5 Interface of table output
用QAxObject類映射excel表格,用一些對象來對應(yīng)表格中的各元素。如,workBook對應(yīng)excel中的工作表,worksheet對應(yīng)excel中的一個sheet表單。
外層while循環(huán)遍歷各個臺站,對應(yīng)excel表中的一個臺站(占三行);三個內(nèi)層for循環(huán)對應(yīng)一個臺站的三個分向,每個分向占一行,每遍歷完一個分向就運行“row++”即行數(shù)加1;三個分向全部遍歷完后,就運行“station++”即臺站數(shù)加1。重復(fù)上述過程,再對下一個臺站進行操作,直到全部完成,最后保存整個excel文件。
由于讀取、選擇、輸出表格的流程較繁瑣,故設(shè)計一鍵讀取功能。其原理是:選定已經(jīng)整理好的標定資料目錄,根據(jù)目錄名或文件名遍歷整個目錄,一次性獲取所有標定結(jié)果的資料,再將其輸出到表格中(見圖6)。其優(yōu)點是與原有工作流程更加契合,可提高工作效率。
圖6 一鍵讀取流程圖Fig.6 One-click reading process flowchart
該軟件自2017年部署到山西測震站網(wǎng)后,對57個站點的57臺套測震儀器標定結(jié)果進行流程化導(dǎo)入,實現(xiàn)在數(shù)分鐘內(nèi)即可匯總標定結(jié)果,有效提升測震站網(wǎng)的標定效率。同時利用該軟件建立山西地區(qū)測震儀器標定結(jié)果數(shù)據(jù)庫,首次實現(xiàn)標定結(jié)果的信息化管理,為今后儀器運維工作提供基礎(chǔ)數(shù)據(jù)支撐。經(jīng)過幾年的運行,已實現(xiàn)標定流程規(guī)范化和管理匯總快捷化,不僅縮短運維人員的工作時間,還可避免手動處理數(shù)據(jù)帶來的人為失誤,提升了測震站網(wǎng)標定管理的水平。
該軟件自投入運行以來,得到地震監(jiān)測中心站運維人員的認可,已成為日常工作中的必要工具,其實用性和易用性得到實踐的檢驗。對該軟件的設(shè)計、開發(fā)和長時間運行結(jié)果進行分析表明,基于Qt的標定管理軟件,設(shè)計方案合理,人機互動界面良好;可提高上報結(jié)果的準確性,避免手動處理數(shù)據(jù)帶來的人為失誤;可實現(xiàn)標定流程規(guī)范化和管理匯總快捷化,有效提升測震站網(wǎng)標定管理的水平。