chnhdr

概要

修改指定的头段变量的值

语法

ChnHdr [FILE n1 n2 ...] field v [field v ...] [ALLT v]

输入

FILE n1 n2

只修改内存中的指定文件的头段变量,n 为内存中文件的文件号

field v

SAC 头段变量名及其值1

ALLT v

将所有已定义的时间相关头段变量的值加 v 秒,同时将参考时刻减去 v

说明

关于值 v 的说明:

  • 头段变量的类型和值的类型必须匹配;

  • 对于有内部空格的字符串要用单引号括起来;

  • 逻辑型头段变量的取值为 TRUEFALSEYESNO 也可以接受

  • 对于相对时间头段变量(BEOAFTn),v 可以是相对参考时刻的时间偏移量(浮点型),也可以使用绝对时刻的形式 GMT v1 v2 v3 v4 v5 v6,其中 v1v2v3v4v5v6 是GMT年、一年的第一天、时、分、秒、毫秒。如果 v1 是两位整数,SAC 假定其为当前世纪,除非那个时间是未来时间,那种情况下 SAC 假定是上个世纪,最好还是用4位整数表示年。

  • 对于任意类型的头段变量,均可以设置其值为 undef,使头段变量回到未定义状态

该命令允许你修改指定的一个或多个文件的头段变量值。在未指定文件号的情况下,则对内存中的所有文件进行操作。要将内存中修改后的头段覆盖磁盘文件的头段,需要使用 writewritehdr 命令,SAC 会对新值做有效性检查,不过你可以使用 listhdr 自己检查。

头段中用6个变量定义了参考时刻,这是 SAC 中唯一的绝对时刻,其它时刻都被转换成相对于参考时刻的相对时间。可以使用 ALLT v 修改参考时刻以及相对时间。参考时间被减去了 v 秒,相对时间被加上了 v 秒,这保证了数据的绝对时刻不发生改变。为了方便,你可以通过输入绝对时刻而非相对时间来改变时间偏移变量的值。绝对时刻首先被转换为相对时间,然后再存入头段中。

示例

修改内存中所有文件的事件经纬度、事件名:

SAC> ch evla 34.3 evlo -118.5
SAC> ch kevnm 'LA goes under'

修改第二、四个文件的事件经纬度、事件名:

SAC> ch file 2 4 EVLA 34.3 EVLO -118.5
SAC> ch file 2 4 KEVNM 'LA goes under'

设定初动到时为无定义状态:

SAC> ch a undef

假设你知道事件的GMT起始时间,你想要快速改变头段中所有的时间变量,使得发震时刻是0即参考时间为发震时刻,并且所有的相对时间根据这个时间去纠正相对值。

首先用 GMT 选项设置事件起始时间:

SAC> ch o GMT 1982 123 13 37 10 103

现在使用 listhdr 检查发震时刻 o 相对于当前参考时间的秒数:

SAC> lh o
 o = 123.103

现在使用 ALLT 选项从所有的偏移时间中减去这个值,并加到参考时间上,同时需要改变描述参考时间类型的字段:

SAC> ch allt -123.103 iztype iO

注意这里的负号意味着从偏移时间中减去这个值。

更方便的做法是直接引用头段变量的值:

SAC> ch allt (0 - &1,o&) iztype IO
1

为了保证数据内部一致性,以下头段变量的值不可用该命令修改: nvhdrnptsnwfidnoridnevid