張秀萍,陳文勝
(中國地震局第二監(jiān)測中心,西安 710054)
震相報告是進行地震活動性分析、地震危險性評價、地下結(jié)構(gòu)成像、構(gòu)造研究和地震預(yù)測的基礎(chǔ)資料,記錄地震發(fā)生后不同地震監(jiān)測臺站的震相到時(多種震相),包含了地震波在地球內(nèi)部的傳播路徑,絕大多數(shù)的地震學(xué)研究都依賴于震相報告數(shù)據(jù),如地震定位、走時成像、地球內(nèi)部結(jié)構(gòu)研究(莫霍面的深度、地殼的厚度、核幔邊界的厚度)。
國家地震臺網(wǎng)中心統(tǒng)一編目網(wǎng)站擁有豐富的數(shù)據(jù)資源[1-2],是各科研單位和臺站獲取震相報告的主要來源。由于震相數(shù)據(jù)塊中包含大量的數(shù)據(jù)信息,如臺網(wǎng)代碼、臺站、震相到時、震中距、走時殘差等,當按年月下載震相數(shù)據(jù)時,會重復(fù)下載過程,文件數(shù)據(jù)大、下載耗時,導(dǎo)致網(wǎng)站請求超時甚至崩潰[3],使得業(yè)務(wù)人員無法及時有效地獲取震相報告。
為了提高數(shù)據(jù)獲取效率,利用數(shù)據(jù)專家Datist(多源數(shù)據(jù)融合專家應(yīng)用軟件,簡稱“數(shù)據(jù)專家”)軟件結(jié)合Python編程,通過可視化的節(jié)點組合完成數(shù)據(jù)處理的有形化表達,不需要掌握復(fù)雜的編程技術(shù)即可實現(xiàn)對海量多源數(shù)據(jù)的整合、查詢以及報告生成等批量化處理過程[4],方法簡單、效率高。
數(shù)據(jù)專家Datist平臺是長安大學(xué)數(shù)字油田研究所研發(fā)的,服務(wù)于大數(shù)據(jù)時代場景式(Context)數(shù)據(jù)分析與數(shù)據(jù)挖掘的軟件工具,其特點在于遵循零代碼原則,使用者不需要掌握復(fù)雜的編程技術(shù),通過排列、組合可視化的功能節(jié)點即可實現(xiàn)數(shù)據(jù)處理過程[5-6]。目前Datist集成了160多個功能節(jié)點,內(nèi)嵌600多個處理函數(shù),極大地縮減了編程工作量。基于Datist的震相報告自動下載與服務(wù)系統(tǒng)的原理總框圖如圖1所示,包括五部分:后臺獲取震相報告、震相報告數(shù)據(jù)分析、震相報告數(shù)據(jù)處理、震相報告數(shù)據(jù)產(chǎn)出、震相報告FTP上傳與郵件推送。

圖1 震相報告自動下載與服務(wù)系統(tǒng)原理
首先后臺獲取震相報告通過設(shè)計datist流程,結(jié)合Python程序訪問下載地址得到震相報告文本,并保存到固定目錄下。接著對震相報告文本目錄分析,目錄中有兩種文本。一種是非空文本,這種文本是含有數(shù)據(jù)的震相報告,文件大小一般為Mb量級;另一種是空文本,統(tǒng)一編目系統(tǒng)中并沒有按月整理該月份的震相報告,因此下載得到的是空文件。對空文件進行數(shù)據(jù)處理,然后與非空文件一起轉(zhuǎn)存,得到完整的震相報告產(chǎn)出。
震相報告更新完畢后會通過郵件及時通知用戶,用戶輸入FTP文件共享口令即可下載震相報告,提高了數(shù)據(jù)安全性,能夠更便捷的對外提供數(shù)據(jù)共享服務(wù)。Datist集成了Python、數(shù)據(jù)劈分、數(shù)據(jù)篩選、報告生成等功能節(jié)點,避免了冗長的代碼編寫,具體的實現(xiàn)將在第二部分介紹。
根據(jù)圖1原理框圖,利用數(shù)據(jù)專家Datist實現(xiàn)震相報告的自動下載和服務(wù)系統(tǒng)的業(yè)務(wù)流程,具體如圖2所示。業(yè)務(wù)流程功能包括后臺獲取震相報告數(shù)據(jù)、震相報告文本分析與處理、震相報告文件保存、震相報告FTP上傳與郵件推送,下面介紹各功能的設(shè)計思路與實現(xiàn)。

