✍️ 田冬冬  •  📅 2025-12-31

grdblend

官方文档:

grdblend

简介:

将多个部分重叠的网格文件合并成一个网格文件

grdblend 读取网格文件列表和合并参数文件,并通过使用余弦锥度权重合并多个网格文件来创建一个二进制网格文件。

合并过程中会遇到如下几种情况:

  • 某个节点只有一个值:使用该值填充该节点

  • 某个节点有多个值:设置为加权平均值

  • 某个节点没有值:该节点的值由 -di 选项控制,默认为NaN

输入网格数据中,若网格节点配准方式或网格间隔与输出数据不同,则会自动调用 grdsample 对这些网格数据进行重采样。

注意:由于 grdblend 操作的逐行 I/O 特性,输入和输出均仅支持 netCDF 和原生二进制网格格式。

语法

gmt grdblend blendfile | grid1 grid2-Goutgrid -Iincrement -Rregion [ -Cf|l|o|u[+n|p] ] [ -Q ] [ -Zscale ] [ -V[level] ] [ -W[z] ] [ -dinodata[+ccol] ] [ -fflags ] [ -nflags ] [ -rreg ] [ --PAR=value ]

输入数据

blendfile | grid1 grid2

合并参数文件 blendfile 或列出要合并的网格文件 grid1 grid2

合并参数文件中包含了要合并的网格文件的文件名列表,其格式为:

网格文件名(必须)  -R选项(可选)  相对权重(可选)
  • 在考虑权重的情况下,-R 范围外的部分会给零权重,-R 范围内的部分 则会使用指定的相对权重,在边界处会加上2D余弦taper权重。

  • 若相对权重为负值,则整个反过来,即范围内的会给零权重,范围外的会给权重的绝对值。

  • -R 选项可以取值 -,此时会直接使用该网格文件的数据范围。

  • 若未指定权重,则默认权重为1

  • 也可以不指定 blendfile 而只将所有网格文件名列在命令行中,此时会 使用网格数据的真实范围,且所有网格文件的权重都是1

必须选项

-G
-Goutgrid

输出的网格文件名

-I
-Ixinc[+e|n][/yinc[+e|n]]

指定X和Y方向的网格间隔

  • xincyinc 为 X 和 Y 方向的网格间隔。对于地理坐标,可以指定网格间隔单位 [默认单位为度]

  • +e 微调X和Y方向范围的最大值,使得其是网格间隔的整数倍(默认会微调 网格间隔以适应给定的数据范围)

  • +n 表明 xincyinc 不是网格间隔,而是X和Y方向的节点数。 此时会根据节点数、网格区域范围以及网格配准方式重新计算网格间隔。

注意:

  • yinc 设置为0,则表示其与 xinc 相同

  • 若使用 -Rgrdfile 选项,则网格间隔和配准方式已经根据网格文件自动初始化, 此时依然可以使用 -I-r 覆盖相应的值

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

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

可选选项

-C
-Cf|l|o|u[+n|p]

合并网格文件时,若多个网格出现重叠,则忽略权重并按照下面的规则设置重叠区域的值:

  • -Cf 将第一个访问该节点的网格数据作为该节点的值

  • -Co 将最后一个访问该节点的网格数据作为该节点的值

  • -Cl 将所有网格文件在该节点的值的最小值作为该节点的值

  • -Cu 将所有网格文件在该节点的值的最大值作为该节点的值

对于 -Cf-Co 而言,网格文件的顺序决定了这些节点的值。在这种模式下, 权重和余弦tapering会被忽略。

使用 +n+p 则首先将网格节点值初始化为第一个网格文件的值, 对于接下来的其它网格文件,仅当其值小于等于0或大于等于0时才考虑是否更新该节点的值。

-Q
-Q

创建一个无头段的二进制网格文件(非netCDF格式)以供其它程序使用

-V
-V[level]

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

-W
-W[z]

不合并数据,仅输出每个节点所使用的权重。

-Wz 表示输出 Z 值乘以权重的和。

-Z
-Zscale

在输出前先将数据乘以比例因子 scale,默认值为 1

-di
-dinodata

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

将无数据的节点的值设置为 nodata,默认值为NaN

-f
-f[i|o]colinfo

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

-n
-n[b|c|l|n][+a][+bBC][+c][+tthreshold]

设置网格文件的插值方式。 (参数详细介绍)

-r
-r[g|p]

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

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

地理坐标和时间坐标

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

锥度处理

虽然计算得到的权重从 1 逐渐减小到 0,但由于计算的是加权平均值,因此如果仅提供了一个网格,则加权输出将与输入完全相同。 如果想对数据网格进行锥度处理,请参阅 grdmath 的 TAPER 算子。

示例

假设要合并几个网格文件,则可以设置合并参数文件 blend.job 的内容为:

piece_1.nc -R0/30/-90/90 1
piece_2.nc -R25/50/-90/90 1.5
piece_3.nc -R45/80/-90/90 0.9
piece_4.nc -R80/160/-90/90 1

执行如下命令即可实现数据合并:

gmt grdblend blend.job -Gblend.nc -R0/160/-90/90 -I1m/1m -V

将所有网格文件 MB_*.nc 以相同权重合并:

gmt grdblend MB_*.nc -Gblend.nc -R0/360/-90/90 -I1m/1m -V

关于文件数量过多情况下的警告

虽然 grdblend 可以处理任意数量的文件,但其工作原理是保持正在进行合并的文件处于打开状态,并在处理完成后立即将其关闭。 根据会话情况,可能会有许多文件同时处于打开状态。某些操作系统对同时打开的并发文件数量设置了相当有限的默认限制(例如 256 个)。 如果遇到此问题,可以更改此限制。请参阅操作系统文档以了解如何更改系统限制。

相关模块

grd2xyz, grdconvert, grdedit, grdsample