陳力剛 張曉宇 邢 康 賈漯昭
(河南省地震局, 鄭州 450018)
國家地震烈度速報與預警工程項目(簡稱“預警項目”)是一項具有防震減災實效的民生工程和社會工程,建成后將有效提高減災和社會服務能力。河南省預警項目中一般站烈度計設備于2021 年上半年安裝完畢,相關記錄數(shù)據(jù)可通過網(wǎng)絡遠程訪問下載,為初步計算一般站的背景噪聲創(chuàng)造了條件。預警項目針對臺站數(shù)據(jù)包格式做出了新定義,各廠家生產(chǎn)的硬件采集設備已按照新的格式規(guī)程生產(chǎn)數(shù)據(jù),而現(xiàn)有計算軟件2北京港震機電有限責任公司,童汪練,2017. 數(shù)字地震儀參數(shù)測定軟件使用手冊,北京港震機電有限責任公司資料.附帶的數(shù)據(jù)分道軟件無法直接打開預警數(shù)據(jù)采集器產(chǎn)出的數(shù)據(jù),因此,本文通過對預警項目臺站數(shù)據(jù)包格式規(guī)程的解讀,采用C 語言開發(fā)了預警項目臺站波形數(shù)據(jù)解壓軟件,產(chǎn)出相應的分道文本數(shù)據(jù)文件,并通過具體實例對預警項目連續(xù)波形數(shù)據(jù)包格式和相應的程序實現(xiàn)給出詳細說明。
預警項目臺站數(shù)據(jù)包格式規(guī)程中定義了多種數(shù)據(jù)包格式,其標識有“cc”、“si”、“ti”、“wc”、“wt”和“ws”,本文著重研究“wc”數(shù)據(jù)包,即連續(xù)波形數(shù)據(jù)包?!皐c”數(shù)據(jù)包以miniSEED 數(shù)據(jù)卷為基礎,做了必要的修訂,主要變化為:① miniSEED 數(shù)據(jù)卷固定頭段區(qū)的第0 至第1 個字節(jié)定義為“wc”數(shù)據(jù)包標識位置;② miniSEED 數(shù)據(jù)卷固定頭段區(qū)的第2 個字節(jié)內高5 位bit 到第5 個字節(jié)定義為數(shù)據(jù)包順序編號位置,用于數(shù)據(jù)傳輸時斷點續(xù)傳,而第2 個字節(jié)內低3 位bit 定義為數(shù)據(jù)包長度索引;③ miniSEED 數(shù)據(jù)卷中“純數(shù)據(jù)子塊[ 1000]”后增加了8 個字節(jié)的數(shù)據(jù)標識區(qū),用于標識通道信息順序、數(shù)據(jù)量綱和靈敏度信息;④其他少許的新定義,如第36 個字節(jié)第7 bit 定義為入網(wǎng)標記等。由此發(fā)現(xiàn),預警項目對mini-SEED 數(shù)據(jù)卷僅做了少量修訂。為提取“wc”類連續(xù)波形數(shù)據(jù)具體內容,需對該數(shù)據(jù)卷格式信息做出解讀,在此僅對提取波形使用到的信息做出說明。miniSEED 被定義為SEED 格式標準中的數(shù)據(jù)記錄格式,一個完整的預警項目miniSEED 數(shù)據(jù)卷包括固定頭段區(qū)、可變頭段區(qū)和數(shù)據(jù)區(qū)(中國地震局,2003)。
固定頭段區(qū)包含使用數(shù)據(jù)所需的最低限度信息,主要信息按字節(jié)從前向后依次為波形類別標識、數(shù)據(jù)包序號、質量指示符、臺站標識、位置標識、通道標識、臺網(wǎng)標識、記錄起始時間、樣本數(shù)目、采樣率、子塊等。前20 個字節(jié)除第2~5 個字節(jié)外,均采用ASCII 碼表示,后28 個字節(jié)采用二進制表示(張旸等,2007),固定頭段區(qū)共48 個字節(jié)。
可變頭段區(qū)由多個可選的子塊構成,在預警項目中選擇的子塊類型僅為“純數(shù)據(jù)子塊 [ 1000]”。該子塊包含了對數(shù)據(jù)區(qū)解碼的必要信息,主要信息有編碼格式代碼,一般為0 B,代表Steim2 壓縮格式;字序代碼一般為1,代表大端字節(jié)序,高位字節(jié)在前,低位字節(jié)在后;標識數(shù)據(jù)記錄長度的指數(shù)代碼如果為8,則數(shù)據(jù)記錄長度為28字節(jié)。純數(shù)據(jù)子塊 [ 1000] 為8 個字節(jié),均采用二進制表示。
純數(shù)據(jù)子塊 [ 1000] 區(qū)域后的8 個字節(jié)是最具有預警項目特色定義的區(qū)域,位于可變頭段區(qū)內,因此在此區(qū)域增加自定義信息最適合。本塊信息主要涉及有關數(shù)據(jù)標識的內容,包括數(shù)據(jù)區(qū)數(shù)據(jù)的通道順序,如“ENZ”表示數(shù)據(jù)按照“**E”通道數(shù)據(jù)、“**N”通道數(shù)據(jù)、“**Z”通道數(shù)據(jù)的順序排列;數(shù)據(jù)量綱取值范圍為0~3,0 表示無量綱,1 表示位移,2 表示速度,3 表示加速度;靈敏度因子記錄儀器記錄的靈敏度因子取值范圍為0~0x3FFFFFFF。預警項目定義的數(shù)據(jù)標識內容多數(shù)為二進制,實際上這8 個字節(jié)內容可視為1 個變相的子塊放在可變頭段區(qū)內,以增加對數(shù)據(jù)區(qū)的說明。
固定頭段區(qū)和可變頭段區(qū)數(shù)據(jù)包含了臺網(wǎng)、臺站、通道、采樣率、樣本數(shù)目、時間起點、編碼格式、字節(jié)序、數(shù)據(jù)記錄長度等數(shù)據(jù)描述信息(王曉磊等,2016),占據(jù)了每條miniSEED 數(shù)據(jù)卷的前64 個字節(jié)區(qū)域,這些信息是波形數(shù)據(jù)區(qū)的輔助信息(楊周勝等,2019),也是編程提取和使用的主要參數(shù)。
數(shù)據(jù)區(qū)包含實際的時間序列數(shù)據(jù)(中國地震局,2003),數(shù)據(jù)區(qū)位置從固定頭段區(qū)第44 至第45 個字節(jié)中內容指定的字節(jié)序數(shù)處開始,這部分數(shù)據(jù)塊一般采用Steim2 算法壓縮(何加勇等,2009),由若干數(shù)據(jù)幀組成,每個數(shù)據(jù)幀為64 個字節(jié)。波形數(shù)據(jù)區(qū)具體大小及數(shù)據(jù)通道、采樣率、樣本數(shù)目、量綱、字節(jié)序等信息均已在上述固定頭段區(qū)和可變頭段區(qū)中定義。
預警項目中的波形數(shù)據(jù)區(qū)數(shù)據(jù)為Steim2 格式,獲取觀測數(shù)據(jù)后,首先需獲取打開Steim2 格式數(shù)據(jù)壓縮的鑰匙才能使用。Steim2 壓縮算法是借用語音壓縮中最簡單的差分壓縮算法發(fā)展而成的(王翠芳等,2011),其特點是無損壓縮,目前國內外地震數(shù)據(jù)傳輸和本地存儲普遍采用了壓縮算法。地震數(shù)據(jù)采用無損壓縮算法的基本原理為:在正常地震背景情況下,地震計輸出的時間序列數(shù)據(jù)通常具有較強的關聯(lián)性,即前一個采樣點相比后一個采樣點變化小,差值小,該差值占用計算機內存小,可能遠遠小于32 bit,而保存1 個原始值卻需32 bit,因此若多個差值按規(guī)則填充滿32 bit,可極大地節(jié)省存儲空間,這種方式可理解為數(shù)據(jù)壓縮。后期為恢復原始值,須在特定位置保存一個前向積分常數(shù)。筆者認為Steim2 數(shù)據(jù)格式在壓縮時具有高保真、高效的特征,符合地震動波形記錄“長期平靜”和“長期無震”的特點(王翠芳等,2011),但此算法在地震事件發(fā)生時,壓縮效率顯著降低,這是無損壓縮算法的特點。
根據(jù)Steim2 格式數(shù)據(jù)壓縮基本思想,合成壓縮數(shù)據(jù)時,首先利用直接觀測數(shù)據(jù)計算差值序列,然后按照規(guī)則利用差值序列整合重建32 bit 數(shù)據(jù)序列。獲取數(shù)據(jù)后,用戶更關心數(shù)據(jù)解壓過程,其步驟與壓縮相反,具體如下:
(1)按規(guī)則將32 bit 數(shù)據(jù)序列拆分為差值序列
數(shù)據(jù)拆分的規(guī)則鑰匙隨著壓縮數(shù)據(jù)進行傳輸,壓縮數(shù)據(jù)幀的結構如圖1 所示。
改革開放尤其是十八大以來,黨中央提出了關于生態(tài)文明建設的一系列新理念新要求。在生態(tài)文明理念方面,明確提出了“尊重自然、順應自然、保護自然”“綠水青山就是金山銀山”“山水林田湖草是一個生命共同體”等理念。在生態(tài)文明與經(jīng)濟社會發(fā)展的關系方面,提出了“守住生態(tài)與發(fā)展兩條底線”“良好生態(tài)環(huán)境是最公平的公共產(chǎn)品,是最普惠的民生福祉”等理念。在生態(tài)文明實現(xiàn)路徑方面,強調要樹立“劃定紅線,守住底線與資源上限”“像保護眼睛一樣保護生態(tài)環(huán)境,像對待生命一樣對待生態(tài)環(huán)境”等理念。
圖1 中每個字母長度均為32 位,解壓的鑰匙保存在每行行首W0和其后W1~W15中最高的兩位中,拆分對象是W1~W15中后30 位二進制數(shù)據(jù)。鑰匙(Ck)須與鎖(Wk)一一對應,才能順利解鎖,如圖2 所示。
圖1 數(shù)據(jù)幀結構Fig. 1 Data frame structure
圖2 Ck 與Wk 的關系及dnib 位置Fig. 2 Relationship between Ck and Wk and dnib location
Ck為2 bit,取值為00、01、10、11,若壓縮數(shù)據(jù)為Steim1 格式,這4 類鑰匙可拆分Wk數(shù)據(jù),但預警項目中規(guī)定使用Steim2 格式壓縮數(shù)據(jù),需另外4 類鑰匙才可打開第2 道門,從而拆分Wk數(shù)據(jù),而打開第2道門的鑰匙隱藏在Wk的最高2 位中。將Ck稱為“廣義字節(jié)編碼”,Wk的高端2 位(dnib)稱為“細解碼”,其組合使用如下:
根據(jù)上述規(guī)則,按照Ck和dnib 組合定義的拆分方法,可將Wk從最低位開始按照4、5、6、8、10、15、30 位的方式進行切割,分離出的數(shù)據(jù)即為差值。
(2)將差值序列還原為原始數(shù)據(jù)
獲取差值后,通過前向積分常數(shù)還原數(shù)據(jù),前向積分常數(shù)保存在數(shù)據(jù)幀0 中的X0內。依次算出原始數(shù)據(jù),計算步驟如下:
在數(shù)據(jù)幀0 中的Xn內還保存有這組數(shù)據(jù)的反向積分常數(shù),利用該反向積分常數(shù)與最后計算出的樣本原值進行比較。如果二者不同,說明數(shù)據(jù)出現(xiàn)了錯誤。
以預警項目一般站MI3000-C 烈度計數(shù)據(jù)采集器產(chǎn)出數(shù)據(jù)為例,對連續(xù)波形包數(shù)據(jù)進行解析,給出的實際二進制(用十六進制表示)數(shù)據(jù)如圖3 所示。
圖3 MI3000-C 頭段和數(shù)據(jù)幀0 說明Fig. 3 MI3000-C Header and Data frame 0 description
從固定頭段區(qū)和可變頭段區(qū)可提取諸多參數(shù)信息,如可變頭段區(qū)的“C0”字節(jié)低2 bit 中包含數(shù)字0,說明數(shù)據(jù)單位為無量綱,此處解壓后的數(shù)據(jù)單位為count。如果“C0”字節(jié)低2 bit 中包含數(shù)字為1 或2,則必須給出確定的靈敏度因子,可直接輸出物理量值,但目前獲取的數(shù)據(jù)為count 值,所以需要在后端服務器軟件進行實際物理量轉換。在本實例中,可獲取前向積分常數(shù)X0(FFFFFFA9)為十進制?87,反向積分常數(shù)Xn(FFFFFF7A)為十進制?134。隨機抽取W6為樣例,W0和W6數(shù)據(jù)解析及新合成的W6數(shù)據(jù)如圖4 所示。
圖4 W0 和W6 數(shù)據(jù)解析及新合成的W6 數(shù)據(jù)表Fig. 4 W0 and W6 data analysis and newly synthesized W6 data
利用上述分析結果編寫代碼后才能實用化,對數(shù)據(jù)進行逐個解析,首先確定各數(shù)據(jù)的定位,需設置一個參考起點,根據(jù)第44 至第45 個字節(jié)的內容獲取數(shù)據(jù)區(qū)的開始偏移量并進行定位。筆者通過第15 至第17個字節(jié)的通道標識符進行定位,其目的是按通道解壓數(shù)據(jù),并形成相應通道的文本文件,以配套CAL79_噪聲功率譜計算軟件使用。
程序流程如圖5 所示,分為數(shù)據(jù)讀取、字節(jié)序轉換、解壓、校驗、文本文件形成等部分,此處著重對數(shù)據(jù)拆分的實現(xiàn)過程進行說明。
圖5 程序流程Fig. 5 Program flow chart
由程序代碼可知較關鍵的步驟為數(shù)據(jù)定位、以數(shù)據(jù)幀為單位執(zhí)行循環(huán)、采用“按位與”的方法提取信息、對出現(xiàn)負值的情況給予處理。筆者通過大量二進制的位操作提高執(zhí)行效率。
經(jīng)實際測試,該軟件可對河南省一般站MI3000-C、REMOS-SIT4 烈度計產(chǎn)出的小時波形文件進行分道解碼,且可對基準站和基本站使用的EDAS-24 GN(EEW)、TDE-324 FI/CI 數(shù)據(jù)采集器產(chǎn)出的小時波形文件進行分道解碼,并在程序解碼過程中設置了數(shù)據(jù)驗證功能,即前向積分常數(shù)X0加各項差值等于反向積分常數(shù)Xn,程序判斷為真才能輸出結果,增加了數(shù)據(jù)解碼的準確性。在獲取解壓后的分道文本數(shù)據(jù)后,可順利使用噪聲功率譜計算軟件進行臺站背景噪聲環(huán)境評估。
本文對預警項目臺站波形數(shù)據(jù)包格式進行了研究,得出以下結論:
(1)預警項目對數(shù)據(jù)采集器的產(chǎn)出波形數(shù)據(jù)格式做出了統(tǒng)一規(guī)定,對數(shù)據(jù)的部分字節(jié)內容進行了重新定義,準確把握各字節(jié)位的定義和關系是數(shù)據(jù)解析與使用的前提。
(2)連續(xù)波形數(shù)據(jù)包結構中固定頭段區(qū)、可變頭段區(qū)和數(shù)據(jù)區(qū)是有機整體,解壓算法需相關區(qū)域的參數(shù)參與計算,解壓的關鍵在于二進制數(shù)據(jù)按位拆分。
(3)列出了實用的程序代碼,利用C 語言的位操作方法提取有效信息,并拆分數(shù)據(jù)。筆者查閱了部分文獻,發(fā)現(xiàn)針對地震數(shù)據(jù)包結構和壓縮的原理描述較多,且較抽象,可操作性不強,具體實現(xiàn)過程多用一個函數(shù)包一筆帶過,對實現(xiàn)細節(jié)的解讀較少,本文給出了具體實現(xiàn)方法,稍加修改即可運行。