✍️ 田冬冬 , 周茂 • 📅 2025-12-30

# coast

官方文档:

  coast

简介:

  在地图上绘制海岸线、河流、国界线

coast 模块利用 GMT 自带的 GSHHG数据 和 DCW数据 绘制海岸线、河流、政治边界， 还可以裁剪陆地区域或水域，也可以将数据导出到文件中。

## 语法

gmt coast `-J` parameters [ `-Jz|Z` parameters ] `-R` west/east/south/north[/zmin/zmax][+r][+u unit] [ `-A` min_area[/min_level/max_level][+a[g|i][s|S]][+l|r][+p percent] ] [ `-B`[p|s]parameters ] [ `-C` fill[+l|+r] ] [ `-D` resolution[+f] ] [ `-E` dcw ] [ `-F` box ] [ `-G`[fill] ] [ `-I` river[/pen] ] [ `-L` scalebar ] [ `-M` ] [ `-N` border[/pen] ] [ `-Q` ] [ `-S`[fill] ] [ `-T` rose ] [ `-U`[stamp] ] [ `-V`[level] ] [ `-W`[level/]pen ] [ `-X`[a|c|f|r][xshift] ] [ `-Y`[a|c|f|r][yshift] ] [ `-bo` binary ] [ `-d` nodata[+c col] ] [ `-g` gaps ] [ `-p` flags ] [ `-t` transp ] [ --PAR=value ]

## 必须选项

-J

-J projection

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

-Jz|Z

-J z|Z parameters

  绘制三维图时，设置垂直方向 Z 轴的线性投影尺度。 参数用法与 -Jx|X 相同。

-R

-R west/east/south/north[/zmin/zmax][+r][+u unit]

  指定数据范围。对于三维透视图（-p 选项） ，可以加上 /zmin/zmax 指定Z轴的范围。 (参数详细介绍)

## 可选选项

-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 的多边形。

-B

-B parameters

  设置底图边框和轴属性。 (参数详细介绍)

-C

-C fill[+l|+r]

  设置湖泊与河流湖的颜色。

  默认情况下，湖泊与河流湖会被当做wet区域，直接使用 `-S` 指定的填充值。 使用 +l 或 +r 可以为湖泊或河流湖单独指定颜色。

-D

-D resolution[+f]

  选择海岸线数据精度。

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

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

-E

-E code1,code2,...[+l|L][+g fill][+p pen][+z]

  利用DCW数据绘制或导出行政区划边界（洲界、国界、省界）

  GMT自带了DCW（Digital Chart of World）数据，即全球的行政区划数据。 其包含了全球各国国界和省界数据。该数据独立于GSHHG数据，因而 `-A` 和 `-D` 选项对该数据无效。关于DCW数据及其用法的详细介绍见 DCW: 世界数字图表。

  通过指定一个或多个以逗号分隔的区域代码 code 即可指定一个或多个行政区域。 code 可以取如下几种形式：

  - 洲代码前加上 = 则绘制整个洲内所有国家边界。 比如 =AS 会绘制所有亚洲国家的边界

  - 直接使用国界代码，则绘制国界边界。比如 US 绘制美国边界

  - 使用 国家代码.*州代码* 则绘制州（省）边界。比如 US.TX 绘制 美国Texas州的边界

  可以使用如下子选项列出可使用的 code:

  - +l 仅列出所有国家及其对应代码，不绘制边界也不提取数据

  - +L 列出部分国界的省及其代码

  - +z 表示将地区代码以 -Z code 的形式写到数据的段头记录中

  通过加上子选项，可以进一步设置指定区域的边界属性或填充属性：

  - +p pen 表示绘制多边形轮廓 [默认无轮廓]

  - +g fill 表示设置多边形的填充色 [默认无填充色]

  若想要不同的区域有不同的画笔或填充属性，则需要多次使用 `-E` 选项，每次 指定不同的区域以及不同的画笔或填充属性。

  若使用了 `-E` 但不指定 `-J` 和 `-M` 则会以 `-R` w/e/s/n 的 形式输出对应行政区域的区域范围。

-F

