grdmath
- 官方文档:
- 简介:
网格数据的逆波兰表示法(RPN)计算
grdmath 使用逆波兰表示法对网格文件或常量进行逐元素运算,最终结果写入到新的网格文件。
若不给定网格文件,则必须使用 -R 与 -I 选项生成网格文件。 = outgrid 可在计算
中多次使用以保存中间结果。复杂的或频繁使用的运算可赋值给变量或使用宏。
语法
gmt grdmath
[ -Amin_area[/min_level/max_level][+a[g|i][s|S]][+l|r][+ppercent] ]
[ -Dresolution[+f] ]
[ -Iincrement ]
[ -M ] [ -N ]
[ -Rregion ]
[ -S ]
[ -V[level] ]
[ -aflags ]
[ -bibinary ]
[ -dinodata[+ccol] ]
[ -eregexp ]
[ -fflags ]
[ -ggaps ]
[ -hheaders ]
[ -iflags ]
[ -nflags ]
[ -rreg ]
[ -x[[-]n] ]
[ --PAR=value ]
operand [ operand ] OPERATOR [ operand ]
OPERATOR … = outgrid
输入输出数据
- operand
如果 operand 是一个文件,GMT 将试着以网格文件的形式读取该文件。如果非文件, 将被解析为 其他符号 或数字常量。
- = outgrid
输出网格文件名
可选选项
- -A
- -Amin_area[/min_level/max_level][+a[g|i][s|S]][+l|r][+ppercent]
不绘制面积过小的区域(湖泊或岛屿),或不绘制某个级别的湖泊边界。
在绘制湖泊时,若不管湖泊的面积大小而把所有湖泊的边界都画上去,可能导致图 看上去比较乱,该选项用于对湖泊进行筛选。面积小于 min_area 平方千米 或者湖泊级别不在 [min_level,max_level] 范围的边界都不会被绘制。 默认值为 0/0/4,即绘制所有湖泊边界,即绘制0到4级所有级别的面积大于0的 湖泊。
对于level=2,即湖岸线,包括常规的湖以及很宽的河流。加上 +r 则只绘制河流, 加上 +l 则只绘制常规湖。
对于南极洲而言,因为有冰层的存在,所以海岸线有多种处理方式:
+ai 用ice shell boundary作为南极洲的海岸线,默认值
+ag 以ice grounding line作为海岸线
+as 忽略南纬60度以南的海岸线,用户可以使用 plot 绘制自己的南极洲海岸线
+aS 忽略南纬60度以北的海岸线
+pprecent:一个多边形,降低精度后,边数减少,面积变化,当面积变化 过大时再绘制这个多边形就不合适了,该子选项用于去除那些面积与最高精度面积 之比小于 percent 的多边形。
备注
该选项仅适用于 LDISTG 运算符
- -D
- -Dresolution[+f]
设置 LDISTG 运算符使用的数据集的分辨率: (f)ull,(h)igh,(i)ntermediate,(l)ow 和 (c)rude。 默认的 l 选项将数据集缩减为原本的 20%。如果请求的分辨率不存在,使用 +f 选项 会自动选择一个较低的分辨率。
备注
该选项仅适用于 LDISTG 运算符。
- -I
- -Ixinc[+e|n][/yinc[+e|n]]
指定X和Y方向的网格间隔
xinc 和 yinc 为 X 和 Y 方向的网格间隔。对于地理坐标,可以指定网格间隔单位 [默认单位为度]
+e 微调X和Y方向范围的最大值,使得其是网格间隔的整数倍(默认会微调 网格间隔以适应给定的数据范围)
+n 表明 xinc 和 yinc 不是网格间隔,而是X和Y方向的节点数。 此时会根据节点数、网格区域范围以及网格配准方式重新计算网格间隔。
注意:
若 yinc 设置为0,则表示其与 xinc 相同
若使用 -Rgrdfile 选项,则网格间隔和配准方式已经根据网格文件自动初始化, 此时依然可以使用 -I 和 -r 覆盖相应的值
- -M
- -M
默认的导数计算单位为 z_units/x(或 y )_units。使用该选项,可以将 dx 和 dy 的单位从度变为 平地球近似下的米,因此最终单位变为 z_units/meter
- -N
- -N
操作多个网格时,关闭严格的范围匹配检查 [默认情况下,要求每个网格的范围和第一个网格的范围 不能超过阈值,该阈值为第一个网格间隔的 10^-4]
- -R
- -Rxmin/xmax/ymin/ymax[+r][+uunit]
指定数据范围。 (参数详细介绍)
- -S
- -S
将下一个运算应用到所有的网格中,使最终结果为一个网格。必须在列出所有网格后才能使用该选项。 注 :仅能在改选项后使用 reduce 运算符,包括 ADD,AND,MAD,LMSSCL,MAX,MEAN,MEDIAN,MIN,MODE,MUL,RMS,STD,SUB,VAR 或 XOR
- -V
- -V[level]
设置 verbose 等级 [w]。 (参数详细介绍)
- -a
- -a[[col=]name][,…]
控制输入或输出为 OGR/GMT 格式时对非空间元数据的处理方式。 (参数详细介绍)
- -bi
- -bi[ncols][type][w][+l|b]
控制二进制文件的输入格式。 (参数详细介绍)
- -di
- -dinodata
将输入数据某些特定值当作NaN。 (参数详细介绍)
- -e
- -e[~]“pattern” | -e[~]/regexp/[i]
筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)
- -f
- -f[i|o]colinfo
显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)
- -g
- -g[a]x|y|d|X|Y|D|[col]zgap[+n|p]
确定数据或线段的间断。 (参数详细介绍)
- -h
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]
在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)
- -i
- -icols[+l][+sscale][+ooffset][,…][,t[word]]
对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -n
- -n[b|c|l|n][+a][+bBC][+c][+tthreshold]
设置网格文件的插值方式。 (参数详细介绍)
- -r
- -r[g|p]
设置网格配置方式 [默认为网格线配准]。 (参数详细介绍)
- -x
- -x[[-]n]
限制多核算法中能使用的核数(需要GMT开启OpenMP支持)。 (参数详细介绍)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
运算符
Operator 为运算符名称; args 分别表示输入参数和输出参数个数; Returns 中的 A B C … 等字符表示输入参数。
操作符 (Operator) |
参数 (Args) |
返回值 (Returns) |
函数类型 (Type) |
|---|---|---|---|
|
1 1 |
A 的绝对值 |
算术运算 |
|
1 1 |
反余弦(结果为弧度) |
微积分 |
|
1 1 |
反余弦(结果为度) |
微积分 |
|
1 1 |
反双曲余弦 |
微积分 |
|
1 1 |
反余切(结果为弧度) |
微积分 |
|
1 1 |
反余切(结果为度) |
微积分 |
|
1 1 |
反余割(结果为弧度) |
微积分 |
|
1 1 |
反余割(结果为度) |
微积分 |
|
2 1 |
A + B(加法) |
算术运算 |
|
2 1 |
如果 A 等于 NaN 则返回 B,否则返回 A |
逻辑运算 |
|
2 1 |
返回 [0, pi] 上的圆弧 (A,B) |
算术运算 |
|
0 1 |
每个网格单元的面积(如果是地理坐标,单位为 km2) |
特殊操作符 |
|
1 1 |
反正割(结果为弧度) |
微积分 |
|
1 1 |
反正割(结果为度) |
微积分 |
|
1 1 |
反正弦(结果为弧度) |
微积分 |
|
1 1 |
反正弦(结果为度) |
微积分 |
|
1 1 |
反双曲正弦 |
微积分 |
|
1 1 |
反正切(结果为弧度) |
微积分 |
|
1 1 |
反正切(结果为度) |
微积分 |
|
2 1 |
A/B 的反正切(结果为弧度) |
微积分 |
|
2 1 |
A/B 的反正切(结果为度) |
微积分 |
|
1 1 |
反双曲正切 |
微积分 |
|
3 1 |
二项分布累积分布函数 (p = A, n = B, x = C) |
概率统计 |
|
3 1 |
二项分布概率密度函数 (p = A, n = B, x = C) |
概率统计 |
|
1 1 |
开尔文函数 bei (A) |
特殊函数 |
|
1 1 |
开尔文函数 ber (A) |
特殊函数 |
|
2 1 |
A & B (按位与运算) |
逻辑运算 |
|
2 1 |
A << B (按位左移) |
算术运算 |
|
1 1 |
~A (按位非运算,即返回补码) |
逻辑运算 |
|
2 1 |
A | B (按位或运算) |
逻辑运算 |
|
2 1 |
A >> B (按位右移) |
算术运算 |
|
2 1 |
如果 A 的第 B 位被设置则返回 1,否则为 0 (按位测试) |
逻辑运算 |
|
2 1 |
A ^ B (按位异或运算) |
逻辑运算 |
|
3 1 |
使用权重 C (0-1 范围) 混合 A 和 B,计算方式为 A*C + B*(1-C) |
特殊操作符 |
|
2 1 |
从网格节点到栈中 (x, y)(即 A, B)的笛卡尔方位角 |
特殊操作符 |
|
2 1 |
从网格节点到栈中 (x, y)(即 A, B)的笛卡尔反方位角 |
特殊操作符 |
|
2 1 |
网格节点与栈中 (x, y)(即 A, B)之间的笛卡尔距离 |
特殊操作符 |
|
2 1 |
同 CDIST,但仅计算到非零节点的距离 |
特殊操作符 |
|
1 1 |
ceil (A) (大于或等于 A 的最小整数) |
逻辑运算 |
|
2 1 |
卡方分布临界值 (alpha = A, nu = B) |
概率统计 |
|
2 1 |
卡方累积分布函数 (chi2 = A, nu = B) |
概率统计 |
|
2 1 |
卡方概率密度函数 (chi2 = A, nu = B) |
概率统计 |
|
2 1 |
组合数 nCr (n = A, r = B) |
概率统计 |
|
2 1 |
相关系数 r(A, B) |
概率统计 |
|
1 1 |
A 的余弦(A 为弧度) |
微积分 |
|
1 1 |
A 的余弦(A 为度) |
微积分 |
|
1 1 |
A 的双曲余弦 |
微积分 |
|
1 1 |
A 的余切(A 为弧度) |
微积分 |
|
1 1 |
A 的余切(A 为度) |
微积分 |
|
1 1 |
A 的余割(A 为弧度) |
微积分 |
|
1 1 |
A 的余割(A 为度) |
微积分 |
|
2 1 |
每一行 (B=±1|3) 或每一列 (B=±2|4) 的累加和。B 的符号决定求和方向 |
算术运算 |
|
1 1 |
A 的曲率(拉普拉斯算子 \(\nabla^2\)) |
微积分 |
|
1 1 |
d2(A)/dx2 二阶导数 |
微积分 |
|
1 1 |
d2(A)/dy2 二阶导数 |
微积分 |
|
1 1 |
d2(A)/dxdy 二阶偏导数 |
微积分 |
|
1 1 |
度转换为弧度 |
特殊操作符 |
|
1 1 |
d(A)/dx 中央一阶导数 |
微积分 |
|
3 1 |
太阳在 (A, B) 照射处为 1,其余为 0,C 为过渡宽度 |
特殊操作符 |
|
1 1 |
d(A)/dy 中央一阶导数 |
微积分 |
|
1 1 |
球面度转换为公里 |
特殊操作符 |
|
2 1 |
用 B 中的值替换 A 中的 NaN |
逻辑运算 |
|
1 1 |
双对数 (Spence’s) 函数 |
特殊函数 |
|
2 1 |
A / B (除法) |
算术运算 |
|
2 1 |
节点与栈中单位向量 (A, B) 之间的二维(笛卡尔)或三维(地理)点积 |
特殊操作符 |
|
1 2 |
在栈中复制一份 A |
特殊操作符 |
|
2 1 |
指数累积分布函数 (x = A, lambda = B) |
概率统计 |
|
2 1 |
指数分布临界值 (alpha = A, lambda = B) |
概率统计 |
|
2 1 |
指数概率密度函数 (x = A, lambda = B) |
概率统计 |
|
1 1 |
误差函数 erf (A) |
概率统计 |
|
1 1 |
互补误差函数 erfc (A) |
概率统计 |
|
2 1 |
如果 A 等于 B 则返回 1,否则为 0 |
逻辑运算 |
|
1 1 |
A 的反误差函数 |
概率统计 |
|
2 2 |
交换栈中的 A 和 B |
特殊操作符 |
|
1 1 |
e 的次幂 |
算术运算 |
|
1 1 |
A! (A 的阶乘) |
算术运算 |
|
1 1 |
局部极值:-1 为极小值,+1 为极大值,其余为 0 |
微积分 |
|
3 1 |
F 累积分布函数 (F = A, nu1 = B, nu2 = C) |
概率统计 |
|
3 1 |
F 分布临界值 (alpha = A, nu1 = B, nu2 = C) |
概率统计 |
|
3 1 |
位于中心经度 A、纬度 B,且浓度参数为 C 的 Fisher 概率密度函数 |
概率统计 |
|
1 1 |
反转每一行中的值顺序 |
特殊操作符 |
|
1 1 |
反转每一列的顺序 |
特殊操作符 |
|
1 1 |
小于或等于 A 的最大整数 |
逻辑运算 |
|
2 1 |
A % B (截断除法的余数) |
算术运算 |
|
3 1 |
F 概率密度函数 (F = A, nu1 = B, nu2 = C) |
概率统计 |
|
2 1 |
如果 A >= B 则返回 1,否则为 0 |
逻辑运算 |
|
2 1 |
如果 A > B 则返回 1,否则为 0 |
逻辑运算 |
|
3 3 |
将 h,s,v 转换为 l,a,b (h=A[0-360], s=B, v=C[0-1]) |
特殊操作符 |
|
3 3 |
将 h,s,v 转换为 r,g,b (h=A[0-360], s=B, v=C[0-1]) |
特殊操作符 |
|
3 3 |
将 h,s,v 转换为 x,t,z (h=A[0-360], s=B, v=C[0-1]) |
特殊操作符 |
|
2 1 |
直角三角形的斜边长度 (= sqrt (A2+ B2)) |
微积分 |
|
1 1 |
A 的修正贝塞尔函数 (第一类, 0阶) |
特殊函数 |
|
1 1 |
A 的修正贝塞尔函数 (第一类, 1阶) |
特殊函数 |
|
3 1 |
如果 A 不等于 0 则返回 B,否则返回 C |
逻辑运算 |
|
2 1 |
A 的修正贝塞尔函数 (第一类, B阶) |
特殊函数 |
|
3 1 |
如果 B <= A <= C 则返回 1,否则为 0 |
逻辑运算 |
|
1 1 |
当位于 A 中的多边形内或其边界上时返回 1,否则为 0 |
特殊操作符 |
|
1 1 |
A 的反误差函数 |
概率统计 |
|
1 1 |
如果 A 是有限值则返回 1,否则为 0 |
逻辑运算 |
|
1 1 |
如果 A 等于 NaN 则返回 1,否则为 0 |
逻辑运算 |
|
1 1 |
A 的贝塞尔函数 (第一类, 0阶) |
特殊函数 |
|
1 1 |
A 的贝塞尔函数 (第一类, 1阶) |
特殊函数 |
|
2 1 |
A 的贝塞尔函数 (第一类, B阶) |
特殊函数 |
|
1 1 |
A 的修正开尔文函数 (第二类, 0阶) |
特殊函数 |
|
1 1 |
A 的修正贝塞尔函数 (第二类, 1阶) |
特殊函数 |
|
1 1 |
开尔文函数 kei (A) |
特殊函数 |
|
1 1 |
开尔文函数 ker (A) |
特殊函数 |
|
1 1 |
公里转换为球面度 |
特殊操作符 |
|
2 1 |
A 的修正贝塞尔函数 (第二类, B阶) |
特殊函数 |
|
1 1 |
A 的峰度 |
概率统计 |
|
3 3 |
将 l,a,b 三元组转换为 h,s,v 三元组 |
特殊操作符 |
|
3 3 |
将 l,a,b 三元组转换为 r,g,b 三元组 |
特殊操作符 |
|
3 3 |
将 l,a,b 三元组转换为 x,y,z 三元组 |
特殊操作符 |
|
1 1 |
拉普拉斯累积分布函数 (z = A) |
概率统计 |
|
1 1 |
拉普拉斯分布临界值 (alpha = A) |
概率统计 |
|
1 1 |
计算到多段 ASCII 文件 A 中各条线的最小距离(如果使用 -fg 则单位为 km) |
特殊操作符 |
|
2 1 |
同 LDIST,计算到文件 B 中各线的距离,但仅针对 A 非零的节点 |
特殊操作符 |
|
0 1 |
同 LDIST,但操作对象为 GSHHG 数据集(参见 -A, -D 选项) |
特殊操作符 |
|
2 1 |
如果 A <= B 则返回 1,否则为 0 |
逻辑运算 |
|
1 1 |
双对数 (Spence’s) 函数 |
特殊函数 |
|
1 1 |
\(\log_{10}\) (A) (以 10 为底的对数) |
算术运算 |
|
1 1 |
log (1+A) (自然对数,对极小值 A 更精确) |
算术运算 |
|
1 1 |
\(\log_2\) (A) (以 2 为底的对数) |
算术运算 |
|
1 1 |
A 的 LMS (最小中位数平方) 尺度估计 (LMS STD) |
概率统计 |
|
2 1 |
A 基于权重 B 的加权 LMS 尺度估计 (LMS STD) |
概率统计 |
|
1 1 |
A 的最低值 (最小值) |
算术运算 |
|
1 1 |
拉普拉斯概率密度函数 (z = A) |
概率统计 |
|
2 1 |
均值为 A,标准差为 B 的拉普拉斯随机噪声 |
概率统计 |
|
2 1 |
如果 A < B 则返回 1,否则为 0 |
逻辑运算 |
|
1 1 |
A 的中位数绝对偏差 (L1 STD) |
概率统计 |
|
2 1 |
A 和 B 的最大值 |
概率统计 |
|
1 1 |
A 的平均值 |
概率统计 |
|
2 1 |
A 基于权重 B 的加权平均值 |
概率统计 |
|
1 1 |
A 的中位数 |
概率统计 |
|
2 1 |
A 基于权重 B 的加权中位数 |
概率统计 |
|
2 1 |
A 和 B 的最小值 |
概率统计 |
|
2 1 |
A % B (向下取整除法的余数) |
算术运算 |
|
1 1 |
A 的众数 (最小中位数平方估计) |
概率统计 |
|
2 1 |
A 基于权重 B 的加权众数 (最小中位数平方估计) |
概率统计 |
|
2 1 |
A x B (乘法) |
算术运算 |
|
2 1 |
如果 A 等于 B 则返回 NaN,否则返回 A |
逻辑运算 |
|
1 1 |
负值 (-A) |
算术运算 |
|
2 1 |
如果 A 不等于 B 则返回 1,否则为 0 |
逻辑运算 |
|
1 1 |
归一化 (A) 使得 min(A) = 0 且 max(A) = 1 |
概率统计 |
|
1 1 |
~A (按位非运算,即返回补码) |
逻辑运算 |
|
2 1 |
均值为 A,标准差为 B 的正态分布随机值 |
概率统计 |
|
2 1 |
如果 B 等于 NaN 则返回 NaN,否则返回 A |
逻辑运算 |
|
2 1 |
泊松累积分布函数 (x = A, lambda = B) |
概率统计 |
|
1 1 |
计算到 ASCII 文件 A 中各点的最小距离(如果使用 -fg 则单位为 km) |
特殊操作符 |
|
2 1 |
同 PDIST,计算到文件 B 中各点的距离,但仅针对 A 非零的节点 |
特殊操作符 |
|
2 1 |
排列数 nPr (n = A, r = B) |
概率统计 |
|
3 1 |
伴随勒让德多项式 P(A),次数为 B,阶数为 C |
特殊函数 |
|
3 1 |
归一化伴随勒让德多项式 P(A),次数为 B,阶数为 C (地球物理规范) |
特殊函数 |
|
1 2 |
从 ASCII 文件 A 中计算平均 x 和 y 并压入栈中 |
特殊操作符 |
|
1 0 |
从栈中删除顶端元素 |
特殊操作符 |
|
2 1 |
A 的 B 次幂 |
算术运算 |
|
2 1 |
泊松分布 P(x, lambda) (x = A, lambda = B) |
概率统计 |
|
2 1 |
A 的第 B 个分位数 (0-100%) |
概率统计 |
|
3 1 |
A 基于权重 B 的第 C 个加权分位数 (0-100%) |
概率统计 |
|
1 1 |
A 的 Psi (或 Digamma) 函数 |
特殊函数 |
|
3 1 |
勒让德函数 Pv(A),次数为 v = real(B) + imag(C) |
特殊函数 |
|
3 1 |
勒让德函数 Qv(A),次数为 v = real(B) + imag(C) |
特殊函数 |
|
2 1 |
斜边的平方 (= A2+ B2) |
微积分 |
|
1 1 |
弧度转换为度 |
特殊操作符 |
|
2 1 |
均值为 A,标准差为 B 的拉普拉斯随机噪声 |
概率统计 |
|
1 1 |
瑞利累积分布函数 (z = A) |
概率统计 |
|
1 1 |
瑞利分布临界值 (alpha = A) |
概率统计 |
|
3 3 |
将 r,g,b 转换为 h,s,v (r,g,b 范围为 0-255) |
特殊操作符 |
|
3 3 |
将 r,g,b 转换为 l,a,b (r,g,b 范围为 0-255) |
特殊操作符 |
|
3 3 |
将 r,g,b 转换为 x,y,z (r,g,b 范围为 0-255) |
特殊操作符 |
|
1 1 |
rint (A) (舍入到最接近 A 的整数) |
算术运算 |
|
1 1 |
A 的均方根 (Root-mean-square) |
算术运算 |
|
1 1 |
A 基于权重 B 的加权均方根 |
算术运算 |
|
1 1 |
瑞利概率密度函数 (z = A) |
概率统计 |
|
2 0 |
将栈顶 A 个元素循环平移 B 个位置 |
特殊操作符 |
|
2 1 |
将 A 在 x 方向上按常数 B 进行旋转平移 |
算术运算 |
|
2 1 |
将 A 在 y 方向上按常数 B 进行旋转平移 |
算术运算 |
|
1 1 |
鞍点 (±):x 方向为局部极小值(-1)或极大值(+1),其余为 0 |
微积分 |
|
2 1 |
计算网格节点与栈中 (lon, lat) (即 A, B) 之间的球面(大圆/测地线)距离(单位为 km) |
特殊操作符 |
|
2 1 |
同 SDIST,但仅计算到非零节点的距离 |
特殊操作符 |
|
2 1 |
从网格节点到栈中 (lon, lat) (即 A, B) 的球面方位角 |
特殊操作符 |
|
2 1 |
从网格节点到栈中 (lon, lat) (即 A, B) 的球面反方位角 |
特殊操作符 |
|
1 1 |
反正割(结果为弧度) |
微积分 |
|
1 1 |
反正割(结果为度) |
微积分 |
|
1 1 |
A 的符号 (+1 或 -1) |
逻辑运算 |
|
1 1 |
A 的正弦(A 为弧度) |
微积分 |
|
1 1 |
归一化 Sinc 函数 |
特殊函数 |
|
1 1 |
A 的正弦(A 为度) |
微积分 |
|
1 1 |
A 的双曲正弦 |
微积分 |
|
1 1 |
A 的偏度 |
概率统计 |
|
1 1 |
平方 (2次幂) |
算术运算 |
|
1 1 |
平方根 |
算术运算 |
|
1 1 |
A 的标准差 |
概率统计 |
|
2 1 |
A 基于权重 B 的加权标准差 |
概率统计 |
|
1 1 |
赫维赛德阶跃函数 H(A) |
特殊函数 |
|
1 1 |
x 方向的赫维赛德阶跃函数: H(x-A) |
特殊函数 |
|
1 1 |
y 方向的赫维赛德阶跃函数: H(y-A) |
特殊函数 |
|
2 1 |
A - B (减法) |
算术运算 |
|
1 1 |
A 的累加和 (Cumulative sum) |
算术运算 |
|
1 1 |
A 的正切(A 为弧度) |
微积分 |
|
1 1 |
A 的正切(A 为度) |
微积分 |
|
1 1 |
A 的双曲正切 |
微积分 |
|
2 1 |
在末端 A 范围内余弦渐变到 0 的单位权重 |
特殊操作符 |
|
2 1 |
学生 t 累积分布函数 (t = A, nu = B) |
概率统计 |
|
2 1 |
学生 t 分布临界值 (alpha = A, nu = B) |
概率统计 |
|
2 1 |
~A (按位非运算,即返回补码) |
逻辑运算 |
|
2 1 |
学生 t 概率密度函数 (t = A, nu = B) |
概率统计 |
|
3 1 |
Alpha 截断:如果 C 的值落在 A 和 B (百分比) 指定的尾部,则设为 NaN |
特殊操作符 |
|
1 1 |
A 的最高值 (最大值) |
算术运算 |
|
1 1 |
A 的方差 |
概率统计 |
|
2 1 |
A 基于权重 B 的加权方差 |
概率统计 |
|
3 1 |
Von Mises 密度分布 V(x,mu,kappa) (角度=A, mu=B, kappa=C) |
概率统计 |
|
3 1 |
威布尔累积分布函数 (x=A, scale=B, shape=C) |
概率统计 |
|
3 1 |
威布尔分布临界值 (alpha=A, scale=B, shape=C) |
概率统计 |
|
3 1 |
威布尔密度分布 P(x,scale,shape) (x=A, scale=B, shape=C) |
概率统计 |
|
1 1 |
将弧度 A 转换到 [-pi, pi] 范围内 |
特殊操作符 |
|
2 1 |
A ^ B (按位异或运算) |
逻辑运算 |
|
3 3 |
将 x,y,z 三元组转换为 h,s,v 三元组 |
特殊操作符 |
|
3 3 |
将 x,y,z 三元组转换为 l,a,b 三元组 |
特殊操作符 |
|
3 3 |
将 x,y,z 三元组转换为 r,g,b 三元组 |
特殊操作符 |
|
1 1 |
A 的贝塞尔函数 (第二类, 0阶) |
特殊函数 |
|
1 1 |
A 的贝塞尔函数 (第二类, 1阶) |
特殊函数 |
|
2 2 |
次数为 A、阶数为 B 的实部和虚部正交归一化球谐函数 |
特殊函数 |
|
2 2 |
次数为 A、阶数为 B 的余弦和正弦归一化球谐函数(地球物理规范) |
特殊函数 |
|
2 1 |
A 的贝塞尔函数 (第二类, B阶) |
特殊函数 |
|
1 1 |
正态累积分布函数 (z = A) |
概率统计 |
|
1 1 |
正态分布临界值 (alpha = A) |
概率统计 |
|
1 1 |
正态概率密度函数 (z = A) |
概率统计 |
其他符号
以下符号都具有特殊意义:
标识符 |
描述 / 数值 |
|---|---|
|
圆周率 (3.1415926…) |
|
自然常数 (2.7182818…) |
|
欧拉常数 (0.5772156…) |
|
黄金分割率 (1.6180339…) |
|
单精度浮点数机器精度 (1.192092896e-07) |
|
x 值的最小值 |
|
x 值的最大值 |
|
x 值的范围 |
|
x 的增量 |
|
x 方向的节点数 |
|
y 值的最小值 |
|
y 值的最大值 |
|
y 值的范围 |
|
y 的增量 |
|
y 方向的节点数 |
|
包含 x 坐标的网格 |
|
包含 y 坐标的网格 |
|
包含归一化 [-1 到 +1] x 坐标的网格 |
|
包含归一化 [-1 到 +1] y 坐标的网格 |
|
包含列号 (0, 1, …, NX-1) 的网格 |
|
包含行号 (0, 1, …, NY-1) 的网格 |
|
包含节点号 (0, 1, …, (NX*NY)-1) 的网格 |
|
包含补边 (pad) 时的节点号网格 |
上述符号均可以作为变量使用,当其为多个数时,逐元素操作。
运算符注意事项
对于笛卡尔坐标,运算符 MEAN,MEDIAN,MODE,LMSSCL,MAD, PQUANT,RMS,STD 和 VAR 将返回基于给定网格的值。对于地理 坐标,GMT 将施行球面加权运算,其中每个节点的值都由该点代表的地理区域加权得到。
SDIST 计算堆栈上的点 (lon,lat) 与所有网格点的球面距离,单位为 km。网格范围 和点的坐标单位均为度。类似地,SAZ 和 SBAZ 分别用来球面方位角以及球面 反方位角,单位也为度。如果设置了 -fg 或隐含该选项,LDIST 和 PDIST 以 km 为单位计算球面距离,否则返回笛卡尔距离。注 : 如果 PROJ_ELLIPSOID 为椭球,则计算结果为大地线(测地线)的长度。这可能导致计算比较慢,但可以通过 PROJ_GEODESIC 中设置使用其他算法以平衡精度和效率。
LDISTG 和 LDIST 作用类似,但是 LDISTG 使用 GSHHG 数据运算。其中 GSHHG 数据来自
-D和-A选项。POINT 读取一个 ASCII 文件,计算 x 和 y 的平均值并放在堆栈中。如果输入数据 为地理坐标,使用平均 3D 向量来确定平均位置。
PLM 和 PLMg 运算符用来计算 L 阶 M 次的缔合勒让德函数;M 参数 的范围应该满足 0 <= M <= L,参数为纬度的正弦值。 PLM 运算符没有经过标准化, 并且乘以 phase (-1)^M。 PLMg 使用大地测量/地球物理常见的标准化。使用 -M 参数可以附加球谐系数 C 和 S。 PLM 在较高的阶次就会出现溢出,具 体和纬度相关, PLMg 则可以保证在 3000 阶以下都不会溢
YLM 和 YLGM 用于计算网格所有位置的 L 阶 M 次标准化后的球谐函数, 0 <= M <= L。结果返回两个网格,一个为球谐函数的实部网格,一个为虚部网格。使用 POP 可保存其中的任意一个,也可以使用两个连续的 = file.nc 同时保存。
正交归一化的复数谐函数主要用于物理学和地震学,YLM 的平方在球面上的积分为 1。在大地测量学中,YLMG 积分后的结果为 4pi。相位 (-1)^M 不包含在 YLM 和 YLMg 中。
所有导数都基于 central finite differences 和 natural boundary conditionsi, 并且为笛卡尔坐标下的导数
不同参数文件名相同时,应给定相对路径或绝对路径以区分不同文件
不允许使用管道
该模块计算过程保存在堆栈中,栈中保存结果最大为 100,即不能叠加太多的操作 以防溢出
所有需要半径的运算符为保证其为正值,均自动取了绝对值后计算
当使用 OpenMP 后,某些运算符将使用该能力。目前包括 LDIST,LDIST2, PDIST,PDIST2,SAZ,SBAZ,SDIST,YLM,和 grd_YLMg
DEG2KM 和 KM2DEG 只有当设置 PROJ_ELLIPSOID 为球形时才准确
DOT 在点积计算之前对二维向量进行归一化,对于三维向量,则不需要。
颜色转换函数,例如 RGB2HSV 等,不仅包括 rgb 到 hsv 等三元数的转换, 还包括 lab 到 sRGB 等四元数的转换
DAYNIGHT 返回一个网格,在给定太阳位置为 (A,B) 时,面向太阳的网格点为 1, 其他为 0,如果过渡宽度 C 为 0,则结果为 0 和 1 两种,如果 C 不为 0,则使用 atan 函数近似求解,因此值不为 0 或 1。
VPDF 运算符的输入数据单位为角
CUMSUM 运算符通常在行或者列结束时重置累计的值,使用 ±3 或 ±4 可以使累积 的值在下一行或者列继续
位运算符 BITAND,BITLEFT,BITNOT,BITOR,BITRIGHT, BITTEST 和 BITXOR 会将网格数据中的单精度数转换为无符号的 32 位整数, 然后按位运算。因此,可储存在双精度数中的最大整数为 2^24 ,更大的数都会被 截断。如果被比较的数中包括 NaN ,则最终结果也为 NaN
网格值精度
不管输入数据的精度如何,创建网格文件的 GMT 程序将在内部以 4 字节浮点数组的形式保存网格。 这样做是为了节省内存,而且大多数实际数据都可以使用 4 字节浮点值存储。 具有更高精度的数据(即双精度值)将在 GMT 操作网格或写入新网格时失去该精度。 为了限制处理数据时的精度损失,用户应该始终考虑在处理之前对数据进行归一化。
储存、调用和清除
用户可以将中间计算结果储存到一个变量中,并在后续计算中调用该变量。这在需要 对某部分进行多次重复计算时可以提高效率和可读性。保存结果需要使用特殊的运算符 STO@label , 其中 label 是变量的名称。调用该变量时,使用 [RCL]@label , RCL 是可选的。使用后要清除该变量,可以使用 CLR@label , STO 和 CLR 均不影响计算中的堆栈。
GSHHG 信息
GSHHG (The Global Self-consistent, Hierarchical, High-resolution Geography Database) 最初为 GSHHS,是一个海岸线数据库,主要有三个来源:World Vector Shorelines (WVS,不包括南极洲), CIA World Data Bank II (WDBII), 和 Atlas of the Cryosphere (AC,只包含南极洲)。 除了南极洲,所有的 1 级多边形(海陆边界)都来自更准确的 WVS,所有的更高级别 的多边形(2-4 级,湖泊边界、湖中岛边界和湖中岛中湖边界)来自 WDBII。南极洲 的海岸线有两种:冰盖的边界和陆地的边界,可以使用 -A 选项选择。为了将 WVS 、WDBII 和 AC 数据转换为 GMT 可用的格式,GMT 已经进行了多种处理,包括:由线段 组建多边形,去重,以及校正多边形之间的交叉等。每个多边形的面积已经被计算出来, 因此,用户可以自己选择不绘制小于最小面积的多边形,还可以限制绘制的多边形的级别 ,见 -A 选项。绘制海岸线时,还可以使用不同的精细程度,其中低分辨率的海岸线 是由 Douglas-Peucker 算法简化得到的。河流和边界的分类遵循 WDBII。详细细节见 GSHHG 。
点位于多边形内/外
为了确定点在多边形内,外或在边界上,GMT 会平衡数据类型以及多边形形状等因素来 确定算法。对于笛卡尔坐标,GMT 使用 non-zero winding 算法,该算法非常快。对于 地理坐标,如果多边形不包括两极点且多边形的经度范围不超过 360 度,同样使用该 算法。否则,GMT 会采用 full spherical ray-shooting 方法。
宏
用户可以将特定的运算符组合保存为宏文件 gmtmath.macros 。文件中可以包含任意 数量的宏, # 开头的行为注释。宏的格式为
name = arg1 arg2 ... arg2[ : comment]
其中,name 是宏名,当此运算符出现在命令中时,则将其简单替换为参数列表。宏 不可以互相调用。下面给出一个宏例子:INCIRCLE 宏需要三个参数:半径,x0 和 y0, 并将在圆内的点设置为 1,外部设置为 0
INCIRCLE = CDIST EXCH DIV 1 LE : usage: r x y INCIRCLE to return 1 inside circl
由于在宏中可能使用地理或时间常数,因此可使用 : 后加一个空格的形式作为注释的开端。
示例
计算网格点到北极的距离
gmt grdmath -Rg -I1 0 90 SDIST = dist_to_NP.nc
求两个文件的均值以及结果的 log10 函数值
gmt grdmath file1.nc file2.nc ADD 0.5 MUL LOG10 = file3.nc
给定含有海底地形年代(单位 m.y.)和深度(单位 m)网格文件 agrs.nc ,使用
公式 depth(单位为 m) = 2500 + 350 * sqrt (age) 估计正常深度
gmt grdmath ages.nc SQRT 350 MUL 2500 ADD = depths.nc
从 s_xx.nc,s_yy.nc 和 s_xy.nc 三个文件包含的应力张量中,根据
tan (2*a) = 2 * s_xy / (s_xx - s_yy) 求出最大主应力的角度,单位为度
gmt grdmath 2 s_xy.nc MUL s_xx.nc s_yy.nc SUB DIV ATAN 2 DIV = direction.nc
计算 1 度分辨率的网格上完全正则化的 8 阶 4 次球谐函数,实数和虚数的振幅分别为 0.4 和 1.1
gmt grdmath -R0/360/-90/90 -I1 8 4 YLM 1.1 MUL EXCH 0.4 MUL ADD = harm.nc
提取文件:file:faa.nc 中超过 100 mgal 的局部最大值的位置
gmt grdmath faa.nc DUP EXTREMA 2 EQ MUL DUP 100 GT MUL 0 NAN = z.nc
gmt grd2xyz z.nc -s > max.xyz
变量的使用: consider this radial wave where we store and recall the normalized radial arguments in radians
gmt grdmath -R0/10/0/10 -I0.25 5 5 CDIST 2 MUL PI MUL 5 DIV STO@r COS @r SIN MUL = wave.nc
创建一个保存 32 位浮点型 GeoTiff 文件
gmt grdmath -Rd -I10 X Y MUL = lixo.tiff=gd:GTiff
计算地理网格 data.grd 中网格点到 trace.txt 的距离,单位为 km
gmt grdmath -Rdata.grd trace.txt LDIST = dist_from_line.grd
-S 选项的使用:计算所有以 model_*.grd 为名的网格对应节点的标准差
gmt grdmath model_*.grd -S STD = std_of_models.grd
创建 0.5 度分辨率的 geotiff 网格文件,网格值为离海岸线的距离,单位为 km
gmt grdmath -RNO,IS -Dc -I.5 LDISTG = distance.tif=gd:GTIFF
参考文献
Abramowitz, M., and I. A. Stegun, 1964, Handbook of Mathematical Functions, Applied Mathematics Series, vol. 55, Dover, New York.
Holmes, S. A., and W. E. Featherstone, 2002, A unified approach to the Clenshaw summation and the recursive computation of very high degree and order normalized associated Legendre functions. Journal of Geodesy, 76, 279-299.
Press, W. H., S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery, 1992, Numerical Recipes, 2nd edition, Cambridge Univ., New York.
Spanier, J., and K. B. Oldman, 1987, An Atlas of Functions, Hemisphere Publishing Corp.