✍️ 田冬冬 , 陈箫翰 , 周茂 , 王亮 • 📅 2025-12-30

# coupe

官方文档:

  coupe

简介:

  绘制震源机制解的剖面图

meca 在绘制震源球时，本质上是取了一个水平剖面，并将三维震源球的下半球投影到该水平剖面上。 而 coupe 则更灵活一些，可以将三维震源球投影到任意一个剖面上（例如垂直平面）。

- 对于一个水平剖面，会将下半球投影到平面上（即 meca 的做法）

- 对于一个垂直剖面，会将垂直平面 后方 的半球投影到平面上

- 对于任意一个非水平的平面而言：

  - u方向为平面的最速下降方向

  - s方向为平面的走向方向

输入数据中定义在 r, t, f 座标系中的矩张量会被重新定义到新的 -u^s, -u, s 座标系中。 在实际绘图中，通常使用 -JX15c/-5c 这样的投影参数定义一个Y轴正方向向下的笛卡尔座标系进行绘图。 三维震源球投影在这个笛卡尔座标系中的X座标为s方向上相对于剖面起点的距离，单位km。 而Y座标为u方向上相对于剖面起点的距离，单位km。对于一个垂直剖面，Y座标即为深度。

## 语法

gmt coupe [ table ] `-J` parameters `-R` region `-A` a|b|c|d params[+c[n|t]][+d dip][+r[a|e|dx]][+w width][+z[s]a|e|dz|min/max] `-S` format[scale][+a angle][+f font][+j justify][+l][+m][+o dx[/dy]][+s reference] [ `-B`[p|s]parameters ] [ `-C` cpt ] [ `-D`[+c][+g[fill]][+o dx[/dy]][+p pen][+s[symbol]size] ] [ `-E` fill ] [ `-F` mode[args] ] [ `-G` fill ] [ `-H`[scale] ] [ `-I`[intens] ] [ `-L`[pen] ] [ `-N` ] [ `-Q` ] [ `-T`[plane][+p pen] ] [ `-U`[stamp] ] [ `-V`[level] ] [ `-W` pen ] [ `-X`[a|c|f|r][xshift] ] [ `-Y`[a|c|f|r][yshift] ] [ `-di` nodata[+c col] ] [ `-e` regexp ] [ `-h` headers ] [ `-i` flags ] [ `-p` flags ] [ `-qi` flags ] [ `-t` transp ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

  一个或多个ASCII或二进制表数据。若不提供表数据，则会从标准输入中读取。

## 必须选项

-J

-J projection

  设置地图投影方式。 (参数详细介绍)

-R

-R xmin/xmax/ymin/ymax[+r][+u unit]

  指定数据范围。 (参数详细介绍)

-A

-Aa|b|c|d params[+d dip][+r[a|e|dx]][+w width]

  以多种方式指定剖面

  -Aa lon1/lat1/lon2/lat2

  > - lon1/lat1 剖面起点的经纬度

  > - lon2/lat2 剖面终点的经纬度

  > - dip 剖面所在平面的倾角。0表示水平剖面，90表示垂直剖面。默认为90度垂直剖面。

  > - width 剖面两侧每一侧的宽度范围，单位为km（即剖面不是一个平面，而是一个有厚度的长方体）。宽度范围以外的数据点会被剔除。注意单位固定为km不可更改。默认为无限宽度，即囊括剖面两侧所有的数据点。

  > - +r 自动计算作图范围，不需要再设置 `-R` 。在后面附加 a 会对作图范围自动进行四舍五入。附加 e 则表示进行精确计算（默认）。也可以附加一个数值 dx ，表示四舍五入到 dx 的整数倍。

  -Ab lon1/lat1/strike/length

  > - lon1/lat1 剖面起点的经纬度

  > - strike 是剖面的走向的方位角

  > - length 是剖面的长度，单位固定为km不可更改。

  > - 其他参数与 -Aa 相同

  -Ac x1/y1/x2/y2

  > 与 -Aa 选项相同，只是 x/y 为笛卡尔坐标而不是地理坐标

  -Ad x1/y1/strike/length

    与 -Ab 选项相同，只是 x/y 为笛卡尔坐标而不是地理坐标

-S

-S format[size][+a angle][+f font][+j justify][+l][+m][+o dx[/dy]][+s reference]

  指定输入数据的格式、震源球大小等属性。

  format 用于指定输入的震源机制解的格式。

  size 表示震级为 5 时的震源球大小（即标量地震矩 \(M_0 = 4.0 \times 10^{23}\) dyn cm）。 其他的震源球半径与震级成正比变化。使用 +l 则半径将与地震矩成正比。 使用 +s 把参考震级（或地震矩）从 5 级改为 reference。 使用 +m 则不同震级所有震源球大小相同。

  每个震源球都可以有一个可选的标签。标签默认位于震源球的上方。

  - +a angle ：设置标签文本字符串的角度

  - +f font ：设置标签文本字符串的文本属性（大小、字体名称、颜色）

  - +j justify ：设置标签相对于震源球的位置 [默认为 BC，即正上方]

  - +o dx[/dy] ：设置标签的额外偏移量

  注意：如果不给出 size，则需要从输入数据中读取 size 列。详细说明请参考 数据列顺序 。

  -S format 可以指定为如下格式：

  -Sa

    Aki and Richards约定的震源机制解格式。输入文件的具体格式为:

        X  Y  depth  strike  dip  rake  mag  [newX  newY]  [title]

    - X 和 Y 为震源经度和纬度

    - depth 为震源深度，单位为km

    - strike、dip、rake 为断层的三个基本参数，单位为度

    - mag 为地震震级

    - newX 和 newY 震源球在图上的经纬度[可选]。默认震源球会放在 X 和 Y 处，指定新的震源球放置位置 newX 和 newY 以使得震源球与震源位置错开。

    - title 震源球标签[可选]

  -Sc

    Global CMT约定的震源机制解格式。输入文件的具体格式为:

        X Y depth strike1 dip1 rake1 strike2 dip2 rake2 mantissa exponent [newX newY] [title]

    - X 和 Y 为震源经度和纬度

    - depth 为震源深度，单位为km

    - 两组 strike、dip、rake 为两个断层面的基本参数

    - mantissa 和 exponent 是地震标量矩的尾数和指数部分。 例如，地震标量矩为9.56e+26 dyne-cm，则 mantissa=9.56，exponent=26

    - newX 和 newY 震源球在图上的经纬度[可选]。默认震源球会放在 X 和 Y 处，指定新的震源球放置位置 newX 和 newY 以使得震源球与震源位置错开。

    - title 震源球标签[可选]

  -Sm|d|z

    地震矩张量。输入数据格式为:

        X Y depth mrr mtt mff mrt mrf mtf exp [newX newY] [title]

    - X 和 Y 为震源经度和纬度

    - depth 为震源深度，单位为km

    - mrr 等是地震矩的6个分量，单位是 \(10^{exp}\) dyne-cm

    - exp 地震矩的指数部分。例如 mrr=2.5，exp=26 ，则真实 mrr = 2.0e26

    - newX 和 newY 震源球在图上的经纬度[可选]。默认震源球会放在 X 和 Y 处，指定新的震源球放置位置 newX 和 newY 以使得震源球与震源位置错开。

    - title 震源球标签[可选]

    地震矩张量可以分解成各向同性部分（ISO）、双力偶部分（DC）和补偿线性向量 偶极部分（CLVD）。

    - m 表示绘制完整的地震矩张量（ISO+DC+CLVD）

    - d 表示仅绘制地震矩的双力偶部分（DC），张量的迹为零且行列式为零

    - z 表示仅绘制地震矩的各向异性部分（DC+CLVD），张量的迹为零

    说明：

    - 6个分量使用的坐标系为USE坐标系，与Global CMT的坐标系一致

    - Global CMT的矩张量解不包含各向同性部分，因而 -Sm 和 -Sz 的效果相同。

  -Sp

    由两个断层平面的部分数据构成的机制解。输入数据格式为:

        X Y depth strike1 dip1 strike2 fault mag [newX newY] [title]

    - X 和 Y 为震源经度和纬度

    - depth 为震源深度，单位为km

    - strike1 和 dip1 平面1的断层参数，strike2 是平面2的断层参数

    - fault 取-1或+1，表示正断层和逆断层

    - mag 地震震级

    - newX 和 newY 震源球在图上的经纬度[可选]。默认震源球会放在 X 和 Y 处，指定新的震源球放置位置 newX 和 newY 以使得震源球与震源位置错开。

    - title 震源球标签[可选]

  -Sx|y|t

    指定T、N、P轴的方位和大小。输入数据格式为:

        X Y depth Tvalue Tazim Tplunge Nvalue Nazim Nplunge Pvalue Pazim Pplunge exp [newX newY] [title]

    - X 和 Y 为震源经度和纬度

    - depth 为震源深度，单位为km

    - Tvalue 等9个量定义了T、N、P轴的大小和方向

    - exp 是 Tvalue 等的指数部分

    - newX 和 newY 震源球在图上的经纬度[可选]。默认震源球会放在 X 和 Y 处，指定新的震源球放置位置 newX 和 newY 以使得震源球与震源位置错开。

    - title 震源球标签[可选]

    地震矩张量可以分解成各向同性部分（ISO）、双力偶部分（DC）和补偿线性向量 偶极部分（CLVD）。

    - x 绘制完整的地震矩张量 (ISO+DC+CLVD)

    - y 只绘制地震矩的双力偶部分 (DC)，张量的迹为零且行列式为零

    - t 只绘制地震矩的各向异性部分 (DC+CVLD)，张量的迹为零

## 可选选项

-B

-B parameters

  设置底图边框和轴属性。 (参数详细介绍)

-C

-C cpt

  设置 CPT 根据数据文件中第三列的值（即地震深度）确定震源球的压缩部分的颜色。

-D

-D[+c][+g[fill]][+o dx[/dy]][+p pen][+s[symbol]size]

  将投影后的震源机制偏移到输入文件最后两列（在可选文本字符串之前）中给出的备用距离和深度。 另外，如果这两列中给出的是备用地理坐标，则使用 +c 先将其转换为剖面内的 距离, 深度 坐标， 在投影到绘图位置后，还可以通过固定绘图偏移 +o dx/dy 进一步调整它们。 或者使用 +o 将这两列的内容解释为绘图偏移量，或者为所有调整后的事件绘图位置附加固定偏移量 dx/dy。 将绘制一条连接原始位置和重新定位后的震源球位置的直线，并可选择在原始位置放置一个小符号 [圆圈]。 使用 +s size 设置符号的直径 [默认无符号]。 可以将圆圈更改为 plot 中的任何标准几何符号， 即 a | c | d | g | h | i | n | p | s | t | x [默认为 c ]。 该符号将填充震源球的颜色，但也可以选择固定颜色 (+g fill) 或不填充 (+g)。 连线画笔默认为通过 `-W` 给出的设置，但可以通过使用 +p pen [0.25p] 进行覆盖。 注意：如果选择了叉号符号 (x)，则没有填充，因为它只是两条笔划线。使用 `-W` 设置线条粗细，并附加 +c 为叉号着色（与其他符号一致）。

-E

-E fill

  扩张部分的填充色 [默认为白色]

-F

-F mode[args]

  设置多个属性，可重复使用多次

  -Fs symbol[size]

    不绘制震源球，仅绘制一个符号。

    symbol 为符号类型，可以选择 c | d | i | s | t | x， 符号的具体含义见 plot 模块的 `-S` 选项。size 为符号大小，后面可以附加单位 c, i 或 p 。

    输入数据的格式为:

        longitude latitude depth [event_label]

    若未指定 size，则需要从输入数据的第四列读入符号大小，其余列向后移动。 event_label 为字符串标签的文本。

  -Fa[size[/Psymbol[Tsymbol]]]

    计算并在震源球上P轴和T轴处绘制符号。 size 是符号大小； Psymbol 和 Tsymbol 符号可以取 c | d | h | i | p | s | t | x， 具体含义见 plot `-S` 选项 [默认值为 6p/cc]

  -Fe fill

    设置T轴符号的填充色。默认为 `-E` 控制。

  -Fg fill

    设置P轴符号的填充色。默认为 `-G` 控制。

  -Fp[pen]

    绘制P轴符号的轮廓。如果不设置画笔属性 pen 则默认为 `-W` 控制。

  -Ft[pen]

    绘制T轴符号的轮廓。如果不设置画笔属性 pen 则默认为 `-W` 控制。

  -Fr[fill]

    在震源球标签后加一个方框 [默认填充色为白色]

-G

-G fill

  指定压缩部分的填充色 [默认为黑色]

-H

-H[scale]

  使用从数据集中读取的 scale 对每条记录的符号大小和画笔宽度进行缩放，该比例位于（可选的）*size* 列之后的首列 [默认不缩放]。 符号大小既可以由 `-S` 提供，也可以通过输入的 size 列提供。或者，也可以附加一个常数 scale 来代替从比例列中读取。

-I

-I intens

  使用提供的 intens 值（在 ±1 范围内），通过模拟光照来调制压缩填充颜色 [无]。 如果未提供强度值，将从由 `-S` 确定的必需输入列之后的额外数据列中读取 intens。

-L

-L[pen]

  绘制震源球外部轮廓。如果不设置画笔属性 pen 则默认为 `-W` 控制。

-N

-N

  绘图区域外的震源球也要绘制，默认不绘制。

-Q

-Q

  默认会生成一些临时文件，其中包含了剖面和剖面上的震源机制的信息， 供调试时使用。使用该选项，则不会生成这些临时文件。

-T

-T[plane][+p pen]

  绘制断层平面。

  plane 可以取：

  - 0 绘制两个断层面

  - 1 绘制第一个断层面

  - 2 绘制第二个断层面

  可以添加 +p pen 设置画笔属性。如果不设置画笔属性则默认为 `-W` 控制。

  对于双力偶机制解而言，`-T` 选项只绘制震源球的圆周和断层平面，不填充颜色； 对于非双力偶机制解而言，`-T` 0 在震源球的基础上覆盖上透明的断层平面。

-U

-U[label][+c][+j just][+o dx/dy]

  在图上绘制GMT时间戳logo。 (参数详细介绍)

-V

-V[level]

  设置 verbose 等级 [w]。 (参数详细介绍)

-W

-W[pen]

  设置断层平面的画笔属性 [默认为 0.25p,black,solid]

-X

-Y

-X[a|c|f|r][xshift[u]]

-Y[a|c|f|r][yshift[u]]

  移动绘图原点。 (参数详细介绍)

-di

-di nodata

  将输入数据某些特定值当作NaN。 (参数详细介绍)

-e

-e[~]"pattern" | -e[~]/regexp/[i]

  筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)

