✍️ 田冬冬 , 陈箫翰  •  📅 2026-01-04

info

官方文档:

info

简介:

从表数据中提取信息

info 读取标准输入(或数据文件)并寻找每一列的极值,以斜杠分隔的“最小值/最大值”形式输出。 它能够识别 NaN 值,并且如果各记录之间的列数不一致,会打印警告信息。 使用 -C 选项可以将输出拆分为两个独立的列。 可以根据 -I 提供的增量,将前两列数据的范围向上或向下取整到最接近的倍数。 可以以 -Rw/e/s/n 的文本格式输出信息,可直接用于其他模块的命令行参数。 如果将 -C-I 结合使用,则输出将采用列格式,并针对 -I 中提供的所有增量对应的列进行向上/向下取整。 -T 可以以 -Tzmin/zmax/dz 的字符串格式输出信息,可直接用作 makecpt 的选项参数。

语法

gmt info [ table ] [ -Aa|t|s ] [ -C ] [ -D[dx[/dy]] ] [ -EL|l|H|h[col] ] [ -F[i|d|t] ] [ -I[b|e|f|p|s]dx[/dy[/dz…][+e|r|Rincs]] ] [ -L ] [ -Tdz[w|d|h|m|s][+ccol] ] [ -V[level] ] [ -aflags ] [ -bibinary ] [ -dinodata[+ccol] ] [ -eregexp ] [ -fflags ] [ -ggaps ] [ -hheaders ] [ -iflags ] [ -oflags ] [ -qiflags ] [ -rreg ] [ -sflags ] [ -wflags ] [ -:[i|o] ] [ --PAR=value ]

输入数据

table

一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。

可选选项

-A
-Aa|t|s

输入数据为多段数据或多文件时的处理方式(默认为 -Aa ):

  1. -Aa :报告所有文件的总最值

  2. -Af :分别报告各个文件自己的最值

  3. -As :分别报告各段数据自己的最值

-C
-C

输出时,每列的最大最小值分别占一列

在输出每一列的最大最小值时,默认会用 min/max 的格式输出,不易于脚本 处理。该选项会将每列的最大最小值分别输出为一列:

$ gmt info input.dat -C
1   2   1   3   0   3.2

该选项经常与 -i-o 选项一起使用,以提取部分列的最值信息。

-D
-D[dx[/dy]]

-I 选项的结果做整体偏移,使得区域范围的中心与原数据的中心对齐。 可以为该平移附加粒度(granularity)[默认执行精确平移]。

比如数据的真实范围是 0/3 ,使用 -I2 选项会得到 0/4 ,在此基础 上使用 -D 选项,则变成 -0.5/3.5

-E
-EL|l|H|h[col]

返回第 col 列最值所在的记录行。

  1. l|h :表示返回最小、最大值所在的记录行

  2. L|H :表示返回绝对值最小、最大值所在的记录行

若有多行均满足要求,则只返回第一行。若 col 未指定,则默认是最后一列。

-F
-F[i|d|t]

返回记录统计数据

  • -Fi :返回总文件数、总数据段数、总数据记录数、总头段记录数、总记录数

  • -Fd :返回每个数据段的信息:表号、段号、行数、开始记录号、结束记录号

  • -Ft :与 -Fd 类似,但会对每个输入文件重置段号、开始记录号和结束记录号

-I
-I[b|e|f|p|s]dx[/dy[/dz…][+e|r|R]]

将前 n 列的 min/max 值调整为给定增量 dx[/dy]… 的最近倍数(用斜杠分隔 n 个增量)[默认是 2 列]。 默认情况下,输出结果为字符串格式 -Rw/e/s/n-Rxmin/xmax/ymin/ymax 。 如果设置了 -C,每个 minmax 值会输出在独立的列中。 如果仅给出一个增量,该增量也将用于第二列。可以使用以下附加选项:

  • b : 将数据表或分段的边界框写入为闭合多边形段,参考 -A

  • e : 在 -R 字符串中给出精确 min/max。如果只想让 xy 范围中的一个是精确的,而另一个范围是取整的,请将其中一个增量设为零。

  • f : 附加 dx[/dy] 输出一个优化后的扩展区域,为 FFT 程序提供最快计算结果所需的网格范围。

  • p : 仅给出一个增量 dx 时,不将其用于第二列。

  • s : 附加 dx[/dy] 输出一个优化后的扩展区域,为 surface 等程序提供最快计算结果所需的网格范围。

