✍️ 田冬冬 , 陈箫翰 , 周茂 , 王亮  •  📅 2026-01-05

meca

官方文档:

meca

简介:

绘制震源机制解

语法

gmt meca [ table ] -Jparameters -Rregion -Sformat[scale][+aangle][+ffont][+jjustify][+l][+m][+odx[/dy]][+sreference] [ -A[+g[fill]][+odx[/dy]][+ppen][+s[symbol]size] ] [ -B[p|s]parameters ] [ -Ccpt ] [ -Ddepmin/depmax ] [ -Efill ] [ -Fmode[args] ] [ -Gfill ] [ -H[scale] ] [ -I[intens] ] [ -L[pen] ] [ -N ] [ -T[plane][+ppen] ] [ -U[stamp] ] [ -V[level] ] [ -Wpen ] [ -X[a|c|f|r][xshift] ] [ -Y[a|c|f|r][yshift] ] [ -dinodata[+ccol] ] [ -eregexp ] [ -hheaders ] [ -iflags ] [ -pflags ] [ -qiflags ] [ -ttransp ] [ -:[i|o] ] [ --PAR=value ]

输入数据

table

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

必须选项

-J
-Jprojection

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

-R
-Rxmin/xmax/ymin/ymax[+r][+uunit]

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

备注

请注意,下面的各个震源机制解格式中, 设置新的震源球放置位置 newXnewY 必须另外再加上 -A 选项后才可生效。

-S
-Sformat[size][+aangle][+ffont][+jjustify][+l][+m][+odx[/dy]][+sreference]

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

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

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

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

  • +aangle :设置标签文本字符串的角度

  • +ffont :设置标签文本字符串的文本属性(大小、字体名称、颜色)

  • +jjustify :设置标签相对于震源球的位置 [默认为 BC,即正上方]

  • +odx[/dy] :设置标签的额外偏移量

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

-Sformat 可以指定为如下格式:

-Sa

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

X  Y  depth  strike  dip  rake  mag  [newX  newY]  [title]
  • XY 为震源经度和纬度

  • depth 为震源深度,单位为km

  • strikediprake 为断层的三个基本参数,单位为度

  • mag 为地震震级

  • newXnewY 震源球在图上的经纬度[可选]。默认震源球会放在 XY 处,指定新的震源球放置位置 newXnewY 以使得震源球与震源位置错开。

  • title 震源球标签[可选]

-Sc

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

X Y depth strike1 dip1 rake1 strike2 dip2 rake2 mantissa exponent [newX newY] [title]
  • XY 为震源经度和纬度

  • depth 为震源深度,单位为km

  • 两组 strikediprake 为两个断层面的基本参数

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

  • newXnewY 震源球在图上的经纬度[可选]。默认震源球会放在 XY 处,指定新的震源球放置位置 newXnewY 以使得震源球与震源位置错开。

  • title 震源球标签[可选]

-Sm|d|z

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

X Y depth mrr mtt mff mrt mrf mtf exp [newX newY] [title]
  • XY 为震源经度和纬度

  • depth 为震源深度,单位为km

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

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

  • newXnewY 震源球在图上的经纬度[可选]。默认震源球会放在 XY 处,指定新的震源球放置位置 newXnewY 以使得震源球与震源位置错开。

  • 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]
  • XY 为震源经度和纬度

  • depth 为震源深度,单位为km

  • strike1dip1 平面1的断层参数,strike2 是平面2的断层参数

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

  • mag 地震震级

  • newXnewY 震源球在图上的经纬度[可选]。默认震源球会放在 XY 处,指定新的震源球放置位置 newXnewY 以使得震源球与震源位置错开。

  • title 震源球标签[可选]

-Sx|y|t

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

X Y depth Tvalue Tazim Tplunge Nvalue Nazim Nplunge Pvalue Pazim Pplunge exp [newX newY] [title]
  • XY 为震源经度和纬度

  • depth 为震源深度,单位为km

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

  • expTvalue 等的指数部分

  • newXnewY 震源球在图上的经纬度[可选]。默认震源球会放在 XY 处,指定新的震源球放置位置 newXnewY 以使得震源球与震源位置错开。

  • title 震源球标签[可选]

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

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

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

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

可选选项

-A
-A[+g[fill]][+odx[/dy]][+ppen][+s[symbol]size]

在 (newX,newY) 处绘制震源球。

默认会在数据输入所指定的 (X,Y) 坐标处绘制震源球。使用 -A 选项, 则将震源球绘制在 (newX,newY) 处,并绘制一条连接原始位置和偏移后震源球位置的直线。

使用 +ssize 可以在原始位置放置一个小符号并设置符号大小。 默认符号是圆圈,可设置 symbol 更改为 plot 中的任何标准几何符号。 该符号将使用震源球的颜色填充,但也可以选择固定颜色 (+gfill) 或不填充 (+g)。

连线的画笔属性默认为 -W 设置的值,但可以使用 +ppen [0.25p] 进行覆盖。

使用 +o 将 (newX,newY) 解释为绘图偏移量,也可以给所有地震设置统一的的偏移量 dx/dy

-B
-Bparameters

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

