grd2xyz
- 官方文档:
- 简介:
将网格文件转换成表数据
grd2xyz 读取一个或多个二进制2D网格文件,并将XYZ数据以ASCII或二进制格式
写到标准输出中。ASCII输出的格式由参数 FORMAT_FLOAT_OUT
控制,也可以以单精度或双精度浮点数的形式储存为二进制格式,还可以只输出Z值而不包含
XY坐标数据(参见下文的 -Z )。或者可以使用 -T 将网格保存为用于 3D 打印机的 STL 格式。
此外,通过 -C 提供 CPT,将根据 z 值在输出中添加 r、g、b、a 列。
语法
gmt grd2xyz
ingrid
[ -C[section/]master|cpt|color\(_1\),color\(_2\)[,color\(_3\),…][+h[hinge]][+idz][+u|Uunit][+sfname] ]
[ -F[f|i] ]
[ -L[c|r|x|y]value ]
[ -Rregion ]
[ -V[level] ]
[ -T[a|b][base] ]
[ -W[a[+uunit]|weight] ]
[ -Z[flags] ]
[ -bobinary ]
[ -dnodata[+ccol] ]
[ -fflags ]
[ -hheaders ]
[ -oflags ]
[ -qoflags ]
[ -sflags ]
[ --PAR=value ]
输入数据
ingrid[=ID|?varname][+bband][+ddivisor][+ninvalid][+ooffset][+sscale]
输入网格名。通过追加 =ID 可指定 网格格式 [默认为 =nf]。 追加 ?varname 可指定 NetCDF 变量 [默认为 GMT 找到的第一个 2-D 网格]。 参数详细介绍请参考 读 netCDF 文件。
可选选项
- -C
- -C[section/]master|cpt|color\(_1\),color\(_2\)[,color\(_3\),…][+h[hinge]][+idz][+u|Uunit][+sfname]
基于 z 值确定颜色分量。通过指定主 CPT 名称,CPT 文件或用逗号分割的多个颜色, 以创建一个 CPT。如果不指定参数,则在现代模式下使用当前 CPT(如果可用)。 支持以下多种输入:
主 CPT 名称,例如 earth (详见 内置CPT ), 可使用 CPT 名称 master 或包括相对路径的 section/master 来指定(内置 CPT 不可添加 .cpt 扩展名)。
自定义 CPT 文件 cpt ,例如 my_colors.cpt 。
自动从多个颜色 color\(_1\),color\(_2\)[,color\(_3\),…] 中创建线性连续的 CPT,其中 z 值从 0 开始, 每添加一种颜色 z 值加 1。在这种情况下, color\(_i\) 可以是 r/g/b (e.g. 255/100/75), h-s-v (e.g. 180-0.8-1), c/m/y/k (e.g. 80/50/40/30),HTML十六进制 (e.g. #aabbcc) 或 颜色名称。逗号之间不能有空格。
支持以下选项:
+h - 对于有软铰链 (soft hinge) 的主 CPT,可指定 hinge 值启用铰链, 而对于有硬铰链 (harde hinge) 的 CPT,可以修改铰链位置 hinge ,但不能禁用。
+i - 指定 dz 使网格 z 值范围分层,默认使用精确范围。
+s - 将创建的 CPT 保存到文件 fname。当 CPT 是自动创建时这很有用, 但必须用于
-C的末尾。+u - 对于任何其他主 CPT,可以通过指定其原始单位 unit 将其 z 值单位转换为米。
+U - 与 +u 类似,但是将 z 值单位从米转换为指定单位 unit 。
注: 我们将在原始输出后新增四列,分别为 red、green 和 blue 的颜色分量 (均在 0-255 范围内)以及透明度(0-100%,0 表示不透明)。如果颜色表为灰度表, 则输出灰度(0-255)而非三原色。
- -F
- -F[f|i]
输出的XY坐标值用对应的列、行号替代
默认输出的三列数据是:X坐标、Y坐标和Z值。使用该选项,则输出的三列数据为: 列号、行号和Z值。其中,行号和列号从0开始算起。使用 -Ff 则行号和列号从1开始算起。 若使用 -Fi 会输出两列数据:索引值和Z值。索引值相当于是将二维数组用一维数组表示。
- -L
- -L[c|r|x|y]value
将记录的输出限制在单行或单列。通过 行 或 列 编号(分别通过指令 c 或 r), 或通过固定的 x 或 y 值(分别通过指令 x 或 y)来指定所需的向量。 如果超出有效范围,则不会产生输出并发出警告。 注意:对于指令 x 和 y,将分别查找最接近的列或行。
- -R
- -Rxmin/xmax/ymin/ymax[+r][+uunit]
指定数据范围。 (参数详细介绍)
使用
-R选项指定只对网格数据的一个子区域进行操作。若该子区域超过网格边界, 则只输出二者共同的区域
- -T
- -T[a|b][base]
将用于 3D 打印的 STL 三角网写入标准输出。默认情况下( -Ta)写入 STL ASCII 文件。 附加 b 则改为写入 STL 二进制(小端序)格式。有关 STL 的更多信息, 请参见 维基百科上的 STL 概述。 注意:所有坐标都经过调整,使得 xmin = ymin = zmin = 0。 可以附加一个不同于网格最小值的更低的 base [默认]。 注意:网格必须不含 NaN 值。如果网格包含 NaN,将自动用网格中的最小值替换它们; 如果希望选择其他值,请使用 grdmath 预处理网格。
- -V
- -V[level]
设置 verbose 等级 [w]。 (参数详细介绍)
- -W
- -W[a[+uunit]|weight]
输出四列数据 x, y, z, w,其中 w 是提供的权重 weight*(如果未提供则为 1)[默认仅输出 *x, y, z]。 使用 -Wa 则权重为每个节点所占据的面积。 对于笛卡尔网格,这仅是 x 和 y 增量的乘积(边界处 [一半] 和角落处 [四分之一] 的网格线配准网格除外)。 对于地理网格,默认长度单位为 k**(因此面积单位为 km:sup:`2`)。通过附加 **+uunit 来更改单位。 对于此类网格,其面积随纬度变化,并且在边界、角落和极点处的网格线注册布局也存在特殊情况。
- -Z
- -Z[flags]
以 ASCII 或二进制形式输出Z值
使用该选项,则输出时只有Z值,没有XY信息。输出Z值的顺序由 flags 决定。若是行优先,flags 的第一个字符可以取:
T 表示第一行是y=ymax
B 表示第一行是y=ynin
flags 的第二个字符可以取:
L 表示每一行的第一个元素是x=xmin
R 表示每一行的第一个元素是x=xmax
若是列优先,则 L|R 为第一个字符,B|T 为第二个字符。
对于网格线配准的网格文件而言:
若网格在X方向是周期的,输出数据时不需要包含x=xmax所在的列,则加上 x
若网格在Y方向是周期的,输出数据时不需要包含y=ymax所在的行,则加上 y
若数据需要做字节交换,则加上 w。最后需要指定数据以何种数据类型保存:
aASCII表,每行输出一个Z值cint8_t, signed 1-byte characteruuint8_t, unsigned 1-byte characterhint16_t, short 2-byte integerHuint16_t, unsigned short 2-byte integeriint32_t, 4-byte integerIuint32_t, unsigned 4-byte integerlint64_t, long (8-byte) integerLuint64_t, unsigned long (8-byte) integerf4-byte floating point single precisiond8-byte floating point double precision
默认值为 -ZTLa。
- -bo
- -bo[ncols][type][w][+l|b]
控制二进制文件的输出格式。 (参数详细介绍)
该选项只适用于以二进制格式输出XYZ数据。若需要只输出Z值,可以使用
-Z选项。
- -d
- -d[i|o]nodata
将某些特定值当作 NaN。 (参数详细介绍)
- -f
- -f[i|o]colinfo
显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)
- -h
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]
在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)
-h 根据第一个网格文件头中的信息输出 1 条头记录。如果选择了二进制输出,则忽略该选项 [默认无头记录]。
- -o
- -ocols[,…][,t[word]]
对输出的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -qo
- -qo[~]rows[+ccol][+a|f|s]
筛选输出的行或数据范围。 (参数详细介绍)
- -s
- -s[cols][+a|+r]
设置 NaN 记录的处理方式。 (参数详细介绍)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
距离单位
ASCII 格式精度
ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ;控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_CLOCK_OUT ;普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失,这会在下游计算中导致一些问题。 如果用户需要保证数据精度,则应考虑将数据写为二进制文件,或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。
非等间隔XY坐标
几乎所有GMT模块只能处理XY等间隔的网格文件, grd2xyz 是个例外。 grd2xyz 可以输出非等间隔网格文件的原始 x y z 值。
时间坐标
GMT可以识别netCDF网格文件中的时间坐标。netCDF变量的 unit 属性会被解析以
确定网格文件中时间坐标的起算点和单位。这些时间坐标值会被进一步根据
TIME_UNIT 和 TIME_EPOCH
转换为GMT内部时间值。输出时,默认以相对时间的形式输出,也可以使用 -f 选项
指定以绝对时间方式输出。
行顺序
-Lr 选项允许输出网格中的特定行。请注意,虽然网格的 y 坐标向上为正,但内部行号是扫描线编号,因此向下为正。 因此,第一行 (0) 与最大的 y 值重合。这意味着 -Lr0 和 -Lyymax (使用正确的最大 y 值)将产生相同的结果。 相比之下, x 和列号都是向右为正,其中 -Lc0 和 -Lxxmin (使用正确的最小 x 值)将产生相同的输出。
示例
将一个netCDF网格文件转换为XYZ文件:
gmt grd2xyz @AFR.nc > AFR.xyz
将一个netCDF文件以单精度二进制格式输出其Z值:
gmt grd2xyz @AFR.nc -ZTLf > AFR.b