✍️ 田冬冬 , 周茂 • 📅 2024-02-12

# grdlandmask

官方文档:

  grdlandmask

简介:

  根据海岸线数据创建陆地-海洋的mask网格文件

grdlandmask 模块读取指定的海岸线数据，用于确定网格内的每个节点是位于陆地还是 水域，并给不同类型的节点赋予不同的值，以生成掩膜文件。生成的掩膜文件可进一步 用在 grdmath 中以掩盖掉位于陆地或水域中的数据点。

## 语法

gmt grdlandmask `-G` mask_grd_file `-I` increment `-R` region [ `-A` min_area[/min_level/max_level][+a[g|i][s|S]][+l|r][+p percent] ] [ `-D` resolution[+f] ] [ `-E`[bordervalues] ] [ `-N` maskvalues ] [ `-V`[level] ] [ `-r` reg ] [ `-x`[[-]n] ] [ --PAR=value ]

## 必须选项

-G

-G mask_grd_file

  生成的掩膜网格文件的文件名

-I

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

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

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

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

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

  注意：

  - 若 yinc 设置为0，则表示其与 xinc 相同

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

-R

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

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

## 可选选项

-A

-A min_area[/min_level/max_level][+a[g|i][s|S]][+l|r][+p percent]

  不绘制面积过小的区域（湖泊或岛屿），或不绘制某个级别的湖泊边界。

  在绘制湖泊时，若不管湖泊的面积大小而把所有湖泊的边界都画上去，可能导致图 看上去比较乱，该选项用于对湖泊进行筛选。面积小于 min_area 平方千米 或者湖泊级别不在 [min_level,max_level] 范围的边界都不会被绘制。 默认值为 0/0/4，即绘制所有湖泊边界，即绘制0到4级所有级别的面积大于0的 湖泊。

  对于level=2，即湖岸线，包括常规的湖以及很宽的河流。加上 +r 则只绘制河流， 加上 +l 则只绘制常规湖。

  对于南极洲而言，因为有冰层的存在，所以海岸线有多种处理方式：

  - +ai 用ice shell boundary作为南极洲的海岸线，默认值

  - +ag 以ice grounding line作为海岸线

  - +as 忽略南纬60度以南的海岸线，用户可以使用 plot 绘制自己的南极洲海岸线

  - +aS 忽略南纬60度以北的海岸线

  +p precent：一个多边形，降低精度后，边数减少，面积变化，当面积变化 过大时再绘制这个多边形就不合适了，该子选项用于去除那些面积与最高精度面积 之比小于 percent 的多边形。

-D

-D resolution[+f]

  选择海岸线数据精度。

  GMT自带的GSHHG海岸线数据有5个不同精度的版本，从高到低依次为：full、high、 intermediate、low和crude。GMT默认使用低精度数据。该选项可以指定要使用的 数据精度，其中 f|h|i|l|c 分别代表5种不同的数据精度。也可以用 -Da 选项，此时GMT会根据当前绘图区域的 大小自动选择合适的数据精度 [默认使用 -Da]

  默认情况下，若找不到指定精度的海岸线数据，程序会自动报错退出。该选项中 加上 +f 则命令在找不到当前指定的精度数据时，自动寻找更低精度的数据。 选项海岸线数据的精度，见 coast 中的介绍。

-E

-E[bordervalues]

  恰好落在海岸线多边形边界上的数据的处理方式。

  默认情况下，恰好位于海岸线多边形边界上的节点当作是在多边形的内部，使用该选项 则会将其认为是在多边形的外部。

  此外，还可以在 `-E` 选项后加上四个值 cborder/lborder/iborder/pborder 或 一个值 bordervalue （表示四个值具有相同的值），以启用线段追踪模式。 在根据 `-N` 设置掩膜值之后，会进一步修改所有线段穿过的网格单元的值。 例如，海岸线穿过的网格单元值将被修改为 cborder；同理， 岛边界、湖内岛、湖内岛中的小湖边界穿过的网格单元值会被依次修改为 lborder、iborder、pborder 的值。

-N

-N maskvalues

  设置网格节点的值。可以是数字，也可以是NaN。该选项可以取两种格式：

  - `-N` wet/dry ：分别为水域和陆地设置不同的值

  - `-N` ocean/land/lake/island/pond ：分别为海洋、陆地、湖泊、岛屿、池塘设置不同的值

  默认值为 0/1/0/1/0 （即 0/1），即将水域内的网格设置为0，将陆地内的 网格设置为1。

-V

-V[level]

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

-r

-r[g|p]

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

-x

-x[[-]n]

  限制多核算法中能使用的核数（需要GMT开启OpenMP支持）。 (参数详细介绍)

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 注意事项

grdlandmask 生成的掩膜网格文件属于 分类型 数据，即所有数据只能取几个固定的 值，比如 -N0/1 会将水域内的网格值设置为0，将陆地内的网格值设置为1。 在这种情况下，对这种数据用标准方法（比如样条）进行插值通常会得到无意义的结果， 使用时需要小心。

然而，当你直接绘制该掩膜网格文件时，网格数据会被重新投影使得在投影后的坐标下 变成一个矩形。这个过程中涉及到了网格插值，默认使用的插值算法是样条插值，因而 可能会在图中产生假象。因而建议在使用 grdimage 绘制此类数据时使用 -nn 选项即 nearest neighbor 插值算法以避免这一问题。

## earth_mask 远程数据

用 grdlandmask 模块生成高分辨率、全精度的掩膜数据会非常耗时。 GMT官方提供了计算好的掩膜数据供用户直接使用。该数据分不同的分辨率，从15秒到1度不等。 详情见 earth_mask 。

## 示例

将所有陆地上的节点设置为NaN，水域上的节点设置为1:

    gmt grdlandmask -R-60/-40/-40/-30 -Dh -I5m -N1/NaN -Gland_mask.nc -V

生成全球1x1度的网格，并将不同性质的区域设置成不同的值:

    gmt grdlandmask -R0/360/-90/90 -Dl -I1 -N0/1/2/3/4 -Glevels.nc -V

## 相关模块

grdmath, grdclip, mask, clip, coast