✍️ 周茂  •  📅 2025-12-30

earthtide

官方文档:

earthtide

简介:

计算固体地球潮汐网格或者时间序列

计算固体地球潮汐的三个分量,输出网格或者时间序列。同时可以输出太阳和月亮 的经纬度位置。输出可以为网格或者表文件(标准输出),表文件的格式为: 时间 北向分量 东向分量 垂直分量 ,分量的单位为米。

语法

gmt earthtide -Goutgrid -Llon/lat -S [ -Cx|e,y|n,z|v ] [ -Iincrement ] [ -Rregion ] [ -T[min/max/]inc[+i|n]|-Tfile|list ] [ -V[level] ] [ -rreg ] [ --PAR=value ]

必须选项

以下三个选项必须至少使用其中一个。

-G

-Goutgrid[=ID][+ddivisor][+ninvalid][+ooffset|a][+sscale|a][:driver[dataType][+coptions]]

输出网格文件名。通过追加 =ID 可指定 网格格式。 参数详细介绍请参考 写 netCDF 文件

-S
-S

输出太阳和月亮的地理坐标以及其距离,单位为米。输出为 Mx7 的矩阵, M 为时刻的个数(通过 -T 设置),7 列分别代表:时间,太阳经度, 太阳纬度,太阳距离,月亮经度,月亮纬度,月亮距离

-L
-Llon/lat

计算指定位置上的固体地球潮汐的时间序列。坐标必须为大地坐标,默认 使用 GRS80 椭球(在亚微米的精度水平可以认为与 WGS-84 椭球等同)

可选选项

-C
-Cx|e,y|n,z|v

设置需要计算的固体地球潮汐分量及其保存的网格。该选项需要 -G 选项。 不同选项之间使用逗号分隔:xe 为东向分量;yn 为北向分量,zv 为垂直分量。例如,-Ce,v 将输出 写入两个网格,一个为东向分量网格,一个为垂直分量网格。如果设置了 -G ,但不指定 -C ,则默认为垂直分量。

-I
-Ixinc[+e|n][/yinc[+e|n]]

指定X和Y方向的网格间隔

  • xincyinc 为 X 和 Y 方向的网格间隔。对于地理坐标,可以指定网格间隔单位 [默认单位为度]

  • +e 微调X和Y方向范围的最大值,使得其是网格间隔的整数倍(默认会微调 网格间隔以适应给定的数据范围)

  • +n 表明 xincyinc 不是网格间隔,而是X和Y方向的节点数。 此时会根据节点数、网格区域范围以及网格配准方式重新计算网格间隔。

注意:

  • yinc 设置为0,则表示其与 xinc 相同

  • 若使用 -Rgrdfile 选项,则网格间隔和配准方式已经根据网格文件自动初始化, 此时依然可以使用 -I-r 覆盖相应的值

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

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

-T
-T[min/max/]inc[+i|n]|-Tfile|list

inc 为步长,生成从 minmax 均匀分布的时间序列。 附加 +i 表示给定的是步长的倒数,或者附加 +n 表示 inc 为序列的元素个数。 可以为步长附加一个有效的时间单位(d|h|m|s)。 如果仅给出了 min,则我们使用该日期和时间进行计算。如果未提供 -T ,则从计算机时钟获取 UTC 格式的当前时间。 如果未提供 -G-S ,则 -T 被解释为在 -L 指定的位置计算时间序列,因此 -L 变为必选。 当同时存在 -G-T 时,仅考虑第一个时间 T 序列。 日期范围可以从 1901 年到 2099 年。有关数组生成的详细信息,请参见 生成一维数组

-V
-V[level]

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

-r
-r[g|p]

设置网格配置方式 [默认为网格线配准]。 (参数详细介绍)

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

生成一维数组

下面将展示如何使用 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 会固定最小值,适当调整最大值。

示例

计算 2018 年 6 月 18 日中午,固体地球潮汐垂直分量网格,网格的分辨率为 30 m(使用默认的 -R-I 选项)

gmt earthtide -T2018-06-18T12:00:00 -Gsolid_tide_up.grd

计算一天的时间序列,起始时间与上例相同,计算位置位于 (-7W,37N),时间 步长为 1 分钟

gmt earthtide -T2018-06-18T/2018-06-19T/1m -L-7/37 > solid_tide.dat

获取当前时间太阳和月亮的地理坐标

gmt earthtide -S

注意事项

  1. 所有的输入和输出时间都必须是 UTC 时

参考

http://geodesyworld.github.io/SOFTS/solid.htm