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

# info

官方文档:

  info

简介:

  从表数据中提取信息

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

## 语法

gmt info [ table ] [ `-A` a|t|s ] [ `-C` ] [ `-D`[dx[/dy]] ] [ `-E` L|l|H|h[col] ] [ `-F`[i|d|t] ] [ `-I`[b|e|f|p|s]dx[/dy[/dz...][+e|r|R incs]] ] [ `-L` ] [ `-T` dz[w|d|h|m|s][+c col] ] [ `-V`[level] ] [ `-a` flags ] [ `-bi` binary ] [ `-di` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-g` gaps ] [ `-h` headers ] [ `-i` flags ] [ `-o` flags ] [ `-qi` flags ] [ `-r` reg ] [ `-s` flags ] [ `-w` flags ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

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

## 可选选项

-A

-A a|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 列]。 默认情况下，输出结果为字符串格式 -R w/e/s/n 或 -R xmin/xmax/ymin/ymax 。 如果设置了 `-C`，每个 min 和 max 值会输出在独立的列中。 如果仅给出一个增量，该增量也将用于第二列。可以使用以下附加选项：

  - b ： 将数据表或分段的边界框写入为闭合多边形段，参考 `-A`。

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

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

  - p ： 仅给出一个增量 dx 时，不将其用于第二列。

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

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

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

  - +r ： 进一步修改前 n 列的 min/max 。附加 inc 、 xinc/yinc 或 winc/einc/sinc/ninc 以将区域调整为这些步长的倍数 [默认不调整]。

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

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

-L

-L

  确定多个表数据（ `-A` f ）或多段数据（ `-A` s ）的共同范围。 若与 `-I` 选项连用，则最终的结果会向内近似以使得极值位于真实数据范围内。

-T

-T dz[w|d|h|m|s][+c col]

  以 -T zmin/zmax/dz 的形式输出第一列的最小值/最大值，并将其取整为最接近 dz 的倍数。 附加 +c col 输出第 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

-di nodata

  将输入数据某些特定值当作NaN。 (参数详细介绍)

-e

-e[~]"pattern" | -e[~]/regexp/[i]

  筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)

-f

-f[i|o]colinfo

  显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)

-g

-g[a]x|y|d|X|Y|D|[col]z gap[+n|p]

  确定数据或线段的间断。 (参数详细介绍)

-h

-h[i|o][n][+c][+d][+m segheader][+r remark][+t title]

  在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)

-i

-i cols[+l][+s scale][+o offset][,...][,t[word]]

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

-o

-o cols[,...][,t[word]]

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

-qi

-qi[~]rows[+c col][+a|f|s]

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

-r

-r[g|p]

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

-s

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

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

-w

-wy|a|w|d|h|m|s|c period[/phase][+c col]

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

-:

-:[i|o]

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

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## ASCII 格式精度

ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ；控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_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。

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

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

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

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

当 `-I` 选项和 `-C` 选项一起使用时，输出不再是 -R w/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