張秀萍,陳文勝
(中國(guó)地震局第二監(jiān)測(cè)中心,西安 710054)
震相報(bào)告是進(jìn)行地震活動(dòng)性分析、地震危險(xiǎn)性評(píng)價(jià)、地下結(jié)構(gòu)成像、構(gòu)造研究和地震預(yù)測(cè)的基礎(chǔ)資料,記錄地震發(fā)生后不同地震監(jiān)測(cè)臺(tái)站的震相到時(shí)(多種震相),包含了地震波在地球內(nèi)部的傳播路徑,絕大多數(shù)的地震學(xué)研究都依賴于震相報(bào)告數(shù)據(jù),如地震定位、走時(shí)成像、地球內(nèi)部結(jié)構(gòu)研究(莫霍面的深度、地殼的厚度、核幔邊界的厚度)。
國(guó)家地震臺(tái)網(wǎng)中心統(tǒng)一編目網(wǎng)站擁有豐富的數(shù)據(jù)資源[1-2],是各科研單位和臺(tái)站獲取震相報(bào)告的主要來(lái)源。由于震相數(shù)據(jù)塊中包含大量的數(shù)據(jù)信息,如臺(tái)網(wǎng)代碼、臺(tái)站、震相到時(shí)、震中距、走時(shí)殘差等,當(dāng)按年月下載震相數(shù)據(jù)時(shí),會(huì)重復(fù)下載過(guò)程,文件數(shù)據(jù)大、下載耗時(shí),導(dǎo)致網(wǎng)站請(qǐng)求超時(shí)甚至崩潰[3],使得業(yè)務(wù)人員無(wú)法及時(shí)有效地獲取震相報(bào)告。
為了提高數(shù)據(jù)獲取效率,利用數(shù)據(jù)專家Datist(多源數(shù)據(jù)融合專家應(yīng)用軟件,簡(jiǎn)稱“數(shù)據(jù)專家”)軟件結(jié)合Python編程,通過(guò)可視化的節(jié)點(diǎn)組合完成數(shù)據(jù)處理的有形化表達(dá),不需要掌握復(fù)雜的編程技術(shù)即可實(shí)現(xiàn)對(duì)海量多源數(shù)據(jù)的整合、查詢以及報(bào)告生成等批量化處理過(guò)程[4],方法簡(jiǎn)單、效率高。
數(shù)據(jù)專家Datist平臺(tái)是長(zhǎng)安大學(xué)數(shù)字油田研究所研發(fā)的,服務(wù)于大數(shù)據(jù)時(shí)代場(chǎng)景式(Context)數(shù)據(jù)分析與數(shù)據(jù)挖掘的軟件工具,其特點(diǎn)在于遵循零代碼原則,使用者不需要掌握復(fù)雜的編程技術(shù),通過(guò)排列、組合可視化的功能節(jié)點(diǎn)即可實(shí)現(xiàn)數(shù)據(jù)處理過(guò)程[5-6]。目前Datist集成了160多個(gè)功能節(jié)點(diǎn),內(nèi)嵌600多個(gè)處理函數(shù),極大地縮減了編程工作量。基于Datist的震相報(bào)告自動(dòng)下載與服務(wù)系統(tǒng)的原理總框圖如圖1所示,包括五部分:后臺(tái)獲取震相報(bào)告、震相報(bào)告數(shù)據(jù)分析、震相報(bào)告數(shù)據(jù)處理、震相報(bào)告數(shù)據(jù)產(chǎn)出、震相報(bào)告FTP上傳與郵件推送。
圖1 震相報(bào)告自動(dòng)下載與服務(wù)系統(tǒng)原理
首先后臺(tái)獲取震相報(bào)告通過(guò)設(shè)計(jì)datist流程,結(jié)合Python程序訪問(wèn)下載地址得到震相報(bào)告文本,并保存到固定目錄下。接著對(duì)震相報(bào)告文本目錄分析,目錄中有兩種文本。一種是非空文本,這種文本是含有數(shù)據(jù)的震相報(bào)告,文件大小一般為Mb量級(jí);另一種是空文本,統(tǒng)一編目系統(tǒng)中并沒(méi)有按月整理該月份的震相報(bào)告,因此下載得到的是空文件。對(duì)空文件進(jìn)行數(shù)據(jù)處理,然后與非空文件一起轉(zhuǎn)存,得到完整的震相報(bào)告產(chǎn)出。
震相報(bào)告更新完畢后會(huì)通過(guò)郵件及時(shí)通知用戶,用戶輸入FTP文件共享口令即可下載震相報(bào)告,提高了數(shù)據(jù)安全性,能夠更便捷的對(duì)外提供數(shù)據(jù)共享服務(wù)。Datist集成了Python、數(shù)據(jù)劈分、數(shù)據(jù)篩選、報(bào)告生成等功能節(jié)點(diǎn),避免了冗長(zhǎng)的代碼編寫,具體的實(shí)現(xiàn)將在第二部分介紹。
根據(jù)圖1原理框圖,利用數(shù)據(jù)專家Datist實(shí)現(xiàn)震相報(bào)告的自動(dòng)下載和服務(wù)系統(tǒng)的業(yè)務(wù)流程,具體如圖2所示。業(yè)務(wù)流程功能包括后臺(tái)獲取震相報(bào)告數(shù)據(jù)、震相報(bào)告文本分析與處理、震相報(bào)告文件保存、震相報(bào)告FTP上傳與郵件推送,下面介紹各功能的設(shè)計(jì)思路與實(shí)現(xiàn)。
圖2 震相報(bào)告自動(dòng)下載與服務(wù)系統(tǒng)業(yè)務(wù)流程
后臺(tái)獲取震相報(bào)告數(shù)據(jù)的功能設(shè)計(jì)如圖3所示,具體功能實(shí)現(xiàn)見(jiàn)圖2前兩行流程。Datist集成了Python節(jié)點(diǎn),首先將登錄網(wǎng)站和月震相數(shù)據(jù)下載的代碼放到Python節(jié)點(diǎn)中,運(yùn)行Python節(jié)點(diǎn)即可訪問(wèn)下載地址得到震相報(bào)告文本。其次對(duì)下載地址中的時(shí)間參數(shù)進(jìn)行更新替換,通過(guò)Datist流程變量實(shí)現(xiàn)更新下載地址鏈接中的時(shí)間參數(shù),下載不同時(shí)間的震相報(bào)告,并將其保存在固定目錄下。
圖3 后臺(tái)獲取震相報(bào)告功能設(shè)計(jì)示意圖
震相報(bào)告文本分析與處理的功能設(shè)計(jì)如圖4所示,具體功能實(shí)現(xiàn)見(jiàn)圖2第三行至第八行流程。首先掃描震相報(bào)告文件目錄,篩選出目錄中的空文本。其次提取空文本名稱中的月份信息,拼接到震相總條目下載地址中,獲取到該月份的震相總條目文本(圖2第三、四行流程)。接著對(duì)獲取到的震相總條目文本的內(nèi)容進(jìn)行篩選,過(guò)濾經(jīng)度、緯度、深度、地點(diǎn)等其他信息,保留發(fā)震日期和年份等時(shí)間戳信息并按月份保存為文本(圖2第五行流程)。
圖4 震相報(bào)告數(shù)據(jù)分析與處理功能設(shè)計(jì)示意圖
每個(gè)文件中記錄了當(dāng)前月份下所有的發(fā)震時(shí)刻,記錄格式為年月日時(shí)分,如202101010036,表示2021年1月1日0點(diǎn)36分。將該發(fā)震時(shí)刻拼接到震相報(bào)告下載地址中,獲取該時(shí)刻下所有臺(tái)站的震相報(bào)告(圖2第六行流程)。圖2第六行流程中有兩個(gè)并列的Python節(jié)點(diǎn),第一個(gè)放置日期去重和按日期下載震相報(bào)告的代碼;第二個(gè)放置重復(fù)日期循環(huán)下載震相報(bào)告的代碼。
轉(zhuǎn)存的震相報(bào)告文本是按照發(fā)震時(shí)刻保存的獨(dú)立文件,同一發(fā)震時(shí)刻會(huì)有多個(gè)震相報(bào)告文件,需要將同一月份下的震相報(bào)告文件合并為一個(gè)文件。具體功能實(shí)現(xiàn)見(jiàn)圖2第九行至第十一行,步驟如下:
(1)將震相報(bào)告文本頭和文本尾分別保存在一個(gè)文件中。
(2)選取同一月份下的多個(gè)震相報(bào)告,篩選刪除多個(gè)震相報(bào)告的文本頭和文本尾。
(3)合并文本頭文件、處理后的多個(gè)震相報(bào)告文件、文本尾文件,并按月份保存。
震相報(bào)告FTP上傳與郵件推送具體功能實(shí)現(xiàn)見(jiàn)圖2最后兩行,Datist集成了FTP上傳節(jié)點(diǎn)和郵件節(jié)點(diǎn),對(duì)節(jié)點(diǎn)屬性進(jìn)行編輯,即可快速實(shí)現(xiàn)震相報(bào)告的FTP共享和推送。FTP上傳節(jié)點(diǎn)屬性設(shè)置見(jiàn)圖5所示,設(shè)置步驟如下:
圖5 FTP上傳節(jié)點(diǎn)屬性設(shè)置窗口
(1)引入“表格數(shù)據(jù)”節(jié)點(diǎn),設(shè)置FTP的上傳路徑、內(nèi)容和文件名稱。
(2)引入“FTP上傳”節(jié)點(diǎn),與表格數(shù)據(jù)節(jié)點(diǎn)連接,選擇表格中對(duì)應(yīng)的列項(xiàng)。
(3)在FTP節(jié)點(diǎn)屬性編輯中,設(shè)置FTP的用戶名、密碼,連通FTP。
運(yùn)行震相報(bào)告自動(dòng)下載與服務(wù)系統(tǒng)業(yè)務(wù)流程,獲取震相報(bào)告。震相報(bào)告獲取步驟:
(1)在瀏覽器中登錄FTP服務(wù)器,輸入用戶名和密碼。
(2)進(jìn)入到ftp服務(wù)器根目錄下,找到要下載的震相報(bào)告年份,點(diǎn)擊進(jìn)入。如下載2014年8月的震相報(bào)告,點(diǎn)擊2014文件夾,進(jìn)入到2014年的文件夾下,如圖6所示。
圖6 2014年震相報(bào)告目錄
(3)點(diǎn)擊對(duì)應(yīng)的月份,即可下載該月的震相報(bào)告,2014年8月的震相報(bào)告如圖7所示。
圖7 2014年8月的震相報(bào)告
運(yùn)行震相報(bào)告自動(dòng)下載與服務(wù)系統(tǒng)業(yè)務(wù)流程,震相報(bào)告下載完成后,郵件提示震相報(bào)告更新消息,如圖8所示。
圖8 郵件推送
利用Datist節(jié)點(diǎn)流程能夠方便快捷地實(shí)現(xiàn)自動(dòng)下載震相報(bào)告,極大地提高了震相報(bào)告的獲取效率,有效地解決了在臺(tái)網(wǎng)中心服務(wù)器端下載數(shù)據(jù)時(shí),因載荷過(guò)多導(dǎo)致下載超時(shí)甚至系統(tǒng)崩潰而無(wú)法獲取數(shù)據(jù)的情況。此外,二測(cè)中心作為國(guó)家地震數(shù)據(jù)災(zāi)備中心,目前尚沒(méi)有地震目錄和震相報(bào)告數(shù)據(jù)的備份。通過(guò)本系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),探索提供震相數(shù)據(jù)服務(wù)模式,在滿足中心相關(guān)科研業(yè)務(wù)人員業(yè)務(wù)需求的同時(shí),為以后更好地開(kāi)展地震數(shù)據(jù)測(cè)震服務(wù)做準(zhǔn)備。