earthtide

贡献者:

周茂

最近更新日期:

2022-10-14


官方文档:

earthtide

简介:

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

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

语法

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

必选选项

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

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

输出网格文件名。通过追加 =ID 可指定 网格格式。 对网格追加子选项可进行额外设置:

  • +d 将网格除以一个数 divisor [默认为 1]

  • +n 将网格中的 invalid 替换为 NaN

  • +o 将网格中的值进行一定的偏移,即加一个数 offset,或使用 a 自动对值 进行调整以保证整数网格的精度 [默认为 0]

  • +s 将网格中的值缩放,即乘以 scale,或使用 a 自动对网格缩放以保证整数 网格的精度 [默认为 1]

offset 操作位于 scale 之前;+sa 将会同时设置 +oa。如果需 使用 GDAL 指定网格格式,则 ID 应设置为 gd,并指定 :driver 和可选的数据 类型 dataType,以及 +coptions 选项传递给 GDAL 的 -co 选项。

-S

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

-Llon/lat

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

可选选项

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

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

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

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

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

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

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

注意:

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

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

-Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)

指定数据范围

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

指定计算的时间序列的起始时间 min ,终止时间 max 和步长 inc

-bo[ncols][type][w][+l|b] (more …)

设置二进制输出的数据格式

-ocols[,…][,t[word]] (more …)

设置输出数据列(0表示第一列,t 表示文本列)

-r[g|p] (more …)

设置网格配置方式 [默认为网格线配准]

-V[level] (more …)

设置 verbose 等级 [w]

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

生成一维数组

下面将展示如何使用 gmtmath 生成一维数组(其中大部分操作也可通过 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