nearneighbor
- 官方文档:
- 简介:
使用最邻近算法网格化表数据
nearneighbor 读取 (x,y,z[,w]) 形式的数据,并使用最邻近算法计算网格点的加权平均值。 计算原理为
其中 n 为满足筛选标准的数据点数,\(r_i\) 为网格点到第 i 个数据点的距离,如果不给定 输入点的权重,则假定其为等权,即 \(w_i = 1\)
算法示意图。R 为搜索半径,其限制了考虑的点和扇区的数量,只有每个扇区中最近的点(红色点)参与估计
语法
gmt nearneighbor
[ table ]
-Goutgrid
-Iincrement
-Rregion
-Ssearch_radius
[ -Eempty ]
[ -Nsectors[+mmin_sectors]|n ]
[ -V[level] ]
[ -W ]
[ -aflags ]
[ -bibinary ]
[ -dinodata[+ccol] ]
[ -eregexp ]
[ -fflags ]
[ -hheaders ]
[ -iflags ]
[ -nflags ]
[ -qiflags ]
[ -rreg ]
[ -wflags ]
[ -:[i|o] ]
[ --PAR=value ]
必选选项
- table
输入表数据,包含三列或四列 (x,y,z[,w]) 形式的数据(见
-W选项)
- -G
-Goutgrid[=ID][+ddivisor][+ninvalid] [+ooffset|a][+sscale|a] [:driver[dataType][+coptions]]
输出网格名。各子选项含义见 网格文件
- -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 覆盖相应的值
- -R
- -Rxmin/xmax/ymin/ymax[+r][+uunit]
指定数据范围。 (参数详细介绍)
- -S
- -Ssearch_radius
设置 search_radius ,即上图中的 R,可在后面追加单位
可选选项
- -E
- -Eempty
指定空节点的值为 empty ,默认为 NaN
- -N
- -Nsectors[+mmin_sectors]|n
以每个网格节点为中心可以将圆形的搜索区域划分为扇区 sectors 。+m 选项 用来设置最少搜索的扇区 min_sectors ,即至少 min_sectors 个扇区至少含有 一个数据时,才计算最终的加权值;未通过此测试的节点值被设置为 NaN,见
-E。 如果不设置该选项,GMT 至少设置 50% 的扇区来计算加权值,默认情况下, sectos = min_sectors = 4。每个扇区最接近的值才会被用来计算加权值,远处的点 则被忽略。使用 -Nn 可以调用 GDAL 的最邻近算法,而不是用 GMT 的该算法。
- -W
- -W
表明输入数据的第四列为权重,该权重与距离权重因子相乘即为最终权重
- -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]]
对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -qi
- -qi[~]rows[+ccol][+a|f|s]
筛选输入的行或数据范围。 (参数详细介绍)
- -r
- -r[g|p]
设置网格配置方式 [默认为网格线配准]。 (参数详细介绍)
- -w
- -wy|a|w|d|h|m|s|cperiod[/phase][+ccol]
将输入坐标转换为循环坐标。 (参数详细介绍)
- -:
- -:[i|o]
交换输入或输出数据的前两列。 (参数详细介绍)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
距离单位
网格值精度
不管输入数据的精度如何,创建网格文件的 GMT 程序将在内部以 4 字节浮点数组的形式保存网格。 这样做是为了节省内存,而且大多数实际数据都可以使用 4 字节浮点值存储。 具有更高精度的数据(即双精度值)将在 GMT 操作网格或写入新网格时失去该精度。 为了限制处理数据时的精度损失,用户应该始终考虑在处理之前对数据进行归一化。
示例
将文件 ship_15.txt 格网化成 5 分分辨率的网格,搜索半径设置为 15 分,绘制最终
的网格
gmt begin map
gmt nearneighbor @ship_15.txt -R245/255/20/30 -I5m -Ggrid.nc -S15m
gmt grdimage grid.nc -B
gmt end show
使用 seaMARCII_bathy.lon_lat_z 文件创建 0.5 分分辨率的网格,设置搜索半径为 5 km,
将搜索圆范围分为八个扇区,每个扇区必须有数据,并将最终的空节点设置为 -9999
gmt nearneighbor seaMARCII_bathy.lon_lat_z -R242/244/-22/-20 -I0.5m -E-9999 -Gbathymetry.nc -S5k -N8+m8
使用 geoid.xyz 数据创建全球 1 度分辨率的网格,搜索半径为 200 km,距离计算使用
球面距离,将搜索范围分为4个扇区,至少 2 个扇区包含数据时计算加权值
gmt nearneighbor geoid.xyz -R0/360/-90/90 -I1 -Ggeoid.nc -S200k -N4
相关模块
blockmean, blockmedian, blockmode, greenspline, sphtriangulate, surface, triangulate