SAC 参考手册
基于 SAC v101.6a
作者: SeisMan
版本: 3.1
日期: 2014-09-25
保护环境,从阅读电子文档开始!
写在第三版前的一些废话
“ 工欲善其事,必先利其器。
—《论语 卫灵公》”
2010 年 10 月,大三,开始接触并学习 SAC;2011 年的暑假开始着手 SAC 文档的翻译
工作;2012 年 01 月,文档的 v1.0 版本发布;2013 年 03 月,文档的 v2.0 版发布。3 年多
的时间过去了,文档更新到了 v3.0 版。
v2.0 大体上算是官方英文文档的译本,整体结构上完全遵循了官方文档的风格。整个
文档的条理不够清晰,教程部分稍显单薄,命令部分也不够完善。
2013 年 11 月,George Helffrich 著的 “The Seismic Analysic Code : A Primer and User’s Guide”
一书出版了。该书基于 MacSAC,与本文档所关注的 SAC 有一些区别,但是精髓部分是一
致的。v3.0 版借鉴了该书的整体结构和部分内容,重新设计了文档结构并重写了教程的大
部分内容,希望能够有一个结构更清晰、内容更丰富的版本。
整个文档分为教程部分和命令部分。教程部分又分为如下几章:
SAC 简介 简单介绍 SAC 软件的相关信息;
SAC 基础 继续阅读所需的基础知识;
SAC 文件格式 详细介绍 SAC 文件格式;
SAC 数据处理 介绍如何利用 SAC 命令进行地震数据处理和分析;
SAC 图像 介绍如何控制 SAC 绘制的图像的细节;
SAC 编程 介绍如何用 SAC 进行数据批处理;
SAC 与脚本 如何在脚本语言(Bash 和 Perl)中调用 SAC;
SAC 函数库 在自己的 C 或 Fortran 程序中调用 SAC 提供的子函数;
SAC I/O 独立实现 SAC I/O 子函数;
SAC 相关工具 与 SAC 有关的一些工具;
对本文档的内容有疑问,或发现任何错误、笔误,欢迎邮件联系我或者在本文档的
GitHub 项目主页上提交 Issue,也欢迎感兴趣的读者 fork 该项目,共同完善文档。
此文档仅供个人学习使用,希望不涉及版权问题。
个人博客: http://seisman.info
项目主页: https://github.com/seisman/SAC_Docs_zh
联系方式: seisman.info@gmail.com
文档发布及更新: http://seisman.info/sac-manual.html
捐赠页面:http://seisman.info/donations.html
作者 : SeisMan
2014 年 04 月 14 日
版本说明
SAC 的开发一直在进行,每一个新版本都可能修订一些 Bug、加入一些新特性或新命
令。下表列出了本文档的版本与 SAC 版本之间的对应关系。就本文档而言,仅保证其中
的所有示例均可在 v101.6a Linux 64 位下正常运行,无法保证在其它版本或其它平台下是
否正常。
文档版本 文档发布日期 SAC 版本 SAC 发布日期
1.0
1.1
1.2
2.0
2.1
2.2
2.3
3.0
3.1
2012-01-08
2012-09-03
2012-09-18
2013-03-29
2013-04-06
2013-04-12
2014-02-22
2014-04-18
2014-09-25
101.4
101.4
101.5
101.5c
101.5c
101.5c
101.5c
101.6a
101.6a
2010-06-07
2010-06-07
2011-11-15
2012-02-01
2012-02-01
2012-02-01
2012-02-01
2013-11-11
2013-11-11
目 录
I SAC 教程
1 SAC 简介
SAC 是什么? . . . . . . . . . . . .
1.1
SAC 发展史 . . . . . . . . . . . . . . .
1.2
SAC 变体 . . . . . . . . . . . . . . . . .
1.3
1.4 安装 SAC . . . . . . . . . . . . . . . . .
1.5 邮件组 . . . . . . . . . . . . . . . . . . .
1
3
3
3
4
4
6
2 SAC 基础
2.1 如何学习 SAC? . . . . . . . . . .
2.2 如何阅读本文档? . . . . . . . .
2.3 启动和退出 . . . . . . . . . . . . . . .
SAC 设计思想 . . . . . . . . . . . .
2.4
SAC 命令初探 . . . . . . . . . . . .
2.5
SAC 命令长什么样? . .
2.5.1
2.5.2 大小写 . . . . . . . . . . . . . . . .
2.5.3 命令简写 . . . . . . . . . . . . . .
2.5.4 查看命令语法 . . . . . . . . .
2.5.5 参数默认值 . . . . . . . . . . . .
7
7
7
8
8
8
8
9
9
9
9
2.6 文档约定 . . . . . . . . . . . . . . . . . 11
2.7 样本数据 . . . . . . . . . . . . . . . . . 11
2.7.1
funcgen . . . . . . . . . . . . . . . . 11
2.7.2 datagen . . . . . . . . . . . . . . . . 12
SAC 的读和写 . . . . . . . . . . . . 12
2.8
2.9 绘图 . . . . . . . . . . . . . . . . . . . . . . 13
2.9.1 plot . . . . . . . . . . . . . . . . . . . 13
2.9.2 plot1 . . . . . . . . . . . . . . . . . . 15
3 SAC 文件格式
17
SAC 格式简介 . . . . . . . . . . . . 17
3.1
3.3
3.4
3.2 两种数据形式 . . . . . . . . . . . . 17
3.2.1 两种形式的互相转换 . . . 17
SAC 头段结构 . . . . . . . . . . . . 18
SAC 头段变量 . . . . . . . . . . . . 20
3.4.1 基本变量 . . . . . . . . . . . . . . 20
3.4.2 数据相关变量 . . . . . . . . . 22
3.4.3 事件相关变量 . . . . . . . . . 22
3.4.4 台站相关变量 . . . . . . . . . 24
3.4.5 震相相关变量 . . . . . . . . . 26
3.4.6 仪器相关变量 . . . . . . . . . 26
3.4.7 其它变量 . . . . . . . . . . . . . . 26
SAC 中的时间概念 . . . . . . . . 26
3.5.1 基本思路 . . . . . . . . . . . . . . 26
3.5.2 在测试中学会领悟 . . . . . 29
3.5.3 总结 . . . . . . . . . . . . . . . . . . 31
3.5
4 SAC 数据处理
33
4.1 数据获取与转换 . . . . . . . . . . 33
4.2 数据重命名 . . . . . . . . . . . . . . . 33
4.3 合并数据 . . . . . . . . . . . . . . . . . 34
4.4 事件信息 . . . . . . . . . . . . . . . . . 35
4.5 台站和分量信息 . . . . . . . . . . 36
4.6 震相理论到时 . . . . . . . . . . . . 36
4.7 数据重采样 . . . . . . . . . . . . . . . 37
4.8 去毛刺 . . . . . . . . . . . . . . . . . . . 38
4.9 分量旋转 . . . . . . . . . . . . . . . . . 38
4.10 去均值、去线性趋势和波
形尖灭 . . . . . . . . . . . . . . . . . . . . . . . . 40
4.11 仪器响应 . . . . . . . . . . . . . . . . 41
4.11.1
transfer . . . . . . . . . . . . . . . 42
4.11.2 EVALRESP 选项 . . . . . . 42
i
5 SAC 图像
5.1.1
5.1.2
4.11.3 POLEZERO 选项 . . . . . 45
4.11.4 FAP 选项 . . . . . . . . . . . . . 47
4.11.5 其它 . . . . . . . . . . . . . . . . . 48
4.12 滤波 . . . . . . . . . . . . . . . . . . . . 48
4.13 质量控制 . . . . . . . . . . . . . . . . 49
4.14 震相拾取 . . . . . . . . . . . . . . . . 49
4.15 数据截窗 . . . . . . . . . . . . . . . . 51
4.15.1 PDW . . . . . . . . . . . . . . . . . 52
4.16 数据分析 . . . . . . . . . . . . . . . . 52
53
5.1 图形设备 . . . . . . . . . . . . . . . . . 53
xwindows . . . . . . . . . . . . . . 53
sgf . . . . . . . . . . . . . . . . . . . . . 53
5.2 绘图命令 . . . . . . . . . . . . . . . . . 53
5.2.1 plot . . . . . . . . . . . . . . . . . . . 54
5.2.2 plot1 . . . . . . . . . . . . . . . . . . 54
5.2.3 plot2 . . . . . . . . . . . . . . . . . . 54
5.2.4 plotpk . . . . . . . . . . . . . . . . . 55
5.2.5 plotpm . . . . . . . . . . . . . . . . . 55
5.2.6 plotsp . . . . . . . . . . . . . . . . . . 56
5.3 图像外观 . . . . . . . . . . . . . . . . . 57
5.3.1 图像元素 . . . . . . . . . . . . . . 57
5.3.2 图像控制 . . . . . . . . . . . . . . 59
5.3.3 线条属性 . . . . . . . . . . . . . . 59
5.4 等值线图 . . . . . . . . . . . . . . . . . 61
5.5 组合图 . . . . . . . . . . . . . . . . . . . 62
5.6 图像保存 . . . . . . . . . . . . . . . . . 64
xwindows . . . . . . . . . . . . . . 64
5.6.1
5.6.2
sgf . . . . . . . . . . . . . . . . . . . . . 64
5.6.3 PS 和 PDF . . . . . . . . . . . . . 65
5.6.4 pssac . . . . . . . . . . . . . . . . . . . 65
5.6.5 几种图像保存方法的
比较 . . . . . . . . . . . . . . . . . . . . . . . . . 65
6 SAC 编程
67
6.1 引用头段变量值 . . . . . . . . . . 68
6.2 黑板变量 . . . . . . . . . . . . . . . . . 68
6.3 内联函数 . . . . . . . . . . . . . . . . . 69
6.3.1 算术运算符 . . . . . . . . . . . . 70
6.4
6.3.2 常规算术运算函数 . . . . . 70
6.3.3 字符串操作函数 . . . . . . . 72
6.3.4 其他函数 . . . . . . . . . . . . . . 73
SAC 宏 . . . . . . . . . . . . . . . . . . . 74
6.4.1 简单的例子 . . . . . . . . . . . . 74
6.4.2 宏搜索路径 . . . . . . . . . . . . 74
6.4.3 宏参数 . . . . . . . . . . . . . . . . 74
6.4.4 关键字驱动参数 . . . . . . . 75
6.4.5 宏参数缺省值 . . . . . . . . . 75
6.4.6 参数请求 . . . . . . . . . . . . . . 76
6.4.7 联接 . . . . . . . . . . . . . . . . . . 76
6.4.8 条件判断 . . . . . . . . . . . . . . 76
6.4.9 循环控制 . . . . . . . . . . . . . . 77
6.4.10 嵌套与递归 . . . . . . . . . . 79
6.4.11 中断宏 . . . . . . . . . . . . . . . 79
6.4.12 宏文件中执行其它程
序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.4.13 转义字符 . . . . . . . . . . . . . 79
7 在脚本中调用 SAC
81
7.1 Bash 中调用 SAC . . . . . . . . . . 81
7.1.1 简介 . . . . . . . . . . . . . . . . . . 81
7.1.2 头段变量和黑板变量 . . . 81
7.1.3 内联函数 . . . . . . . . . . . . . . 82
7.1.4 条件判断和循环控制 . . . 82
7.2 在 Perl 中调用 SAC . . . . . . . . 83
7.2.1 简介 . . . . . . . . . . . . . . . . . . 83
7.2.2 头段变量 . . . . . . . . . . . . . . 83
7.2.3 内联函数 . . . . . . . . . . . . . . 83
7.2.4 条件判断和循环控制 . . . 84
7.3 在 Python 中调用 SAC . . . . . 84
7.3.1 简介 . . . . . . . . . . . . . . . . . . 84
7.3.2 头段变量 . . . . . . . . . . . . . . 85
7.3.3 内联函数 . . . . . . . . . . . . . . 85
7.3.4 条件判断和循环控制 . . . 86
8.1
8 使用 SAC 函数库
87
SAC 库简介 . . . . . . . . . . . . . . . 87
libsacio 库 . . . . . . . . . . . . . . 87
8.1.1
libsac.a 库 . . . . . . . . . . . . . . 88
8.1.2
8.2 调用 libsacio 库 . . . . . . . . . . . . 88
8.2.1
rsac1 . . . . . . . . . . . . . . . . . . . 88
8.2.2
rsac2 . . . . . . . . . . . . . . . . . . . 89
8.2.3 wsac1 . . . . . . . . . . . . . . . . . . 89
8.2.4 wsac2 . . . . . . . . . . . . . . . . . . 89
8.2.5 wsac0 . . . . . . . . . . . . . . . . . . 90
getfhv . . . . . . . . . . . . . . . . . . 90
8.2.6
8.2.7
readbbf . . . . . . . . . . . . . . . . 90
getbbv . . . . . . . . . . . . . . . . . 90
8.2.8
8.3 调用 libsac 库 . . . . . . . . . . . . . 91
8.3.1 next2 . . . . . . . . . . . . . . . . . . 91
8.3.2
xapiir . . . . . . . . . . . . . . . . . . 91
8.3.3 firtrn . . . . . . . . . . . . . . . . . . 91
8.3.4
envelope . . . . . . . . . . . . . . . 91
crscor . . . . . . . . . . . . . . . . . . 92
8.3.5
93
9 SAC I/O 自定义
10 SAC 相关工具
95
10.1 字节序转换 . . . . . . . . . . . . . . 95
sgftops . . . . . . . . . . . . . . . . . . . 95
10.2
sac-config . . . . . . . . . . . . . . . . 96
10.3
10.4
saclst . . . . . . . . . . . . . . . . . . . . 96
10.5 pssac . . . . . . . . . . . . . . . . . . . . 97
99
II SAC 命令手册
11 SAC 命令
101
11.1 about . . . . . . . . . . . . . . . . . . 107
11.2 abs . . . . . . . . . . . . . . . . . . . . . 107
11.3 add . . . . . . . . . . . . . . . . . . . . . 107
11.4 addf . . . . . . . . . . . . . . . . . . . 108
11.5 apk . . . . . . . . . . . . . . . . . . . . . 109
11.6 arraymap . . . . . . . . . . . . . . 111
11.7 axes . . . . . . . . . . . . . . . . . . . 112
11.8 bandpass . . . . . . . . . . . . . . 113
11.9 bandrej . . . . . . . . . . . . . . . 114
11.10 bbfk . . . . . . . . . . . . . . . . . . 115
11.11 beam . . . . . . . . . . . . . . . . . . 117
11.12 begindevices . . . . . . . 118
11.13 beginframe . . . . . . . . . . 118
11.14 beginwindow . . . . . . . . . 119
11.15 benioff . . . . . . . . . . . . . . 120
11.16 binoperr . . . . . . . . . . . . . 120
11.17 border . . . . . . . . . . . . . . . . 121
11.18 capf . . . . . . . . . . . . . . . . . . 122
11.19 chnhdr . . . . . . . . . . . . . . . . 122
11.20 chpf . . . . . . . . . . . . . . . . . . 124
11.21 color . . . . . . . . . . . . . . . . . 124
11.22 comcor . . . . . . . . . . . . . . . . 125
11.23 contour . . . . . . . . . . . . . . 126
11.24 convert . . . . . . . . . . . . . . 127
11.25 convolve . . . . . . . . . . . . . 127
11.26 copyhdr . . . . . . . . . . . . . . 128
11.27 correlate . . . . . . . . . . . 129
11.28 cut . . . . . . . . . . . . . . . . . . . . 130
11.29 cuterr . . . . . . . . . . . . . . . . 132
11.30 cutim . . . . . . . . . . . . . . . . . 133
11.31 datagen . . . . . . . . . . . . . . 134
11.32 decimate . . . . . . . . . . . . . 136
11.33 deletechannel . . . . . . 137
11.34 dif . . . . . . . . . . . . . . . . . . . . 138
11.35 div . . . . . . . . . . . . . . . . . . . . 139
11.36 divf . . . . . . . . . . . . . . . . . . 139
11.37 divomega . . . . . . . . . . . . . 140
11.38 echo . . . . . . . . . . . . . . . . . . 141
11.39 enddevices . . . . . . . . . . 142
11.40 endframe . . . . . . . . . . . . . 142
11.41 envelope . . . . . . . . . . . . . 143
11.42 erase . . . . . . . . . . . . . . . . . 143
11.43 evaluate . . . . . . . . . . . . . 143
11.44 exp . . . . . . . . . . . . . . . . . . . . 145
11.45 exp10 . . . . . . . . . . . . . . . . . 145
11.46 fft . . . . . . . . . . . . . . . . . . . . 145
11.47 fileid . . . . . . . . . . . . . . . . 147
11.48 filenumber . . . . . . . . . . 148
11.49 filterdesign . . . . . . . 148
11.50 fir . . . . . . . . . . . . . . . . . . . . 149
11.51 floor . . . . . . . . . . . . . . . . . 150
11.52 funcgen . . . . . . . . . . . . . . 151
11.53 getbb . . . . . . . . . . . . . . . . . 152
11.54 grayscale . . . . . . . . . . . 153
11.55 grid . . . . . . . . . . . . . . . . . . 154
11.56 gtext . . . . . . . . . . . . . . . . . 155
11.57 hanning . . . . . . . . . . . . . . 156
11.58 help . . . . . . . . . . . . . . . . . . 156
11.59 highpass . . . . . . . . . . . . . 157
11.60 hilbert . . . . . . . . . . . . . . 158
11.61 history . . . . . . . . . . . . . . 159
11.62 ifft . . . . . . . . . . . . . . . . . . 159
11.63 image . . . . . . . . . . . . . . . . . 160
11.64 inicm . . . . . . . . . . . . . . . . . 161
11.65 installmacro . . . . . . . 161
11.66 int . . . . . . . . . . . . . . . . . . . . 162
11.67 interpolate . . . . . . . . . 162
11.68 keepam . . . . . . . . . . . . . . . . 164
11.69 khronhite . . . . . . . . . . . 164
11.70 line . . . . . . . . . . . . . . . . . . 164
11.71 linefit . . . . . . . . . . . . . . 166
11.72 linlin . . . . . . . . . . . . . . . . 166
11.73 linlog . . . . . . . . . . . . . . . . 167
11.74 listhdr . . . . . . . . . . . . . . 167
11.75 load . . . . . . . . . . . . . . . . . . 168
11.76 loadctable . . . . . . . . . . 169
11.77 log . . . . . . . . . . . . . . . . . . . . 170
11.78 log10 . . . . . . . . . . . . . . . . . 170
11.79 loglab . . . . . . . . . . . . . . . . 171
11.80 loglin . . . . . . . . . . . . . . . . 171
11.81 loglog . . . . . . . . . . . . . . . . 171
11.82 lowpass . . . . . . . . . . . . . . 172
11.83 macro . . . . . . . . . . . . . . . . . 173
11.84 map . . . . . . . . . . . . . . . . . . . . 173
11.85 markptp . . . . . . . . . . . . . . 176
11.86 marktimes . . . . . . . . . . . 176
11.87 markvalue . . . . . . . . . . . 177
11.88 mathop . . . . . . . . . . . . . . . . 178
11.89 merge . . . . . . . . . . . . . . . . . 179
11.90 message . . . . . . . . . . . . . . 181
11.91 mtw . . . . . . . . . . . . . . . . . . . . 181
11.92 mul . . . . . . . . . . . . . . . . . . . . 182
11.93 mulf . . . . . . . . . . . . . . . . . . 183
11.94 mulomega . . . . . . . . . . . . . 183
11.95 news . . . . . . . . . . . . . . . . . . 184
11.96 null . . . . . . . . . . . . . . . . . . 184
11.97 oapf . . . . . . . . . . . . . . . . . . 185
11.98 ohpf . . . . . . . . . . . . . . . . . . 186
11.99 pause . . . . . . . . . . . . . . . . . 186
11.100 picks . . . . . . . . . . . . . . . . 187
11.101 plabel . . . . . . . . . . . . . . 188
11.102 plot . . . . . . . . . . . . . . . . . 189
11.103 plot1 . . . . . . . . . . . . . . . . 189
11.104 plot2 . . . . . . . . . . . . . . . . 191
11.105 plotalpha . . . . . . . . . . 192
11.106 plotc . . . . . . . . . . . . . . . . 193
11.107 plotdy . . . . . . . . . . . . . . 195
11.108 plotpk . . . . . . . . . . . . . . 196
11.109 plotpm . . . . . . . . . . . . . . 197
11.110 plotsp . . . . . . . . . . . . . . 198
11.111 plotxy . . . . . . . . . . . . . . 199
11.112 print . . . . . . . . . . . . . . . . 200
11.113 printhelp . . . . . . . . . . 200
11.114 production . . . . . . . . . 201
11.115 qdp . . . . . . . . . . . . . . . . . . . 201
11.116 quantize . . . . . . . . . . . . 202
11.117 quit . . . . . . . . . . . . . . . . . 203
11.118 quitsub . . . . . . . . . . . . . 203
11.119 read . . . . . . . . . . . . . . . . . 203
11.120 readbbf . . . . . . . . . . . . . 205
11.121 readerr . . . . . . . . . . . . . 206
11.122 readhdr . . . . . . . . . . . . . 207
11.123 readsp . . . . . . . . . . . . . . 207
11.124 readtable . . . . . . . . . . 208
11.125 report . . . . . . . . . . . . . . 210
11.126 reverse . . . . . . . . . . . . . 211
11.127 rglitches . . . . . . . . . . 211
11.128 rmean . . . . . . . . . . . . . . . . 212
11.129 rms . . . . . . . . . . . . . . . . . . . 213
11.130 rotate . . . . . . . . . . . . . . 213
11.131 rq . . . . . . . . . . . . . . . . . . . . 215
11.132 rtrend . . . . . . . . . . . . . . 216