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

# grdinfo

官方文档:

  grdinfo

简介:

  提取网格文件的基本信息

grdinfo 读取二维二进制网格文件，并报告网格中数据 (v) 和坐标 (x,y) 的元数据和各种统计信息。 对于三维数据立方体，坐标则为 (x,y,z) 。能提取的信息包括：

- v 和坐标的最小值/最大值

- v 的最小/最大值出现的位置

- 坐标的网格间隔

- 每个维度方向上的节点数目

- v 的平均值、标准差

- v 的中位数、中值绝对偏差

- v 的众数（最小中值平方法；LMS）、LMS 尺度

- 值为 NaN 的节点数

- 网格配准方式

- 网格类型（笛卡尔数据或地理数据）

三维数据立方体与选项 `-D` 、 `-E` 、 `-F` 和 `-I` b 不兼容。

## 语法

gmt grdinfo ingrid [ `-C`[n|t] ] [ `-D`[xoff[/yoff]][+i] ] [ `-E`[x|y][+l|L|u|U] ] [ `-F` ] [ `-G` ] [ `-I`[dx[/dy]|b|i|o|r] ] [ `-L`[0|1|2|p|a] ] [ `-M`[c|f] ] [ `-R` region ] [ `-T`[dv][+a[alpha]][+s] ] [ `-V`[level] ] [ `-f` flags ] [ `-h` headers ] [ `-o` flags ] [ --PAR=value ]

## 输入数据

ingrid[=ID|?varname][+b band][+d divisor][+n invalid][+o offset][+s scale]

> 输入网格名。通过追加 =ID 可指定 网格格式 [默认为 =nf]。 追加 ?varname 可指定 NetCDF 变量 [默认为 GMT 找到的第一个 2-D 网格]。 参数详细介绍请参考 读 netCDF 文件。

> 可以列出多个二维网格或三维数据立方体文件的文件名。 注意：不能同时读取二维和三维文件。

## 可选选项

-C

-C[n|t]

  将输出信息以Tab分隔显示在一行中。输出格式为:

  name w e s n {b t} v0 v1 dx dy {dz} nx ny {nz} [x0 y0 {z0} x1 y1 {z1}] [med scale] [mean std rms] [n_nan] registration gtype

  方括号中的信息仅当使用 `-M` (无参数)、 `-L` 1、 `-L` 2 选项时才会输出。 只有三维数据立方体文件会输出大括号中的信息。

  使用 -Ct 则将文件名 name 放在最后一列；使用 -Cn 则只输出数值列。

  registration 为网格的配准方式，0表示网格线配准，1表示像素配准； gtype 表示数据类型，0表示笛卡尔数据，1表示地理数据。

  若与 `-I` 选项一起使用，则输出格式为:

  NF w e s n {b t} v0 v1

  NF 是读取的文件总数，且 w e s n {b t} 取整输出。

-D

-D[xoff[/yoff]][+i]

  将网格区域划分为多个子区域，并报告子区域的范围。

  子区域大小为 dx 乘 dy，由 `-I` 选项控制。 xoff/yoff 用于指定多个子区域之间的重叠区域。 +i 子选项表明若该子区域内无数据则忽略该区域。 若使用 `-C` 选项则以 w e s n 格式输出每个子区域的区域范围， 使用 -Ct 则在最后一列以 `-R` w/e/s/n 格式输出子区域数据范围。

  `-D` 选项示例:

      $ gmt grdinfo @earth_relief_30m -D -I180/90
      -R-180/0/-90/0
      -R0/180/-90/0
      -R-180/0/0/90
      -R0/180/0/90

  `-D` 与 `-C` 一起使用:

      $ gmt grdinfo @earth_relief_30m -D -I180/90 -C
      -180    0       -90     0
      0       180     -90     0
      -180    0       0       90
      0       180     0       90

-E

-E[x|y][+l|L|u|U]

  报告每一列（-Ex）或每一行（-Ey）的极值。

  - +u|U : 寻找每一列的极大值 [默认行为]

  - +l|L : 寻找每一列的极小值

  其中，大写的 +L 表示寻找正值中最小的一个； 大写的 +U 表示寻找负值中最大的一个。

  使用本选项时只允许读取一个输入数据文件。

-F

-F

  以世界地图映射格式报告网格范围和 x/y 间隔 [默认采用通用格式]。该选项不得与 `-C` 一起使用。

-G

-G

  对于分块的远程网格数据，强制下载所有的数据切片分块，以报告所需的信息 [默认不报告分块远程网格数据的信息]。

-I

-I[dx[/dy]|b|i|o|r]

  报告网格数据的区域范围，并将其取整为最接近 dx 和 dy 的倍数， 并以 `-R` w/e/s/n 的形式输出（除非设置了 `-C`）。

  - -Ir 以 `-R` w/e/s/n 的形式输出实际的网格区域范围

  - -Io 以 `-R` w/s/e/n+r 的形式输出倾斜格式

  - -Ii 以 `-R` w/e/s/n 的形式输出 img 补充包生成的网格文件（笛卡尔墨卡托网格）的精确范围

  - -Ib 输出区域范围对应的多边形顶点的坐标

  - `-I` 不加任何选项以 `-I` xinc[/yinc] 形式输出网格间隔

  如果 `-D` 生效，则 dx 和 dy 是所需切片的维度。

  `-I` 选项示例:

      $ gmt grdinfo @earth_relief_30m -I
      -I30m

      $ gmt grdinfo @earth_relief_30m -Ir
      -R-180/180/-90/90

      $ gmt grdinfo @earth_relief_30m -Ib
      -180    -90
      180     -90
      180     90
      -180    90
      -180    -90