-F[l|t][+c clearances][+g fill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]

  控制比例尺和玫瑰图的背景边框

  若只使用 `-F` 而不使用其它子选项，则会在比例尺或方向玫瑰的周围绘制矩形边框。 下面简单介绍各子选项，详细用法见 修饰物

  - +g fill 指定面板填充颜色 [默认不填充]

  - +p pen 绘制面板边框。pen 为边框的画笔属性，若不指定 pen， 则默认使用 MAP_DEFAULT_PEN

  - +r[radius] 绘制圆角边框，radius 为圆角的半径

  - +i[[gap/]pen] 在边框内部绘制一个内边框，gap 为内外边框空白距离 [默认为 2p]， pen 为内边框的画笔属性 [默认使用 MAP_DEFAULT_PEN]

  - +c clearance 设置修饰物与面板之间的空白距离。 默认情况下面板的大小由修饰物的大小决定，使用该子选项可以为面板增加额外的尺寸。 clearance 的具体设置包括下面 3 种情况：

    - gap 为四个方向增加相同的空白距离

    - xgap/ygap 分别为 X 方向和 Y 方向指定不同的空白距离

    - lgap/rgap/bgap/tgap 分别为四个方向指定不同的空白距离

  - +s[[dx/dy/][shade]] 设置面板背景阴影。dx/dy 为阴影区相对于面板的偏移量， shade 为阴影区颜色 [默认为 4p/-4p/gray50]

  该选项默认会同时控制比例尺和方向玫瑰的背景边框。 加上 l|t 则表示只控制 `-L` 或 `-T` 选项绘制的特征。

-G

-G[fill]

  设置dry区域的填充色或裁剪dry区域

  `-G` fill 设置dry区域（一般指陆地）的填充色。 若不指定 fill 则会将dry区域裁剪出来，使得接下来的绘图只有dry区域内的才会被绘制。

-I

-I river[/pen]

  绘制河流。

  河流 river 可以取：

  - 0 = Double-lined rivers (river-lakes)

  - 1 = Permanent major rivers

  - 2 = Additional major rivers

  - 3 = Additional rivers

  - 4 = Minor rivers

  - 5 = Intermittent rivers - major

  - 6 = Intermittent rivers - additional

  - 7 = Intermittent rivers - minor

  - 8 = Major canals

  - 9 = Minor canals

  - 10 = Irrigation canals

  - a = All rivers and canals (0-10)

  - A = All rivers and canals except river-lakes (1-10)

  - r = All permanent rivers (0-4)

  - R = All permanent rivers except river-lakes (1-4)

  - i = All intermittent rivers (5-7)

  - c = All canals (8-10)

  pen 的默认值为 default,black,solid，该选项可重复使用多次 以分别指定不同等级河流的画笔属性。

-L

-L[g|j|J|n|x]refpoint+c[slon/]slat+w length[e|f|k|M|n|u][+a align][+f][+j justify][+l[label]][+o dx[/dy]][+u][+v]

  在地图上指定位置绘制比例尺

  简单介绍各子选项的含义，详情见 修饰物

  - [g|j|J|n|x]refpoint 指定地图上的参考点

    - g lon/lat 指定数据坐标为参考点

    - j code 或者 J code 通过 2 个字母的对齐方式码指定锚点作为参考点

    - n xn/yn 指定归一化坐标系（即 0-1）为参考点

    - x x/y 指定绘图坐标 为参考点， 追加 cm, inch, 或者 point 用来指定单位

  - +j justify 指定比例尺上的锚点（默认锚点为比例尺的中心）

  - +o dx/dy 在参考点的基础上设置比例尺的额外偏移量

  - +c[slon/]slat 要绘制哪一个点的比例尺，对于倾斜投影，slon 默认取中央经线

  - +w length[e|f|k|M|n|u] 指定比例尺长度及其单位 [默认为km]

  - +a align 修改比例尺标签的对齐方式。标签默认位于比例尺上方中部， 可以取 l|r|t|b分别代表左右上下

  - +f 默认是简单的比例尺，使用该选项则绘制fancy比例尺，即黑白相间的火车轨道比例尺

  - +l label 为比例尺添加标签；若不指定 label，默认的标签是比例尺所使用的长度单位

  - +u 比例尺的标注默认只有值没有单位，该选项会给所有标注加上单位

  - +v 垂直比例尺（仅限于笛卡尔坐标系）

  以下GMT配置参数可以控制比例尺的外观：

  - FONT_LABEL 控制比例尺的标签字体

  - FONT_ANNOT_PRIMARY 控制比例尺的标注字体

  - MAP_SCALE_HEIGHT 控制比例尺的高度

  - MAP_TICK_PEN_PRIMARY 控制比例尺的线及刻度属性

