绘制海岸线

GMT 中使用 coast 模块绘制海岸线。 coast 模块,顾名思义是海岸线、湖岸线的意思。该模块不仅可以绘制这些岸线,还可以绘制比例尺和行政边界等。

这一节我们将通过绘制一张美国地图来介绍 coast 模块的基本用法。

绘制海岸线和湖岸线

下面的脚本用最简单的命令绘制了一张美国地图。其中 -R 选项设置了绘图区域,-JM15c 设置投影方式和图片尺寸, -Baf 设置底图边框属性,这些在前一节都已经做了介绍。

coast 模块的选项 -W0.5p,black 表示绘制岸线,并设置岸线为 0.5p 宽的黑色线条。

gmt begin coastline
    gmt coast -R-130/-50/20/60 -JM15c -Baf -W0.5p,black
gmt end show
../../_images/f8f95d089b3c0c48ada9dca5e81d8be9.png

美国海岸线

上图看上去有些复杂。这是因为默认情况下 -W 选项会绘制所有水体与陆地的界限,包括海岸线、湖岸线、湖中岛的边界等。根据水体或陆地的不同,coast模块将岸线分为从 1 到 4 的四个级别,依次指海岸线、湖岸线、湖中岛,以及湖中岛内的湖边界。

因而,我们可以在使用 -W 选项时指定要绘制哪一个等级的岸线。下面的脚本中,我们使用 -W1/0.5p,black 表示用 0.5p 宽的黑色线条绘制 1 级海岸线。

gmt begin coastline
    gmt coast -R-130/-50/20/60 -JM15c -Baf -W1/0.5p,black
gmt end show
../../_images/afc2d53a419e1f9813b323e5d1610a25.png

绘制海岸线

可以在一个命令中多次使用 -W 选项,分别用不同的线条绘制不同等级的岸线。这里我们使用 -W1/0.5p,black 绘制 0.5p 黑色的海岸线,同时使用 -W2/1p,lightred 绘制 1p 宽的浅红色湖岸线。

gmt begin coastline
    gmt coast -R-130/-50/20/60 -JM15c -Baf -W1/0.5p,black -W2/1p,lightred
gmt end show
../../_images/36a61ea6c67929931e5d7c8167d4ee2e.png

绘制海岸线和湖岸线

设置要绘制的对象的最小面积

上图看上去依然有些乱。主要是因为美国有大大小小的很多岛屿和湖泊,GMT 默认会把这些岛屿和湖泊都画出来。如果能够只绘制比较大的岛屿或湖泊就好了,我们可以通过 -A 选项设置要绘制的对象的最小面积(单位为平方千米)。

gmt begin coastline
    gmt coast -R-130/-50/20/60 -JM15c -Baf -W1/0.5p,black -W2/1p,lightred -A5000
gmt end show
../../_images/8124461f988d340cc3b610e9b7548aff.png

设置要绘制的对象的最小面积

这里我们使用 -A5000 表示只绘制面积大于 5000 平方千米的湖泊或岛屿。这样子得到的图看上去更加干净简洁。

填充陆地与水体

上面介绍了如何使用 -W 绘制海岸线和湖岸线。我们还可以不绘制岸线,而是为陆地和水体设置不同的填充色。

gmt begin coastline
    gmt coast -R-130/-50/20/60 -JM15c -Baf -A5000 -Gred -Slightblue -Clightred
gmt end show
../../_images/c1b231106ff8a839b76904961ade1d47.png

填充颜色

其中,-G 设置了陆地区域的填充色,-S 设置水体的颜色, -C 则设置湖泊的颜色(若不指定 -C,则湖泊颜色由 -S 控制)。

当然,你也可以同时使用 -W 选项和 -G 选项,即绘制岸线并填充颜色。

绘制国界/州界

使用 -N 选项可以绘制国界、州界/省界等行政边界。-N1 表示绘制国界线, -N2 表示绘制州界/省界线。该选项绘制的行政边界来自 GSHHG: 全球高分辨率海岸线数据,目前只有美洲各国以及澳大利亚有州界/省界线。

gmt begin coastline
    gmt coast -R-130/-50/20/60 -JM15c -Baf -A5000 -Gred -Slightblue -Clightred -N1/1p -N2/0.25p
gmt end show
../../_images/323c94529b0a234a9beb9130431b6d6d.png

绘制国界与州界

备注

除了 -N 选项之外,还有其他方法使用 GMT 绘制洲界、国界、州界/省界等行政区划边界:

添加比例尺

最后,我们还需要为地图添加比例尺。为了绘制比例尺,我们需要提供如下参数:

  • 要绘制哪个纬度的比例尺

  • 比例尺在图中的位置

  • 比例尺的长度

在下面的例子中,我们使用了 -Lg-60/25+c25+w1000k+f+u 增加比例尺,其中:

  • +w1000k 表示比例尺长度为 1000 千米

  • +c25 表示绘制纬度为北纬 25° 处的比例尺

  • g-60/25 则表示将比例尺画在北纬 25° 西经 60° 处

  • +f 表示比例尺的风格为图中所示黑白相间的铁轨形式

  • +u 表示显示比例尺对应的单位

gmt begin coastline
gmt coast -R-130/-50/20/60 -JM15c -Baf -A5000 -Gred -Slightblue -Clightred -Lg-60/25+c25+w1000k+f+u
gmt end show
../../_images/87d72e3c0d5b3e760f7cf25dee7aee04.png

添加比例尺