✍️ 周茂  •  📅 2026-01-12

talwani2d

官方文档:

talwani2d

简介:

使用 Talwani 方法计算二维物体形成的位异常

talwani2d 读取一个多段表文件(或标准输入)。该文件包含一个或多个二维物体 的横截面,横截面为多边形。每段的头部信息中必须包含密度参数:density,为该 物体的密度(单个物体的密度可以被 -D 选项设置的密度常数覆盖)。GMT 可通过 设置 -T 计算位于某等距格网的异常,或者使用 -N 计算点上的异常值。 计算的异常可包括,自由空气重力异常,垂直重力梯度异常或者大地水准面异常。同时 可以使用选项控制轴的单位和方向。

语法

gmt talwani2d [ table ] [ -A ] [ -Ddensity ] [ -Ff|n[lat]|v ] [ -M[h][v] ] [ -Ntrackfile ] [ -Tmin/max/inc[+i|n]|file|list ] [ -Zlevel[ymin/ymax] ] [ -V[level] ] [ -bibinary ] [ -dnodata[+ccol] ] [ -eregexp ] [ -hheaders ] [ -iflags ] [ -oflags ] [ -x[[-]n] ] [ --PAR=value ]

输入数据

table

一个或者多个 ASCII 文件,用来描述一个或者多个物体的横截面多边形。如果 多边形没有闭合,GMT 将自动闭合并删除重复的多边形顶点。每段的头部信息中 必须包含密度参数,单位为 kg/m^3 或 g/cm^3,见 -D 选项。如果不指定 文件,就从标准输入中读取数据。

可选选项

-A
-A

设置 z 轴向上为正方向 [默认朝下为正]

-D
-Ddensity

设置一个固定的相对密度 density ,该设置将覆盖文件中的密度设置,单位 为 kg/m^3 或 g/cm^3

-F
-Ff|n[lat]|v

指定要计算哪种异常。

  • f 自由空气重力异常 [默认]

  • n 大地水准面异常,可以在后面追加平均纬度 lat 以计算正常重力, 默认为 45

  • v 垂直梯度重力异常

-M
-M[h][v]

设置距离单位。h 表明水平距离单位为 km [m]。z 表明垂直距离单位为 km [m]

-N
-Ntrackfile

设置计算异常值的点的位置。当使用该选项时,禁用 -T 选项。计算结果将输 出到标准输出。

-T
-Tmin/max/inc[+i|n]|file|list

指定一个等距的点列,在这些位置计算异常值。见 生成一维数组

-V
-V[level]

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

-Z
-Zlevel[ymin/ymax]

设置水准面常数 level ,默认为 0。对于重力异常 -Ff ,可以追加 2.5 维 物体的限制范围。

-bi
-bi[ncols][type][w][+l|b]

控制二进制文件的输入格式。 (参数详细介绍)

-d
-d[i|o]nodata

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

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

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

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

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

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

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

-o
-ocols[,...][,t[word]]

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

-x
-x[[-]n]

限制多核算法中能使用的核数(需要GMT开启OpenMP支持)。 (参数详细介绍)

-:
-:[i|o]

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

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

距离单位

GMT支持多种不同的距离单位,以及三种不同的球面距离计算方式。 详情见 单位-j 选项

生成一维数组

下面将展示如何使用 math 生成一维数组(其中大部分操作也可通过 linux 中的 seq 命令方便地实现)

不使用任何子选项

以 0.1 为步长,生成 3.1 到 4.2 等等间隔序列

gmt math -o0 -T3.1/4.2/0.1 T =
3.1
3.2
...
4.2

+a 选项

该选项不对生成的数列进行运算操作,而是将该数列以列的形式追加到输出表数据,类似 linux 中的 paste 命令。

+b 选项

以 3 和 20 分别为起点和终点,创建一个 2 的整数幂的列表,将生成 的整数幂以 1 为步长取值 -T3/20/1+b

gmt math -o0 -T3/20/1+b T =
4
8
16

+l 选项

以 7 和 135 分别为起点和终点,先创建一个 10 的整数幂的列表,当 inc 为 1 时,输出该列表;当 inc 为 2 时,同时输出该列表中每个元素的 1,2,5 倍值(不包括超出原始数据范围的部分); 当 inc 为 3 时,同时输出 该列表中每个元素的 1,2,...,9 倍值(同样不包括超出原始数据范围的部分)。 -T7/135/2+l 将会生成如下数列