-h

-h[i|o][n][+c][+d][+m segheader][+r remark][+t title]

  在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)

-i

-i cols[+l][+s scale][+o offset][,...][,t[word]]

  对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-p

-p[x|y|z]azim[/elev[/zlevel]][+w lon0/lat0[/z0]][+v x0/y0]

  设置3D透视视角。 (参数详细介绍)

-qi

-qi[~]rows[+c col][+a|f|s]

  筛选输入的行或数据范围。 (参数详细介绍)

-t

-t[transp]

  设置图层透明度（百分比）。取值范围为0（不透明）到100（全透明）。 (参数详细介绍)

-:

-:[i|o]

  交换输入或输出数据的前两列。 (参数详细介绍)

-^ 或 -

  显示简短的帮助信息，包括模块简介和基本语法信息（Windows下只能使用 -）

-+ 或 +

  显示帮助信息，包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

  显示完整的帮助信息，包括模块简介、基本语法以及所有选项的说明

--PAR=value

  临时修改GMT参数的值，可重复多次使用。参数列表见 配置参数

## 数据列顺序

`-S` 选项决定了生成所选符号所需的尺寸列数量，但如果未给出 size，则期望从文件中读取 size。 此外，使用 `-H` 、 `-I` 和 `-t` 选项将需要额外的列。 数据记录的顺序是固定的，与选项顺序无关，即使并非所有项目都被激活也是如此。数据列应该按以下顺序排列:

    lon lat depth symbol-columns [size] [scale] [intens] [transp [transp2]] [trailing-text]

带中括号的项是可选的，并受下列选项的控制：

1. 不带参数 size 的 `-S` 需要给出 size 列

2. 不带参数 scale 的 `-H` 需要给出 scale 列

3. 不带参数 intens 的 `-I` 需要给出 intens 列

4. 不带参数的 `-t` 需要给出 transp 列。

尾随文本 trailing-text 始终是可选的。

注意：(1) depth 通常是必需的，但如果为 meca 指定了 -Fo，则不需要该列。 (2) 可以使用 `-i` 重新排列数据记录以匹配预期的格式。

## 示例

从文本文件 data.txt 中读取数据，只挑选垂直剖面两侧4km的数据点绘图，自动计算作图范围。示例数据下载：`coupe/data.txt`

    #!/usr/bin/env bash
    gmt begin coupe_ex1
        gmt coupe data.txt -JX15c/-5c -Sa0.9c -Aa78.43/41.26/78.70/41.05+d90+w4+r -W0.4p -GLIGHTSEAGREEN -Q
        gmt basemap -BWSen -Byaf+l"Depth (km)" -Bxaf+l"Distance (km)"
    gmt end show

## 相关模块

meca, polar, basemap, plot