grdlandmask

官方文档:grdlandmask
简介:根据海岸线数据创建陆地-海洋的mask网格文件

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

语法

gmt grdlandmask -Gmask_grd_file -Iincrement -Rregion [ -Amin_area[/min_level/max_level][+a[g|i][s|S]][+r|l][+ppercent] ] [ -Dresolution[+f] ] [ -E[bordervalues] ] [ -Nmaskvalues ] [ -V[level] ] [ -rreg ] [ -x[[-]n] ] [ --PAR=value ]

必选选项

-Gmask_grd_file
生成的掩膜网格文件的文件名
-Ixinc[unit][+e|n][/yinc[unit][+e|n]]

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

  • xinc X方向的网格间隔
  • yinc Y方向的网格间隔
  • unit 网格间隔的单位。对于地理坐标系而言默认值为度,也可设置为其他距离单位
  • +e 微调X和Y方向范围的最大值,使得其是网格间隔的整数倍(默认会微调网格间隔以适应给定的数据范围)
  • +n 表明 xincyinc 不是网格间隔,而是X和Y方向的节点数。此时会根据节点数、网格区域范围以及网格配准方式重新计算网格间隔。

注意:

  • yinc 设置为0,则表示其与 xinc 相同
  • 若使用 -Rgrdfile 选项,则网格间隔和配准方式已经根据网格文件自动初始化,此时依然可以使用 -I-r 覆盖相应的值
-Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)
指定数据范围

可选选项

-Amin_area[/min_level/max_level][+a[g|i][s|S]][+r|l][+ppercent]

不绘制面积过小的区域(湖泊或岛屿),或不绘制某个级别的湖泊边界。

在绘制湖泊时,若不管湖泊的面积大小而把所有湖泊的边界都画上去,可能导致图看上去比较乱,该选项用于对湖泊进行筛选。面积小于 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度以北的海岸线

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

-Dresolution[+f]

选择海岸线数据精度。

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

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

-E[bordervalues]

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

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

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

-Nmaskvalues

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

  • -Nwet/dry :分别为水域和陆地设置不同的值
  • -Nocean/land/lake/island/pond :分别为海洋、陆地、湖泊、岛屿、池塘设置不同的值

默认值为 0/1/0/1/0 (即 0/1),即将水域内的网格设置为0,将陆地内的网格设置为1。

-V[level] (more …)
设置 verbose 等级 [c]
-r[g|p] (more …)
设置网格配置方式 [默认为网格线配准]
-x[[-]n] (more …)
限制多核算法中能使用的核数(需要GMT开启OpenMP支持)
-^-
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -
-++
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
-? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
--PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 gmt.conf

注意事项

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

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

示例

将所有陆地上的节点设置为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