圖2 震相報告自動下載與服務(wù)系統(tǒng)業(yè)務(wù)流程
后臺獲取震相報告數(shù)據(jù)的功能設(shè)計如圖3所示,具體功能實現(xiàn)見圖2前兩行流程。Datist集成了Python節(jié)點,首先將登錄網(wǎng)站和月震相數(shù)據(jù)下載的代碼放到Python節(jié)點中,運行Python節(jié)點即可訪問下載地址得到震相報告文本。其次對下載地址中的時間參數(shù)進行更新替換,通過Datist流程變量實現(xiàn)更新下載地址鏈接中的時間參數(shù),下載不同時間的震相報告,并將其保存在固定目錄下。

圖3 后臺獲取震相報告功能設(shè)計示意圖
震相報告文本分析與處理的功能設(shè)計如圖4所示,具體功能實現(xiàn)見圖2第三行至第八行流程。首先掃描震相報告文件目錄,篩選出目錄中的空文本。其次提取空文本名稱中的月份信息,拼接到震相總條目下載地址中,獲取到該月份的震相總條目文本(圖2第三、四行流程)。接著對獲取到的震相總條目文本的內(nèi)容進行篩選,過濾經(jīng)度、緯度、深度、地點等其他信息,保留發(fā)震日期和年份等時間戳信息并按月份保存為文本(圖2第五行流程)。

圖4 震相報告數(shù)據(jù)分析與處理功能設(shè)計示意圖
每個文件中記錄了當前月份下所有的發(fā)震時刻,記錄格式為年月日時分,如202101010036,表示2021年1月1日0點36分。將該發(fā)震時刻拼接到震相報告下載地址中,獲取該時刻下所有臺站的震相報告(圖2第六行流程)。圖2第六行流程中有兩個并列的Python節(jié)點,第一個放置日期去重和按日期下載震相報告的代碼;第二個放置重復(fù)日期循環(huán)下載震相報告的代碼。
轉(zhuǎn)存的震相報告文本是按照發(fā)震時刻保存的獨立文件,同一發(fā)震時刻會有多個震相報告文件,需要將同一月份下的震相報告文件合并為一個文件。具體功能實現(xiàn)見圖2第九行至第十一行,步驟如下:
(1)將震相報告文本頭和文本尾分別保存在一個文件中。
(2)選取同一月份下的多個震相報告,篩選刪除多個震相報告的文本頭和文本尾。
(3)合并文本頭文件、處理后的多個震相報告文件、文本尾文件,并按月份保存。
震相報告FTP上傳與郵件推送具體功能實現(xiàn)見圖2最后兩行,Datist集成了FTP上傳節(jié)點和郵件節(jié)點,對節(jié)點屬性進行編輯,即可快速實現(xiàn)震相報告的FTP共享和推送。FTP上傳節(jié)點屬性設(shè)置見圖5所示,設(shè)置步驟如下:

圖5 FTP上傳節(jié)點屬性設(shè)置窗口
(1)引入“表格數(shù)據(jù)”節(jié)點,設(shè)置FTP的上傳路徑、內(nèi)容和文件名稱。
(2)引入“FTP上傳”節(jié)點,與表格數(shù)據(jù)節(jié)點連接,選擇表格中對應(yīng)的列項。
(3)在FTP節(jié)點屬性編輯中,設(shè)置FTP的用戶名、密碼,連通FTP。
運行震相報告自動下載與服務(wù)系統(tǒng)業(yè)務(wù)流程,獲取震相報告。震相報告獲取步驟:
(1)在瀏覽器中登錄FTP服務(wù)器,輸入用戶名和密碼。
(2)進入到ftp服務(wù)器根目錄下,找到要下載的震相報告年份,點擊進入。如下載2014年8月的震相報告,點擊2014文件夾,進入到2014年的文件夾下,如圖6所示。

圖6 2014年震相報告目錄
(3)點擊對應(yīng)的月份,即可下載該月的震相報告,2014年8月的震相報告如圖7所示。

圖7 2014年8月的震相報告
運行震相報告自動下載與服務(wù)系統(tǒng)業(yè)務(wù)流程,震相報告下載完成后,郵件提示震相報告更新消息,如圖8所示。

圖8 郵件推送
利用Datist節(jié)點流程能夠方便快捷地實現(xiàn)自動下載震相報告,極大地提高了震相報告的獲取效率,有效地解決了在臺網(wǎng)中心服務(wù)器端下載數(shù)據(jù)時,因載荷過多導(dǎo)致下載超時甚至系統(tǒng)崩潰而無法獲取數(shù)據(jù)的情況。此外,二測中心作為國家地震數(shù)據(jù)災(zāi)備中心,目前尚沒有地震目錄和震相報告數(shù)據(jù)的備份。通過本系統(tǒng)的設(shè)計和實現(xiàn),探索提供震相數(shù)據(jù)服務(wù)模式,在滿足中心相關(guān)科研業(yè)務(wù)人員業(yè)務(wù)需求的同時,為以后更好地開展地震數(shù)據(jù)測震服務(wù)做準備。