可以再附加以下选项进一步调整:

  • +e : 类似于 +r,但确保边界框至少向外扩展增量的 0.25 倍 [默认不扩展]。

  • +r : 进一步修改前 n 列的 min/max 。附加 incxinc/yincwinc/einc/sinc/ninc 以将区域调整为这些步长的倍数 [默认不调整]。

  • +R : 改为通过加上和减去这些增量来向外扩展区域。

注意:如果输入的 xy 坐标相对于 dxdy 增量具有相同的相位偏移,那么在确定区域时会使用这些相位偏移, 可以使用 -r 从网格线配准切换到像素配准。对于不规则数据,两个相位偏移均被设置为 0,且 -r 会被忽略。

-L
-L

确定多个表数据( -Af )或多段数据( -As )的共同范围。 若与 -I 选项连用,则最终的结果会向内近似以使得极值位于真实数据范围内。

-T
-Tdz[w|d|h|m|s][+ccol]

-Tzmin/zmax/dz 的形式输出第一列的最小值/最大值,并将其取整为最接近 dz 的倍数。 附加 +ccol 输出第 col 列的最值。 col 的默认值为 0 ,表示第一列。 该选项不能与 -I 选项连用。

注意:如果列包含绝对时间,可以在 dz 后面附加时间单位( w|d|h|m|s ),或者默认使用 TIME_UNIT 设置的单位 [默认为 s]。

-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]]

对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-o
-ocols[,…][,t[word]]

对输出的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-qi
-qi[~]rows[+ccol][+a|f|s]

筛选输入的行或数据范围。 (参数详细介绍)

-r
-r[g|p]

设置网格配置方式 [默认为网格线配准]。 (参数详细介绍)

-s
-s[cols][+a|+r]

设置 NaN 记录的处理方式。 (参数详细介绍)

-w
-wy|a|w|d|h|m|s|cperiod[/phase][+ccol]

将输入坐标转换为循环坐标。 (参数详细介绍)

-:
-:[i|o]

交换输入或输出数据的前两列。 (参数详细介绍)

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

ASCII 格式精度

ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ;控制绝对时间的的参数包括 FORMAT_DATE_OUTFORMAT_CLOCK_OUT ;普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失,这会在下游计算中导致一些问题。 如果用户需要保证数据精度,则应考虑将数据写为二进制文件,或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。

示例

提取文件中各列的极值:

$ gmt info input.dat
input.dat: N = 6    <1/2>   <1/3>   <0/3.2>

从输出中可以看到,输入文件中有6行3列,三列数据的范围分别是1到2、1到3和0到3.2。

调整最大/小值使得其是给定的增量的最近倍数,返回的格式为 -Rw/e/s/n

$ gmt info input.dat -I2/2
-R0/2/0/4

如果设置 dx 的值为 - ,则表示以 -Rw/e/s/n 的格式输出真实精确的范围:

$ gmt info input.dat -I-
-R1/2/1/3

-I 选项和 -C 选项一起使用时,输出不再是 -Rw/e/s/n 格式:

$ gmt info input.dat -C -I2
0   2   0   4   0   3.2

上面的例子中, -I 选项后只接了一个增量,此时第二列数据也会使用同样的 增量(出于向后兼容性考虑)。若只想要为第一列指定增量,第二列不指定,可以使用 -Ip 选项:

$ gmt info input.dat -C -Ip2
0   2   1   3   0   3.2

寻找远程文件 @ship_15.txt 中的极值:

$ gmt info @ship_15.txt
ship_15.txt: N = 82651      <245/254.705>   <20/29.99131>   <-4504/-9>

寻找 @ship_15.txt 中取整到最接近 5 个单位的极值,平移至距离数据中心 1 个单位以内,并利用该区域通过 plot 将所有点绘制为黑色小圆点:

gmt plot $(gmt info -I5 -D1 @ship_15.txt$) @ship_15.txt -B -Sc2p -pdf map

寻找前 3 列中每一列的最小值和最大值(取整为整数),并分别返回每个数据文件的结果:

gmt info @ship_15.txt -C -I1/1/1

给定具有不同起点和终点位置的七个剖面,找到一个所有剖面共有的位置范围,增量为 5:

gmt info profile_[123567].txt -L -I5

文件 magprofs.txt 包含许多以独立数据段形式存储的磁力剖面。需要知道共有多少个分段:

gmt info magprofs.txt -Fi

Bugs

-I 选项尚不能正确处理时间序列数据(例如 -f0T)。因此,无法计算诸如月和年等长度可变的间隔。 作为替代,请使用与当前 TIME_UNIT 设置相同的单位来指定您的间隔。

相关模块

convert, plot