-L

-L[0|1|2|p|a]

  报告Z值的其他信息。该选项可多次使用。

  - -L0: 扫描整个数据并报告Z值的范围，而不仅仅只是从网格的头段中读取Z值范围

  - -L1: 输出中位数以及L1 scale （L1 scale= 1.4826*Median Absolute Deviation）

  - -L2: 输出均值、标准差以及均方根

  - -Lp: 输出众数 (Least Median of Squares; LMS) 和 LMS scale

  - -La: 输出以上全部信息

  注意，对于像素配准的地理网格数据而言，每个节点代表的区域面积随着纬度的增加 而减小，此时GMT报告的是网格文件在球面平均下的统计值。

-M

-M[c|f]

  查找并报告最小/最大 v 值的坐标位置，统计并报告设置为 NaN 的节点数[默认]。 使用 f 通过读取矩阵来强制更新 v 值的最小/最大值，或者使用 c 在文件头信息不包含有效 v 范围时有条件地执行此操作。

-R

-R west/east/south/north[/zmin/zmax][+r][+u unit]

  指定数据范围。对于三维透视图（-p 选项） ，可以加上 /zmin/zmax 指定Z轴的范围。 (参数详细介绍)

> 从网格文件中取出一个子区域，并报告该子区域的信息。 若指定的区域范围超过了网格边界，则只提取公共区域内的为网格信息。

-T

-T[dv][+a[alpha]][+s]

  以 `-T` vmin/vmax 或 `-T` vmin/vmax/dv 的格式输出数据值 v 的范围。 输出结果可以给 makecpt 使用。

  若只使用 `-T` 选项，则以 `-T` vmin/vmax 格式输出； 若使用 dv 则先提取 v 的最小最大值，并做微调使得最值是 dv 的整数倍，并 以 `-T` vmin/vmax/dv 格式输出。

  其它子选项：

  - +a alpha 对网格文件中的值进行排序，并去除极值两端的部分数据。alpha 为要去除的数据的百分比，默认值为 2。即去除数据 0.5*alpha 和 100 - 0.5*alpha 的数据，并据此修改数据值范围。

  - +s 根据数据值的绝对最大值，输出一个关于0对称的范围。

  示例:

      $ gmt grdinfo @earth_relief_30m -T
      -T-9458/5888

      $ gmt grdinfo @earth_relief_30m -T100
      -T-9500/5900/100

      $ gmt grdinfo @earth_relief_30m -T100+s
      -T-9500/9500/100

-V

-V[level]

  设置 verbose 等级 [w]。 (参数详细介绍)

-f

-f[i|o]colinfo

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

-h

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

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

-o

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

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

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 示例

    $ gmt grdinfo @earth_relief_30m.grd
    earth_relief_30m.grd: Title: Earth Relief at 30 arc minutes
    earth_relief_30m.grd: Command: grdfilter SRTM15+V2.nc -Fg55.6 -D1 -I30m -rg -Gearth_relief_30m.grd=ns --IO_NC4_DEFLATION_LEVEL=9 --PROJ_ELLIPSOID=Sphere
    earth_relief_30m.grd: Remark: Obtained by Gaussian Cartesian filtering (55.6 km fullwidth) from SRTM15+V2.nc [Tozer et al., 2019; https://doi.org/10.1029/2019EA000658]
    earth_relief_30m.grd: Gridline node registration used [Geographic grid]
    earth_relief_30m.grd: Grid file format: ns = GMT netCDF format (16-bit integer), CF-1.7
    earth_relief_30m.grd: x_min: -180 x_max: 180 x_inc: 0.5 (30 min) name: longitude n_columns: 721
    earth_relief_30m.grd: y_min: -90 y_max: 90 y_inc: 0.5 (30 min) name: latitude n_rows: 361
    earth_relief_30m.grd: z_min: -9458 z_max: 5888 name: elevation (m)
    earth_relief_30m.grd: scale_factor: 1 add_offset: 0
    earth_relief_30m.grd: format: netCDF-4 chunk_size: 145,181 shuffle: on deflation_level: 9

从输出中可以看到很多信息：

- 网格文件中的标题信息；

- 生成该网格文件的命令；

- 网格文件的配准方式，此处为Gridline配准；

- 数据格式为 ns 即16位整型；

- 数据中X维度的最小值x_min、最大值x_max、网格间隔x_inc以及数据点数nx；

- 数据中Y维度的最小值y_min、最大值y_max、网格间隔y_inc以及数据点数ny；

- 数据中Z值的最小值z_min和最大值z_max以及其他信息；

## 相关模块

grd2cpt, grd2xyz, grdedit