合并数据

相关命令merge

相关脚本Perl 脚本Python 脚本

有些时候,从SEED或miniSEED中提取出的同一台站同一分量的连续波形数据,会被分割成多个等长或不等长的文件,数据断开的可能原因是仪器在某些时刻存在问题导致连续数据出现间断,也可能是出于其它考虑将数据进行切割。此时需要首先对数据进行合并。

假定解压出来的台网 NET、台站 STA、位置为 00BHZ 分量的连续波形被分割成了多个文件,需要将多个文件合并成单个文件。

SAC 在 v101.6 之前,只能先读取第一段数据,然后合并第二段数据,再合并第三段数据。对于多个数据段的合并,需要执行多次合并命令,且合并时文件的顺序必须按照绝对时间的先后顺序。即使用如下命令进行合并:

SAC> r 2012.055.12.00.00.0000.NET.STA.00.BHZ.Q.SAC
SAC> merge 2012.055.12.25.00.0000.NET.STA.00.BHZ.Q.SAC
SAC> merge 2012.055.12.40.00.0000.NET.STA.00.BHZ.Q.SAC
SAC> ...
SAC> merge 2012.055.13.20.00.0000.NET.STA.00.BHZ.Q.SAC
SAC> w NET.STA.00.BHZ

SAC 从 v101.6 开始重写了 merge 命令,可以使用如下更简洁的形式:

SAC> r *.NET.STA.00.BHZ        # 读入所有需要合并的文件
SAC> merge                     # 内存中的所有文件被合并为一个文件
SAC> w NET.STA.00.BHZ          # 写回到磁盘中

对于所有要合并的数据文件,SAC 会检测 knetwkkstnmkcmpnmdelta 是否完全匹配,并智能判断每个文件的合并顺序。

实际合并的过程中,可能会出现数据间断或数据重叠的情况:

  • 若数据存在间断,可对其直接补零或线性插值;

  • 若数据存在重叠,则可以比较重叠部分数据是否相同或对重叠的波形进行平均。