sphinterpolate
- 贡献者:
- 官方文档:
- 简介:
sphinterpolate 读取 lon,lat,z 形式的文件,进行 Delaunay 三角剖分并作球面张力插值。通过 -Q 选项可以使用不同的插值方法。
语法
gmt sphinterpolate [ table ] -Ggrdfile -Iincrement -Rregion [ -D[east] ] [ -Qmode[options] ] [ -T ] [ -V[level] ] [ -Z ] [ -bibinary ] [ -dinodata[+ccol] ] [ -eregexp ] [ -hheaders ] [ -iflags ] [ -qiflags ] [ -rreg ] [ -sflags ] [ -:[i|o] ] [ --PAR=value ]
必选选项
- table
一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。
-Goutgrid[=ID][+ddivisor][+ninvalid] [+ooffset|a][+sscale|a] [:driver[dataType][+coptions]]
输出网格文件名,其中各子选项的含义见 网格文件 。
- -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 覆盖相应的值
- -Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)
指定数据范围
可选选项
- -D[east]
用于删掉重复点 [默认不删除,即假定数据中不存在重复];通过追加 east 参数表示不对在此经度上的点做重复检查
- -Qmode[options]
设置用于内插的计算张力因子的方法,用来保证局部形状特征或满足弧段约束 [默认没有张力]
p 分段线性插值,不施加张力
l 使用局部梯度估计进行平滑插值
g[N/M/U] 使用全局梯度估计进行平滑插值。N/M/U 中 N 为使用可变张力时,迭代次数 [3]; M 确定全局梯度时使用的 Gauss-Seidel 迭代次数 [10]; U 最后一次迭代中梯度变化的阈值 [0.01]
s[E/U/N] 平滑。E/U/N [/0/0/3] 中 E 为典型数据值中预期方差; U 为数据偏差的加权平方和的上限。 N 为使用可变张力时的迭代次数。
- -T
使用可变张力; 使用 -Qp 选项时,忽略该选项
- -V[level] (more …)
设置 verbose 等级 [w]
- -Z
在内插前,使用最大数据范围 1/(max-min) 进行数据缩放 [默认不缩放]
- -bi[ncols][type][w][+l|b] (more …)
设置二进制输入数据的格式
- -dinodata (more …)
将输入数据中值为 nodata 的列替换为 NaN
- -e[~]“pattern” | -e[~]/regexp/[i] (more …)
筛选或剔除匹配指定模式的数据记录
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle] (more …)
跳过或生成指定数目的头段记录
- -icols[+l][+sscale][+ooffset][,…][,t[word]] (more …)
设置输入数据列及简单变换(0表示第一列,t 表示文本列)
- -qi[~]rows[+ccol][+a|f|s] (more …)
筛选输入的行或数据范围
- -r[g|p] (more …)
设置网格配置方式 [默认为网格线配准]
- -s[cols][+a|+r] (more …)
设置 NaN 记录的处理方式
- -:[i|o] (more …)
交换输入或输出中的第一和第二列
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
示例
采用分段线性插值由 mars370d.txt
生成全球 1 度分辨率网格
gmt begin mars
gmt sphinterpolate @mars370d.txt -Rg -I1 -Qp -Gmars.nc
gmt grdimage mars.nc -JH0/4.5i -B30g30
gmt end show
使用无张力的插值,由 testdata.txt
生成全球 1 度分辨率网格
gmt sphinterpolate testdata.txt -Rg -I1 -Gsolution.nc
注意事项
STRIPACK 算法需要输入中不包含重复点。 blockmean 等模块可以将多个接近的点合并成单个点。sphinterpolate 的 -D 选项也可以删除重复点,但是这通过对点的坐标精确比较实现,对大型数据集来说,运行可能会很慢。STRIPACK 算法在检测到重复点时,会直接退出执行
参考文献
Renka, R, J., 1997, Algorithm 772: STRIPACK: Delaunay Triangulation and Voronoi Diagram on the Surface of a Sphere, AMC Trans. Math. Software, 23(3), 416-434.
Renka, R, J,, 1997, Algorithm 773: SSRFPACK: Interpolation of scattered data on the Surface of a Sphere with a surface under tension, AMC Trans. Math. Software, 23(3), 435-442.
相关模块
greenspline, nearneighbor, sphdistance, sphtriangulate, surface, triangiulate