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

# grdedit

官方文档:

  grdedit

简介:

  修改网格文件的头段或内容

grdedit 模块具有如下功能：

- 从2D网格文件中读入头段信息，并使用命令行中的值替换头段信息

- 对全球地理网格文件沿着东西方向旋转

- 可以用 x y z 值替换网格文件中特定节点的值

grdedit 仅对包含网格文件头的文件进行操作。 注意：如果原始数据非常重要，则应使用 `-G` 将修改后的网格保存到新文件中。

## 语法

gmt grdedit ingrid [ `-A` ] [ `-C` b|c|n|p ] [ `-D`[+x xname][+y yname][+z zname][+s scale][+o offset][+n invalid][+t title][+r remark] ] [ `-E`[a|e|h|l|r|t|v] ] [ `-G` outgrid ] [ `-J` parameters ] [ `-L`[+n|p] ] [ `-N` table ] [ `-R` region ] [ `-S` ] [ `-T` ] [ `-V`[level] ] [ `-bi` binary ] [ `-di` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-h` headers ] [ `-i` flags ] [ `-w` flags ] [ --PAR=value ]

## 输入数据

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

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

## 可选选项

-A

-A

  必要时调整文件的 x_inc 和 y_inc，使其与其范围（或通过 `-R` 设置的新范围）相兼容。 旧版网格文件（即在 GMT 3.1 之前创建的文件）的 x_inc 和 y_inc 往往存在较大的偏差，需要进行调整。 新版文件不存在类似问题。

-C

-C b|c|n|p

  通常输出网格会存储当前模块的命令行历史记录。使用 `-C` 指定输出网格应包含哪些命令历史记录：

  - b 同时写入上一个模块和当前模块的命令历史记录

  - c 仅写入当前模块的命令历史记录

  - n 不保存任何历史记录 [默认]

  - p 仅保存之前的命令历史记录

-D

-D[+x xname][+y yname][+z zname][+c[-|cpt]][+d dname][+s scale][+o offset][+n invalid][+t title][+r remark][+v varname]

  给定网格文件头段中的基本信息：

  - +c[-|cpt] - 设置 cpt 为该网格的默认 CPT [turbo]，或使用 - 移除已设置的默认 CPT

  - +d dname - 设置数据值名称 dname

  - +n invalid - 设置 invalid 值用于表示该节点处无有效值 [NaN]

  - +o offset - 设置读入数据后并乘以因子后要加的常数 [0]

  - +r remark - 设置网格文件的注释信息

  - +s scale - 设置读入网格数据后要乘以的因子 [1]

  - +t title - 设置网格文件的标题

  - +v varname - 指定数据集变量名称 varname

  - +x xname - 指定 X 坐标名及其单位，格式为 varname [unit]，比如 "distance [km]"

  - +y yname - 指定 Y 坐标名及其单位，格式同 xname

  - +z zname - 针对 3D 网格: 指定 Z 坐标名及其单位，格式同 xname

  其它说明：

  - 未指定的项其值保持不变

  - 可以给一个空值以重置某一项，比如使用 +t 而不指定标题则设置标题为空

  - 若字符串中包含空格则需要用引号括起来

  - 若字符串中包含加号 +，需要使用 + 对其进行转义。 或者可以使用单引号套双引号的方式，例如 '"title with + inside"'

  - 若字符串中使用了shell变量，且变量值中包含加号，则需要使用 `${variable/+/\\+}`

  - 对于地理数据（比如 -fg ）和 3D 网格，xname 和 yname 会自动设置。 通常 netCDF 数据变量名为 "z"（2D 网格）或 "cube"（3D 网格）， 可通过 +v 重命名该 netCDF 变量。

-E

-E[a|e|h|l|r|t|v]

  通过以下六种方式之一对网格做变换，对于 l | r | t 会交换 x 和 y 信息。 该选项与除 `-G` 外的其它选项不兼容。

  - -Ea 同时水平和垂直翻转网格（旋转180度）

  - -Eh 水平翻转网格（左右翻转）

  - -Ev 垂直翻转网格（上下翻转）

  - -Ee 交换 x（经度）和 y（纬度）

  - -El 逆时针将网格旋转90度

  - -Er 顺时针将网格旋转90度

  - -Et 对网格进行转置（想象成一个二维矩阵），默认使用该变换

  下图展示了不同变换的具体效果：

  `Source Code`

-G

-G outgrid

  默认情况下，grdedit 模块会直接修改并覆盖原始网格文件。 使用该选项则将修改后的网格写到新的文件中。

-J

-J projection

  设置地图投影方式。 (参数详细介绍)

> 使用 `-J` 选项则将地理相关信息以 CF-1 兼容的元数据形式（可被GDAL识别）保存 到 netCDF 文件中。

-L

-L[+n|p]

  调整地理网格文件的经度

  默认情况下会调整 west 和 east 使得 west>=-180 或 east <= 180。 +n 则强制经度为负值，+p 则强制经度为正值。

-N

-N table

  从文件 table 中读入XYZ数据，并用这些XYZ数据替换网格中对应节点的值。

-R

-R xmin/xmax/ymin/ymax[+r][+u unit]

  指定数据范围。 (参数详细介绍)

> 修改网格文件的范围，并在必要时调整 x_inc 和 y_inc 的值。 注意：本选项不能用于选择输入网格的子区域，而是直接替换网格的范围。

-S

-S

  将网格沿着经度范围整体偏移，使得其满足 `-R` 定义的新范围。仅用于全球地理网格数据。

  例如，原数据范围是 0/360/-72/72，现将数据整体偏移180度使得数据范围是 -180/180/-72/72:

      gmt grdedit world.nc -R-180/180/-72/72 -S

-T

-T

  将一个网格线配准的文件变成像素配准的文件，或反之。

  使用该选项后，网格线配准的数据的范围将在四个方向上扩大半个网格间隔， 像素点配置的数据的范围将在四个方向上缩小半个网格间隔。

  注意：修改网格配准方式会导致高频信息丢失，详情见 网格配准。

-V

-V[level]

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

-bi

-bi[ncols][type][w][+l|b]

  控制二进制文件的输入格式。 (参数详细介绍)

-di

-di nodata

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

-e

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

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

-f

-f[i|o]colinfo

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

-h

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

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

-i

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

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

-w

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

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

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 地理坐标和时间坐标

当输出文件为 netCDF 格式时，根据输入数据、网格或者 -f 以及 -R 选项，会自动将输出坐标命名为“longitute”，“lattitude” 或者 “time”。例如： -f0x -f1t 和 -R90w/90e/0t/3t 都会生成 longitude/time 网格。 当 x，y 或者 z 坐标为时间时，在网格中将会存储为相对时间，其相对于 TIME_EPOCH 和 TIME_UNIT 指定的历元。其中时间变量的单位 属性将会默认与上述两个参数一致。

## 示例

假定数据文件data.nc的范围为300/310/10/30。下面的命令修改了其数据范围并修改了标题:

    gmt grdedit data.nc -R-60/-50/10/30 -D+t"Gravity Anomalies"

数据文件 world.nc 的范围为 0/360/-72/72，下面的命令对数据做了移动，使得数据范围为 -180/180/-72/72:

    gmt grdedit world.nc -R-180/180/-72/72 -S

GMT 4.1.3 之前的网格文件不包含足够的信息表明某个网格文件是地理网格。为了添加 这一信息，可以使用:

    gmt grdedit junk.nc -fg

将网格文件 oblique.nc 逆时针旋转90度，并输出到新文件:

    gmt grdedit oblique.nc -El -Goblique_rot.nc

为了确保文件 depths.nc 的经度始终为正值:

    gmt grdedit depths.nc -L+p

## 相关模块

grd2xyz, grdfill, grdinfo, xyz2grd