APP下载

地震交换标准数据的压缩技术和数据解压

2019-08-27杨周胜杨晶琼姚远

地震研究 2019年1期

杨周胜 杨晶琼 姚远

摘要:研究地震数据存储及交换的SEED和miniSEED格式标准,对存储格式中的Steim1和Steim2的压缩方法和编码方式进行了深入分析,对比了国内外SEED格式的差异,利用MATLAB软件实现了SEED和miniSEED格式压缩数据的解压和应用。

关键词:SEED;miniSEED;Steim1;Steim2;数据压缩;编码方式;数据解压

中图分类号:P315.63文献标识码:A文章编号:1000-0666(2019)01-0144-06

0引言

地震数据交换标准(StandardfortheExchangeofEarthquakeData,简称SEED),是国际数字地震数据交换的一种标准格式,miniSEED格式(王晓磊等,2016)是SEED格式的简化版。两种格式數据在测震观测中被广泛使用,miniSEED格式主要用于单台,形成台站卷,而SEED格式主要用于台网和台阵,形成台网卷。早期的中国数字地震台网(ChinaDigitalSeismographNetwork,简称CDSN台)的地震记录就开始使用SEED格式(和跃时,2007),我国的测震观测数据从“十五”建设开始即与国际接轨,地震数据存储和交换采用了SEED格式。SEED格式将地震波形数据进行了压缩,有效地解决了存储效率,但同时也带来了应用方面的不便。一般使用者通过两种方式来实现应用:一是利用公开的转换软件,如rdSEED(何加勇,2009),进行一次转换成ASCII码,然后再编写软件转换成自己需要的格式;二是研究压缩技术编写软件,直接转换为设定的格式。第一种方式繁杂,使用起来不方便,灵活性不强;第二种方式,由于标准和文献的描述和地震波形数据的实际存在一定的出入,实现起来有非常大的困难。检索以往文献,多侧重于标准、压缩技术等方面的探讨,对具体的压缩方法和解压转换方面的论述寥寥无几。本文基于第二种方式,深入研究这两种格式数据,找出标准和文献描述与实际地震记录的差异,利用MATLAB实现了压缩数据的解压和各种转换。

1SEED和miniSEED格式

1.1格式体

SEED格式体包含控制头段(ASCII格式)和时间序列(二进制),其中,控制头段包含关于卷、台站、通道和数据的辅助信息,时间序列(二进制)包含原始数据以及嵌入的与特定通道和时间有关的辅助信息。

1.2控制头段

控制头段共4种:卷索引控制头段,包含关于数据的时间、逻辑记录长度、该逻辑卷的格式版本以及对台站控制头段和时间片控制头段的索引信息(朱文林等,1994a,b);缩略语字典控制头段,包含用在其它控制头段中的缩略语的定义;台站控制头段,提供有关台站和它的所有通道的信息;时间片控制头段,标识随后的时间序列所处的时间段。

1.3数据记录

数据记录紧接着控制头段,用于存储数据的部分。每个记录长度为512字节,若干个记录组成一个数据记录。miniSEED格式记录中,3个方向的数据一起存储,不同方向的记录交替存放,某一方向可连续使用几个记录,数据结构如图1所示。

每个记录中又分为8帧,每帧64字节。记录的第一帧,前48个字节称为固定头段区,统一存放固定头段信息,其中,前20个字节采用ASCII,后面的28个字节采用二进制存储。固定头段区从数据记录的第一个字节开始,前6个字节为序号,第七个字节是一个ASCII字符“D”,表示其为一数据记录,第八个字节为ASCII字符空格。接下来的12个字节包含该记录的台站、位置及通道标识符信息。头段的二进制部分的内容为:记录起始时间、样本数目、采样率因子、采样率乘数、后面的子块数目、数据开始偏移量、第一个子块偏移量等信息。

第一帧中固定头段区后的16个字节,采用二进制存储,用于存储子块,一般可存放2个子块,如果子块数目较多,可采用可变头段(万永革等,1995)的方式进行存放。固定头段的后16个字节根据实际进行子块存放,如有2个子块,则16个字节全部使用;如果只有1个子块,则其余字节为空闲;如果不接任何子块,则后续16个字节均为空闲。固定头段的内容如表1所示。

SEED格式记录是对miniSEED记录的重新整理,3个方向独立,并以4096字节为一记录,实际记录中是将同一方向连续8个512字节的记录串起来,形成一个SEED记录,数据结构见图2。

2Steim压缩算法

Steim压缩算法是地震数据交换标准的核心压缩技术,其方法是在一个记录中,先存放1个32

位数值的前向积分常数和1个32位数值的反向积分常数,后接连续记录的差值,由于差值较小,占用的数据位也相应变少,这样可以显著地压缩数据,节省存储空间。早期采用Steim1压缩算法(李铂等,2009),由于方法的改进,后来出现了压缩效率更高的Steim2算法(王洪体等,2004)。

2.1Steim1压缩算法

地震记录的两个连续样本之间的差值一般比较小,只有在大地震时,其差值才可能大于8位二进制数所能表示的最大值,对这种极少发生的情况,可以使用一个2字节或4字节数值来表示样本差值。Steim1压缩算法就是一种编码方式,它确定样本差值采用的字节数,对于99%以上的地震记录,样本差值只用1个字节存储。因此,Steim1压缩方式节约了存储,压缩比可达3.5∶1。Steim1压缩方式的存储格式为:前向积分常数、反向积分常数、两者之间的全部差值,反向积分常数可对差值进行校核。

512字节的数据记录中,第一帧存放固定头段信息,后7帧存放地震波形数据,每帧均为64字节。存放数据的每一帧的前4个字节,存有16个2位广义字节编码Ci(i取值0~15),每个Ci对应4个字节,Ci值确定对应4个字节的存储的差值数量。