-M

-M

  将边界数据以多段ASCII表或二进制表的形式导出到标准输出

  使用该选项，则只导出数据而不绘图。 该选项需要与 `-E`, `-I`, `-N` 或 `-W` 选项一起使用。

-N

-N border[/pen]

  绘制政治边界。

  该选项在某些地方与 `-E` 选项有重叠。边界类型 border 可以取：

  - `1` ：国界

  - `2` ：州界；（目前只有美国、加拿大、澳大利亚以及南美各国的数据）

  - `3` ：海洋边界

  - `a` ：1-3的全部边界；

  pen 的默认属性为 default,black,solid。该选项可重复多次 使用，以指定不同级别边界的不同画笔属性。

-Q

-Q

  关闭区域裁剪。

  使用 `-G` 和 `-S` 可以分别裁剪出dry区域和wet区域，接下来的其他绘图命令 中只有在裁剪区域内的部分才会被绘制。在绘图结束后，需要关闭裁剪，就需要再次调用 coast，并加上 `-Q` 选项。若在开启裁剪后使用了 `-X` 和 `-Y` 选项， 则在关闭时也要记得使用 `-X` 和 `-Y`。

-S

-S[fill]

  设置wet区域的填充色或裁剪wet区域

  `-S` fill 设置wet区域（一般指海洋或湖泊）的填充色。 若不指定 fill 则将wet区域裁剪出来，使得接下来的绘图只有wet区域内的才会被绘制。

-T

-Td[g|j|J|n|x]refpoint+w width[+f[level]][+j justify][+l w,e,s,n][+o dx[/dy]]

  在指定位置绘制方向玫瑰图

  简单介绍各子选项的含义，详情见 修饰物

  - [g|j|J|n|x]refpoint指定地图上的参考点

    - g lon/lat 指定数据坐标为参考点

    - j code 或者 J code 通过 2 个字母的对齐方式码指定锚点作为参考点

    - n xn/yn 指定归一化坐标系（即 0-1）为参考点

    - x x/y 指定绘图坐标 为参考点， 追加 cm, inch, 或者 point 用来指定单位

  - +j justify 指定比例尺上的锚点 [MC]

  - +o dx/dy 在参考点的基础上设置方向玫瑰图的额外偏移量

  - +w width 玫瑰图宽度

  - +f level 绘制fancy玫瑰图。level 取不同值代表不同类型的玫瑰图。 level 可以取：

    - `1` 绘制E-W和N-S四个方向

    - `2` 绘制8个方向

    - `3` 绘制16个方向

  - +l w,e,s,n 为四个方向分别指定标签。 默认标签是四个方向的单字母代码（英文语言下是W、E、S、N），四个方向的 标签之间用逗号分隔，若留空则表示不添加标签。 比如 `+lw,e,s,n` 或 `+l",,Down,Up"`。 标签的文字属性由 FONT_TITLE 控制，而文字相对于方向箭头的位置偏移则由 MAP_TITLE_OFFSET 控制。

-Tm[g|j|J|n|x]refpoint+w width[+d dec[/dlabel]][+i pen][+j justify][+l w,e,s,n][+p pen][+t ints][+o dx[/dy]]

  在指定位置绘制磁场玫瑰图

  磁场玫瑰包括两个同心圆环，其中外环用于展示方向信息，内环用于显示磁场方向。

  简单介绍各子选项的含义，详情见 修饰物

  - [g|j|J|n|x]refpoint指定地图上的参考点

    - g lon/lat 指定数据坐标为参考点

    - j code 或者 J code 通过 2 个字母的对齐方式码指定锚点作为参考点

    - n xn/yn 指定归一化坐标系（即 0-1）为参考点

    - x x/y 指定绘图坐标 为参考点， 追加 cm, inch, 或者 point 用来指定单位

  - +j justify 指定比例尺上的锚点 [MC]

  - +o dx/dy 在参考点的基础上设置玫瑰图的额外偏移量

  - +w width 玫瑰图宽度

  - +p pen 绘制外环并设置其画笔属性

  - +i pen 绘制内环并设置其画笔属性

  - +d dec/dlabel 设置磁倾角以及罗盘指针上的磁倾角标签。 若 dlabel 为空，则使用默认标签 d = dec；若 dlabel 为 -， 则不绘制标签。当使用 +d 子选项时，会同时绘制地理方向和磁场方向

  - +l w,e,s,n 为四个方向分别指定标签。 默认标签是四个方向的单字母代码（英文语言下是W、E、S、N），四个方向的 标签之间用逗号分隔，若留空则表示不添加标签；若 n 取值为 *， 则会在北方向标签处绘制星代表北极星。 比如 `+lw,e,s,n` 或 `+l",,Down,Up"`或 `+l,,,*`。 标签的文字属性由 FONT_TITLE 控制

  - 内外环都可以设置标注、刻度和网格的间隔。内外环的间隔默认值都是 `30/5/1`。 可以使用 +t ints 选项，后面接6个斜杠分隔的值，以分别指定两个圆环的 3种刻度值，其中前三个值控制内环属性，后三个值控制外环属性

