楊周勝 楊晶瓊 姚遠
摘要:研究地震數(shù)據(jù)存儲及交換的SEED和miniSEED格式標(biāo)準,對存儲格式中的Steim1和Steim2的壓縮方法和編碼方式進行了深入分析,對比了國內(nèi)外SEED格式的差異,利用MATLAB軟件實現(xiàn)了SEED和miniSEED格式壓縮數(shù)據(jù)的解壓和應(yīng)用。
關(guān)鍵詞:SEED;miniSEED;Steim1;Steim2;數(shù)據(jù)壓縮;編碼方式;數(shù)據(jù)解壓
中圖分類號:P315.63文獻標(biāo)識碼:A文章編號:1000-0666(2019)01-0144-06
0引言
地震數(shù)據(jù)交換標(biāo)準(StandardfortheExchangeofEarthquakeData,簡稱SEED),是國際數(shù)字地震數(shù)據(jù)交換的一種標(biāo)準格式,miniSEED格式(王曉磊等,2016)是SEED格式的簡化版。兩種格式數(shù)據(jù)在測震觀測中被廣泛使用,miniSEED格式主要用于單臺,形成臺站卷,而SEED格式主要用于臺網(wǎng)和臺陣,形成臺網(wǎng)卷。早期的中國數(shù)字地震臺網(wǎng)(ChinaDigitalSeismographNetwork,簡稱CDSN臺)的地震記錄就開始使用SEED格式(和躍時,2007),我國的測震觀測數(shù)據(jù)從“十五”建設(shè)開始即與國際接軌,地震數(shù)據(jù)存儲和交換采用了SEED格式。SEED格式將地震波形數(shù)據(jù)進行了壓縮,有效地解決了存儲效率,但同時也帶來了應(yīng)用方面的不便。一般使用者通過兩種方式來實現(xiàn)應(yīng)用:一是利用公開的轉(zhuǎn)換軟件,如rdSEED(何加勇,2009),進行一次轉(zhuǎn)換成ASCII碼,然后再編寫軟件轉(zhuǎn)換成自己需要的格式;二是研究壓縮技術(shù)編寫軟件,直接轉(zhuǎn)換為設(shè)定的格式。第一種方式繁雜,使用起來不方便,靈活性不強;第二種方式,由于標(biāo)準和文獻的描述和地震波形數(shù)據(jù)的實際存在一定的出入,實現(xiàn)起來有非常大的困難。檢索以往文獻,多側(cè)重于標(biāo)準、壓縮技術(shù)等方面的探討,對具體的壓縮方法和解壓轉(zhuǎn)換方面的論述寥寥無幾。本文基于第二種方式,深入研究這兩種格式數(shù)據(jù),找出標(biāo)準和文獻描述與實際地震記錄的差異,利用MATLAB實現(xiàn)了壓縮數(shù)據(jù)的解壓和各種轉(zhuǎn)換。
1SEED和miniSEED格式
1.1格式體
SEED格式體包含控制頭段(ASCII格式)和時間序列(二進制),其中,控制頭段包含關(guān)于卷、臺站、通道和數(shù)據(jù)的輔助信息,時間序列(二進制)包含原始數(shù)據(jù)以及嵌入的與特定通道和時間有關(guān)的輔助信息。
1.2控制頭段
控制頭段共4種:卷索引控制頭段,包含關(guān)于數(shù)據(jù)的時間、邏輯記錄長度、該邏輯卷的格式版本以及對臺站控制頭段和時間片控制頭段的索引信息(朱文林等,1994a,b);縮略語字典控制頭段,包含用在其它控制頭段中的縮略語的定義;臺站控制頭段,提供有關(guān)臺站和它的所有通道的信息;時間片控制頭段,標(biāo)識隨后的時間序列所處的時間段。
1.3數(shù)據(jù)記錄
數(shù)據(jù)記錄緊接著控制頭段,用于存儲數(shù)據(jù)的部分。每個記錄長度為512字節(jié),若干個記錄組成一個數(shù)據(jù)記錄。miniSEED格式記錄中,3個方向的數(shù)據(jù)一起存儲,不同方向的記錄交替存放,某一方向可連續(xù)使用幾個記錄,數(shù)據(jù)結(jié)構(gòu)如圖1所示。
每個記錄中又分為8幀,每幀64字節(jié)。記錄的第一幀,前48個字節(jié)稱為固定頭段區(qū),統(tǒng)一存放固定頭段信息,其中,前20個字節(jié)采用ASCII,后面的28個字節(jié)采用二進制存儲。固定頭段區(qū)從數(shù)據(jù)記錄的第一個字節(jié)開始,前6個字節(jié)為序號,第七個字節(jié)是一個ASCII字符“D”,表示其為一數(shù)據(jù)記錄,第八個字節(jié)為ASCII字符空格。接下來的12個字節(jié)包含該記錄的臺站、位置及通道標(biāo)識符信息。頭段的二進制部分的內(nèi)容為:記錄起始時間、樣本數(shù)目、采樣率因子、采樣率乘數(shù)、后面的子塊數(shù)目、數(shù)據(jù)開始偏移量、第一個子塊偏移量等信息。
第一幀中固定頭段區(qū)后的16個字節(jié),采用二進制存儲,用于存儲子塊,一般可存放2個子塊,如果子塊數(shù)目較多,可采用可變頭段(萬永革等,1995)的方式進行存放。固定頭段的后16個字節(jié)根據(jù)實際進行子塊存放,如有2個子塊,則16個字節(jié)全部使用;如果只有1個子塊,則其余字節(jié)為空閑;如果不接任何子塊,則后續(xù)16個字節(jié)均為空閑。固定頭段的內(nèi)容如表1所示。
SEED格式記錄是對miniSEED記錄的重新整理,3個方向獨立,并以4096字節(jié)為一記錄,實際記錄中是將同一方向連續(xù)8個512字節(jié)的記錄串起來,形成一個SEED記錄,數(shù)據(jù)結(jié)構(gòu)見圖2。
2Steim壓縮算法
Steim壓縮算法是地震數(shù)據(jù)交換標(biāo)準的核心壓縮技術(shù),其方法是在一個記錄中,先存放1個32
位數(shù)值的前向積分常數(shù)和1個32位數(shù)值的反向積分常數(shù),后接連續(xù)記錄的差值,由于差值較小,占用的數(shù)據(jù)位也相應(yīng)變少,這樣可以顯著地壓縮數(shù)據(jù),節(jié)省存儲空間。早期采用Steim1壓縮算法(李鉑等,2009),由于方法的改進,后來出現(xiàn)了壓縮效率更高的Steim2算法(王洪體等,2004)。
2.1Steim1壓縮算法
地震記錄的兩個連續(xù)樣本之間的差值一般比較小,只有在大地震時,其差值才可能大于8位二進制數(shù)所能表示的最大值,對這種極少發(fā)生的情況,可以使用一個2字節(jié)或4字節(jié)數(shù)值來表示樣本差值。Steim1壓縮算法就是一種編碼方式,它確定樣本差值采用的字節(jié)數(shù),對于99%以上的地震記錄,樣本差值只用1個字節(jié)存儲。因此,Steim1壓縮方式節(jié)約了存儲,壓縮比可達3.5∶1。Steim1壓縮方式的存儲格式為:前向積分常數(shù)、反向積分常數(shù)、兩者之間的全部差值,反向積分常數(shù)可對差值進行校核。
512字節(jié)的數(shù)據(jù)記錄中,第一幀存放固定頭段信息,后7幀存放地震波形數(shù)據(jù),每幀均為64字節(jié)。存放數(shù)據(jù)的每一幀的前4個字節(jié),存有16個2位廣義字節(jié)編碼Ci(i取值0~15),每個Ci對應(yīng)4個字節(jié),Ci值確定對應(yīng)4個字節(jié)的存儲的差值數(shù)量。