gmt math -o0 -T7/135/2+l T =
10
20
50
100

inc 为负整数时,将实现如下效果

gmt math -o0 -T1e-4/1e4/-2+l T =
0.0001
0.01
1
100
10000

+i 选项

该选项将以 1 作为默认步长,第三个数字做为每步长中的数字个数 length。假设需要在 1 分钟内每 24 秒生成一帧

gmt math -o0 -T0/60/24+i T =
0
0.0416666666667
0.0833333333333
0.125
0.166666666667
...
60

+n 选项

生成固定长度的数列。以 3.44 和 7.82 为 起点和终点,生成长度为 5 的等间隔序列

gmt math -o0 -T3.44/7.82/5+n T =
3.44
4.535
5.63
6.725
7.82

-T 后直接加文件或逗号分隔的数列

-T 后可以直接加文件,文件中即为要生成的列表;另外,可以直接使用逗号分隔, 将列表附加到 -T 选项后,如下为 Fibonacci 数列前 6 项

gmt math -o0 -T0,1,1,2,3,5 T =
0
1
1
2
3
5

: 如果数列只包含一个值,必须在其后加逗号以表明仍是一个数列

+u 选项

如果文件或者逗号分隔的数列中有重复数字或未排序,可以使用 +u 选项去重并排序。

+t 选项

生成绝对时间序列。在 inc 后分别添加 yodhms 表示时间步长的单位为年,月,日,时,分,秒。在其后附加 +t 选项, 可以进一步强调生成时间序列,也可以不加

gmt math -o0 -T2020-03-01T/2020-03-07T/1d T =
2020-03-01T00:00:00
2020-03-02T00:00:00
2020-03-03T00:00:00
2020-03-04T00:00:00
2020-03-05T00:00:00
2020-03-06T00:00:00
2020-03-07T00:00:00

生成距离序列

如果输入文件中包含两列以上的数据,可以使用前两列计算距离,并生成等距序列。 在 inc 后分别添加 dmsefMnu 表示距离步长的单位为度,分,秒,米,英尺,公里,英里,海里,英尺。如果 为笛卡尔坐标,使用 c 作为距离步长单位。

+e 选项

如果只给定 inc 而从数据中获取最大值和最小值,则 (max - min)/inc 可能 不是整数,GMT 讲会自动对 inc 进行一定的调整。如果不想调整 inc ,则可以 使用 +e 选项,GMT 会固定最小值,适当调整最大值。

示例

计算 2-D 物体在一个等距剖面形成的重力异常,其横截面文件为 body2d.txt ,相对密度为 1700 km/m^3 (该相对密度为地壳平均密度和海水密度之差), 所有距离的单位设置为米:

gmt talwani2d -T-200/200/2 body2d.txt -D1700 -Ff > 2dgrav.txt

使用同样的物体,计算其在给定 crossing.txt 测线上的垂直重力梯度异常:

gmt talwani2d -Ncrossing.txt body2d.txt -D1700 -Fv > vgg_crossing.txt

使用同样的物体,计算大地水准面异常,平均纬度设置为 60N

gmt talwani2d -Ncrossing.txt body2d.txt -D1700 -Fn60 > n_crossing.txt

注意事项

二维大地水准面异常(geoid anomaly)属于对数位(logarithmic potential),因此没有天然的参考基准面。 我们只需从所有计算值中减去最小负值(如果密度对比为正)或最大正值(如果密度对比为负),从而使整个异常变为正值(或负值)。 您可以利用 math 根据需要更改零水平基准。

参考文献

Rasmussen, R., and L. B. Pedersen (1979), End corrections in potential field modeling, Geophys. Prospect., 27, 749-760.

Chapman, M. E., 1979, Techniques for interpretation of geoid anomalies, J. Geophys. Res., 84(B8), 3793-3801.

Kim, S.-S., and P. Wessel, 2016, New analytic solutions for modeling vertical gravity gradient anomalies, Geochem. Geophys. Geosyst., 17, https://doi.org/10.1002/2016GC006263.

Talwani, M., J. L. Worzel, and M. Landisman, 1959, Rapid gravity computations for two-dimensional bodies with application to the Mendocino submarine fracture zone, J. Geophys. Res., 64, 49-59.

相关模块

talwani3d, gravfft, gravmag3d, grdgravmag3d