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

grdedit

官方文档:

grdedit

简介:

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

grdedit 模块具有如下功能:

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

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

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

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

语法

gmt grdedit ingrid [ -A ] [ -Cb|c|n|p ] [ -D[+xxname][+yyname][+zzname][+sscale][+ooffset][+ninvalid][+ttitle][+rremark] ] [ -E[a|e|h|l|r|t|v] ] [ -Goutgrid ] [ -Jparameters ] [ -L[+n|p] ] [ -Ntable ] [ -Rregion ] [ -S ] [ -T ] [ -V[level] ] [ -bibinary ] [ -dinodata[+ccol] ] [ -eregexp ] [ -fflags ] [ -hheaders ] [ -iflags ] [ -wflags ] [ --PAR=value ]

输入数据

ingrid[=ID|?varname][+bband][+ddivisor][+ninvalid][+ooffset][+sscale]

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

可选选项

-A
-A

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

-C
-Cb|c|n|p

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

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

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

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

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

-D
-D[+xxname][+yyname][+zzname][+c[-|cpt]][+ddname][+sscale][+ooffset][+ninvalid][+ttitle][+rremark][+vvarname]

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

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

  • +ddname - 设置数据值名称 dname

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

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

  • +rremark - 设置网格文件的注释信息

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

  • +ttitle - 设置网格文件的标题

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

  • +xxname - 指定 X 坐标名及其单位,格式为 varname [unit],比如 “distance [km]”

  • +yyname - 指定 Y 坐标名及其单位,格式同 xname

  • +zzname - 针对 3D 网格: 指定 Z 坐标名及其单位,格式同 xname

其它说明:

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

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

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

  • 若字符串中包含加号 +,需要使用 + 对其进行转义。 或者可以使用单引号套双引号的方式,例如 ‘“title with + inside”’

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

  • 对于地理数据(比如 -fg )和 3D 网格,xnameyname 会自动设置。 通常 netCDF 数据变量名为 “z”(2D 网格)或 “cube”(3D 网格), 可通过 +v 重命名该 netCDF 变量。

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

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

  • -Ea 同时水平和垂直翻转网格(旋转180度)

  • -Eh 水平翻转网格(左右翻转)

  • -Ev 垂直翻转网格(上下翻转)

  • -Ee 交换 x(经度)和 y(纬度)

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

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

  • -Et 对网格进行转置(想象成一个二维矩阵),默认使用该变换

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

Source Code

../../_images/e289eeff10403210a42fe05ed98463b5.png
-G
-Goutgrid

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

-J
-Jprojection

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

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

-L
-L[+n|p]

调整地理网格文件的经度

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

-N
-Ntable

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

-R
-Rxmin/xmax/ymin/ymax[+r][+uunit]

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

修改网格文件的范围,并在必要时调整 x_incy_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
-dinodata

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

-e
-e[~]“pattern” | -e[~]/regexp/[i]

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

-f
-f[i|o]colinfo

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

-h
-h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]

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

-i
-icols[+l][+sscale][+ooffset][,][,t[word]]

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

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

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

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

地理坐标和时间坐标

当输出文件为 netCDF 格式时,根据输入数据、网格或者 -f 以及 -R 选项,会自动将输出坐标命名为“longitute”,“lattitude” 或者 “time”。例如: -f0x -f1t-R90w/90e/0t/3t 都会生成 longitude/time 网格。 当 x,y 或者 z 坐标为时间时,在网格中将会存储为相对时间,其相对于 TIME_EPOCHTIME_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