-C
-Ccpt

指定CPT文件,根据数据文件中第三列的值(即地震深度)确定震源球的压缩部分的颜色。

-D
-Ddepmin/depmax

只绘制震源深度在 depmindepmax 之间的地震。

-E
-Efill

震源球拉伸部分的填充色[默认为白色]

-F
-Fmode[args]

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

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

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

-Fefill

设置T轴符号的填充色或填充图案

-Fgfill

设置P轴符号的填充色或填充图案

-Fppen

设置P轴符号的画笔属性

-Ftpen

设置T轴符号的画笔属性

-Fo

使用旧版本的 psvelomeca 命令的输入数据格式,即不需要第三列的深度信息

-Fr[fill]

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

-Fz[pen]

地震矩的各向异性部分的画笔属性

-G
-Gfill

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

-H
-H[scale]

不带参数使用 -H 选项会从输入数据读取 scale 列作为缩放比例,对每一条记录的符号大小和画笔宽度进行缩放。 也可以附加 scale 参数指定一个统一的缩放比例。详细说明请参考 数据列顺序

-I
-Iintens

使用 intens 值(±1 范围内),通过模拟光照来调节压缩区填充颜色 [默认无]。 如果未提供光照强度值,将从输入数据中读取 intens 列。详细说明请参考 数据列顺序

-L
-L[pen]

设置震源球外部轮廓的线条属性 [默认由 -W 选项决定]。

-N
-N

地图区域外的震源球也要绘制,默认不绘制

-T
-T[plane][+ppen]

绘制节面并勾勒出透明的球体轮廓。 planes 可以取:

  • 0 绘制两个节面 [默认]

  • 1 仅绘制第一个节面

  • 2 仅绘制第二个节面

附加 +ppen 设置画笔属性 [默认画笔属性由 -W 选项设置]。

对于双力偶机制解而言,-T 选项仅绘制节面和圆周使震源球变为透明。 对于非双力偶机制解而言, -T0 在震源球的基础上叠加透明的最佳双力偶解。

-U
-U[label][+c][+jjust][+odx/dy]

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

-V
-V[level]

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

-W
-Wpen

同时设置所有线条以及符号轮廓的画笔属性 [默认值: 0.25p,black,solid]。

该选项设置的属性可以被 -A-L-T-Fp-Ft-Fz 指定的属性替代。

-X
-Y

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

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

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

-di
-dinodata

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

-e
-e[~]“pattern” | -e[~]/regexp/[i]

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

-h
-h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]

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

-i
-icols[+l][+sscale][+ooffset][,][,t[word]]

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

-p
-p[x|y|z]azim[/elev[/zlevel]][+wlon0/lat0[/z0]][+vx0/y0]

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

-qi
-qi[~]rows[+ccol][+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 重新排列数据记录以匹配预期的格式。

示例

绘制了两个震源球,位置在其震中处。震源球的大小随震级变化:5 级地震的震源球大小为 1 厘米:

gmt meca -JQ104/15c -R102.5/105.5/30.5/32.5 -Ba -Sa1c -png beachball_1 << EOF
# 经度 纬度 深度(km) strike dip rake 震级 newX newY ID
104.33 31.91 39.8 32 64 85 7 0 0 A
104.11 31.52 27.1 22 53 57 6 0 0 B
EOF
../../_images/8a5d119ce0689246012deb92df52f428.png

绘制了两个震源球,位置在其震中处。震源球的大小固定:

gmt meca -JQ104/15c -R102.5/105.5/30.5/32.5 -Ba -Sa1c+m -png beachball_2 << EOF
# 经度 纬度 深度(km) strike dip rake 震级 newX newY ID
104.33 31.91 39.8 32 64 85 7 0 0 A
104.11 31.52 27.1 22 53 57 6 0 0 B
EOF
../../_images/013f4ba8a8a0411c017aa875a658c2de.png

震源球大小随震级变化,颜色随深度变化:

#!/usr/bin/env bash
gmt begin beachball_3
gmt basemap -JQ104/15c -R102.5/105.5/30.5/32.5 -Ba -BWSen
gmt coast -Da -Ia/0.05,black
gmt makecpt -T0/100/20
gmt meca -A+s0.2c -Sa1.3c -C << EOF
# 经度 纬度 深度(km) strike dip rake 震级 newX newY ID
104.33 31.91 39.8  32 64   85 7.0      0     0 A
104.11 31.52 27.1  22 53   57 6.0      0     0 B
103.67 31.13  6.4  86 32  -65 8.0      0     0 C
103.90 31.34 43.6 194 84  179 4.9 104.18 30.84 D
103.72 31.44 67.3  73 84 -162 4.9 103.12 31.64 E
104.12 31.78 12.7 186 68  107 4.7 103.83 32.26 F
104.23 31.61 62.0  86 63  -51 4.7 104.96 31.69 G
EOF
gmt colorbar -DjBL+w5c/0.5c+ml+o0.8c/0.4c -Bx+lDepth -By+lkm
gmt end show
../../_images/1be3982af78d4d054867c841a5e0f36c.png

相关模块

polar, coupe, basemap, plot