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

grdcut

官方文档:

grdcut

简介:

从一个网格文件中裁剪出一个子区域的网格文件

grdcut 模块可以从一个网格文件中根据条件裁剪出一个新的网格文件。 子区域的选择有如下几种方式:

  • -R 选项:直接指定子区域的范围

  • -Z 选项:通过检查网格点的值间接限定子区域的范围

  • -S 选项:通过指定与特定点的距离间接限定子区域的范围

  • -J-R 选项:对于倾斜投影,可以使用这两个选项获得覆盖整个倾斜区域的子区域

  • -F 选项:指定一个多边形。可将其边界框用作子区域,也可将多边形内部或外部的网格节点设置为 NaN。

如果输入是 3D netCDF 立方体数据,可以穿过现有节点进行垂直切片。

注意:如果输入网格实际上是图像(灰度、RGB 或 RGBA),则选项 -N-Z 不可用。 而对于多层 GeoTIFF 文件,仅支持 -R-S-G 选项, 即只能裁剪出一个子区域(如果有多个波段,将通过 gdal_translate 来实现)。

grdcut 互补的是 grdpaste,它将沿着共同的边界将两个网格文件(非图像)拼接在一起。

语法

gmt grdcut ingrid -Goutgrid -Rregion [ -D[+t] ] [ -Ex|ycoord ] [ -Fpolygonfile[+c][+i] ] [ -Jparameters ] [ -N[nodata] ] [ -Slon/lat/radius[+n] ] [ -V[level] ] [ -Z[min/max][+n|N|r] ] [ -fflags ] [ --PAR=value ]

输入数据

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

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

必须选项

-G

-Goutgrid[=ID][+ddivisor][+ninvalid][+ooffset|a][+sscale|a][:driver[dataType][+coptions]]

输出网格文件名。通过追加 =ID 可指定 网格格式。 参数详细介绍请参考 写 netCDF 文件

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

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

指定要截取的网格子区域的范围。

可选选项

-D
-D[+t]

“空运行”:仅报告在给定所选选项的情况下,提取后的网格所具有的区域和增量。 不创建网格(不允许使用 -G ),而是将包含 west east south north xinc yinc 的单条数据记录写入标准输出。 增量将反映输入网格的增量,除非它是没有隐含分辨率的远程网格数据集。 附加 +t 则改为以尾随字符串 “-Rwest/east/south/north -Ixinc/yinc” 的形式接收该信息。

-E
-Ex|ycoord

沿着 x 列坐标 coordy 行坐标 coord 提取一个垂直切片。 不对节点进行插值,仅穿过现有的立方体节点进行直接切片。

注意:(1) 输入文件必须是 3D netCDF 立方体数据,且 -E 仅能与 -G 选项配合使用。 (2) coord 必须与立方体中给出的坐标完全匹配。

-F
-Fpolygonfile[+c][+i]

指定一个多段闭合多边形文件,多边形外部的所有网格节点都将被设置为 NaN。 附加 +i 可反转该操作,即将多边形内部的所有节点设置为 NaN。 附加 +c 以根据多边形的边界框裁剪网格区域。

-J
-Jprojection

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

-N
-N[nodata]

允许新网格的区域范围超过原网格的区域范围。

一般情况下,若指定的区域范围大于输入网格的区域范围,超出的部分会被自动忽略, 实际的输出网格的区域范围会自动适应输入网格的区域范围。使用 -N 选项, 则超出的区域范围内,网格节点会被赋以指定的值,默认赋值为NaN,也可以自己 指定其值为 nodata

-S
-Slon/lat/radius[+n]

指定圆心位置(lon/lat)及其半径(radius,可指定 距离单位), 程序会自动计算出一个包含了圆上及圆内所有网格点的矩形区域。 +n 表示将所有矩形区域内但不在圆内的节点的值设为NaN。

-V
-V[level]

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

-Z
-Z[min/max][+n|N|r]

确定一个新的矩形区域,使得所有该区域外的节点值都在指定的Z值范围 min/max 外。 minmax 默认值为正负无穷,可以用 - 表示无穷。

默认情况下,值为NaN的节点会被自动忽略。

  • +n 表示将 NaN 节点视作在给定的Z值范围之外,则保证了新生成的子区域内是无NaN的

  • +r 表示将 NaN 节点视作在给定的Z值范围之内,因而子区域的外部是无NaN的

  • +N 若新生成的子区域的某条边界上的所有节点都是NaN,则去除该条边界上的这一行或列

-f
-f[i|o]colinfo

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

-^-

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

-++

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

-? 或无参数

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

--PAR=value

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

距离单位

GMT支持多种不同的距离单位,以及三种不同的球面距离计算方式。 详情见 单位-j 选项

地理坐标和时间坐标

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

注意事项

如果输入文件是具有多个数据波段的 GeoTIFF 文件,则输出格式将取决于对保留波段的选择: 如果未指定任何波段(默认考虑所有可用波段)或者选择了多个波段,则输出文件可以是一个新的 GeoTIFF 文件(如果提供了 .tif[f] 扩展名), 也可以是一个多波段 netCDF 文件(如果提供了 .nc 或 .grd 扩展名)。 如果从输入 GeoTIFF 中选择了单个波段,GMT 通常会将其作为单个网格层读取,并据此写入 netCDF 网格(除非附加了其他网格格式说明符)。 但是,如果输出文件名具有 .tif[f] 扩展名,则会将其写入为单波段 GeoTIFF。所有 GeoTIFF 输出操作均通过 GDAL 的 gdal_translate 完成。

示例

使用 -R 选项直接指定子区域的范围:

gmt grdcut @earth_relief_02m -Gregion_0_30_-30_30.nc -R0/30/-30/30

使用 -S 选项生成一个包含了原点(45,30)周围 500 km 以内的所有点的矩形区域, 并设置矩形区域内圆外的节点值为NaN:

gmt grdcut @earth_relief_06m -Goutput.nc -S45/30/500k+n

对于一个倾斜投影的地图,由于 grdcut 获得的区域是由经线、纬度划分出来的 矩形区域,而倾斜投影地图的边界不是由经纬线构成的,所以需要使用 -J-R 选项指定一个更大的矩形区域以包含倾斜投影地图的研究区域:

gmt grdcut @earth_relief_02m -R160/20/220/30+r -Joc190/25.5/292/69/1 -Gdata.nc

相关模块

grdclip, grdfill, grdinfo, grdpaste, surface