-U

-U[label][+c][+j just][+o dx/dy]

  在图上绘制GMT时间戳logo。 (参数详细介绍)

-V

-V[level]

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

-W

-W[level/]pen

  绘制岸线（shoreline）

  shore指水与陆地交界的“岸”（如：海岸、湖岸、河岸等），是一个较为笼统的说法。

  GMT中岸线分成四个等级（level 取1-4）：

  1. coastline：海岸线

  2. lakeshore：湖泊与陆地的岸线

  3. island-in-lake shore：首先要有陆地，陆地中有个湖，湖里有个岛。即岛的岸线

  4. lake-in-island-in-lake shore：首先有陆地，陆地中有个湖，湖中有个岛，岛里 又有个湖。这里指的是湖的岸线

  使用时需要注意：

  - 不使用 `-W` 选项，则不绘制任何shore

  - 使用 `-W`，给定画笔属性 pen，但不给出 level，则绘制 四个level的shore

  - 在同一个命令中可以多次使用 `-W`，以指定不同 level 的shore的画笔属性

  - `-W` 选项中 level 是可选的，而 pen 是必须的！因而 -W2 会被解释为所有level的画笔属性，而不是level 2

-X

-Y

-X[a|c|f|r][xshift[u]]

-Y[a|c|f|r][yshift[u]]

  移动绘图原点。 (参数详细介绍)

-bo

-bo[ncols][type][w][+l|b]

  控制二进制文件的输出格式。 (参数详细介绍)

-d

-d[i|o]nodata

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

-g

-g[a]x|y|d|X|Y|D|[col]z gap[+n|p]

  确定数据或线段的间断。 (参数详细介绍)

-p

-p[x|y|z]azim[/elev[/zlevel]][+w lon0/lat0[/z0]][+v x0/y0]

  设置3D透视视角。 (参数详细介绍)

-t

-t[transp]

  设置图层透明度（百分比）。取值范围为0（不透明）到100（全透明）。 (参数详细介绍)

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 示例

在入门教程 绘制海岸线 和 GSHHG: 全球高分辨率海岸线数据 均提供了 一些 coast 的使用实例。

绘制非洲地图，并绘制河流、国界，以及设置不同的填充色:

    gmt coast -R-30/30/-40/40 -Jm0.1i -B5 -I1/1p,blue -N1/0.25p,- \
            -I2/0.25p,blue -W0.25p,white -Ggreen -Sblue -png africa

绘制Iceland地图，使用pattern #28做填充:

    gmt coast -RIS+r1 -Jm1c -B -Wthin -Gp28+r100 -pdf iceland

将非洲区域裁剪出来，并在其中的陆地部分绘制地形:

    gmt begin map png
        gmt coast -R-30/30/-40/40 -Jm0.1i -B -G
        gmt grdimage @earth_relief_05m
        gmt coast -Q
    gmt end show

绘制部分国家的国界线:

    gmt coast -JM6i -Baf -EGB,IT,FR+gblue+p0.25p,red -EES,PT,GR+gyellow -pdf map

提取冰岛的高精度海岸线数据:

    gmt coast -RIS -Dh -W -M > iceland.txt

## FAQ

1. 错误消息:

       coast: low resolution shoreline data base not installed.

   出现该错误的原因有如下几种：

   1. 未安装GSHHG海岸线数据

   2. 安装了但路径不正确（建议的做法是把所有GSHHG的文件放在 `$GMTHOME/share/coast` 目录下）

   3. 安装的netCDF版本号为3.x而不是4.x

   4. 自行编译了netCDF 4.x，且编译时使用了 `--disbale-netcdf4` 选项

## 相关模块

grdlandmask, basemap