coast
- 官方文档
- 简介
在地图上绘制海岸线、河流、国界线
coast 模块利用 GMT 自带的 GSHHG数据 和 DCW数据 绘制海岸线、河流、政治边界,还可以裁剪陆地区域或水域,也可以将数据导出到文件中。
语法
gmt coast -Jparameters -Rregion [ -Amin_area[/min_level/max_level][+a[g|i][s|S]][+r|l][+ppercent] ] [ -Bparameters ] [ -Cfill[+l|+r] ] [ -Dresolution[+f] ] [ -Edcw ] [ -Fbox ] [ -G[fill] ] [ -Iriver[/pen] ] [ -Jz|Zparameters ] [ -Lscalebar ] [ -M ] [ -Nborder[/pen] ] [ -Q ] [ -S[fill] ] [ -Trose ] [ -U[stamp] ] [ -V[level] ] [ -W[level/]pen ] [ -X[a|c|f|r][xshift[u]] ] [ -Y[a|c|f|r][xshift[u]] ] [ -bobinary ] [ -pflags ] [ -ttransp ] [ --PAR=value ]
必选选项
- -Jprojection (more …)
设置地图投影方式
- -Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)
指定数据范围
对于三维透视图(-p 选项) ,可以加上 /zmin/zmax 指定Z轴的范围。
可选选项
- -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 的多边形。
- -Bparameters (more …)
设置底图边框和轴属性
- -Cfill[+l|+r]
设置湖泊与河流湖的颜色。
默认情况下,湖泊与河流湖会被当做wet区域,直接使用 -S 指定的填充值。使用 +l 或 +r 可以为湖泊或河流湖单独指定颜色。
- -Dresolution[+f]
选择海岸线数据精度。
GMT自带的GSHHG海岸线数据有5个不同精度的版本,从高到低依次为:full、high、intermediate、low和crude。GMT默认使用低精度数据。该选项可以指定要使用的数据精度,其中 f|h|i|l|c 分别代表5种不同的数据精度。也可以用 -Da 选项,此时GMT会根据当前绘图区域的大小自动选择合适的数据精度 [默认使用 -Da]
默认情况下,若找不到指定精度的海岸线数据,程序会自动报错退出。该选项中加上 +f 则命令在找不到当前指定的精度数据时,自动寻找更低精度的数据。
- -Ecode1,code2,…[+l|L][+gfill][+ppen][+z]
利用DCW数据绘制或导出行政区划边界(洲界、国界、省界)
GMT自带了DCW(Digital Chart of World)数据,即全球的行政区划数据。其包含了全球各国国界和省界数据。该数据独立于GSHHG数据,因而 -A 和 -D 选项对该数据无效。关于DCW数据及其用法的详细介绍见 DCW: 世界数字图表。
通过指定一个或多个以逗号分隔的区域代码 code 即可指定一个或多个行政区域。 code 可以取如下几种形式:
洲代码前加上 = 则绘制整个洲内所有国家边界。比如 =AS 会绘制所有亚洲国家的边界
直接使用国界代码,则绘制国界边界。比如 US 绘制美国边界
使用 国家代码.*州代码* 则绘制州(省)边界。比如 US.TX 绘制美国Texas州的边界
可以使用如下子选项列出可使用的 code:
+l 仅列出所有国家及其对应代码,不绘制边界也不提取数据
+L 列出部分国界的省及其代码
+z 表示将地区代码以 -Zcode 的形式写到数据的段头记录中
通过加上子选项,可以进一步设置指定区域的边界属性或填充属性:
+ppen 表示绘制多边形轮廓 [默认无轮廓]
+gfill 表示设置多边形的填充色 [默认无填充色]
若想要不同的区域有不同的画笔或填充属性,则需要多次使用 -E 选项,每次指定不同的区域以及不同的画笔或填充属性。
若使用了 -E 但不指定 -J 和 -M 则会以 -Rw/e/s/n 的形式输出对应行政区域的区域范围。
- -F[l|t][+cclearances][+gfill][+i[[gap/]pen]][+p[pen]][+r[radius]][+s[[dx/dy/][shade]]]
控制比例尺和玫瑰图的背景边框
若只使用 -F 而不使用其它子选项,则会在比例尺或方向玫瑰的周围绘制矩形边框。下面简单介绍各子选项,详细用法见 修饰物
+gfill 指定面板填充颜色 [默认不填充]
+ppen 绘制面板边框。pen 为边框的画笔属性,若不指定 pen,则默认使用 MAP_DEFAULT_PEN
+r[radius] 绘制圆角边框,radius 为圆角的半径
+i[[gap/]pen] 在边框内部绘制一个内边框,gap 为内外边框空白距离 [默认为 2p], pen 为内边框的画笔属性 [默认使用 MAP_DEFAULT_PEN]
+cclearance 设置修饰物与面板之间的空白距离。默认情况下面板的大小由修饰物的大小决定,使用该子选项可以为面板增加额外的尺寸。 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[fill]
设置dry区域的填充色或裁剪dry区域
-Gfill 设置dry区域(一般指陆地)的填充色。若不指定 fill 则会将dry区域裁剪出来,使得接下来的绘图只有dry区域内的才会被绘制。
- -Iriver[/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[g|j|J|n|x]refpoint+c[slon/]slat+wlength[e|f|k|M|n|u][+aalign][+f][+jjustify][+l[label]][+odx[/dy]][+u][+v]
在地图上指定位置绘制比例尺
简单介绍各子选项的含义,详情见 修饰物
g|j|J|n|x]refpoint指定地图上的参考点
+jjustify 指定比例尺上的锚点(默认锚点为比例尺的中心)
+odx/dy 在参考点的基础上设置比例尺的额外偏移量
+c[slon/]slat 要绘制哪一个点的比例尺,对于倾斜投影,slon 默认取中央经线
+wlength[e|f|k|M|n|u] 指定比例尺长度及其单位 [默认为km]
+aalign 修改比例尺标签的对齐方式。标签默认位于比例尺上方中部,可以取 l|r|t|b分别代表左右上下
+f 默认是简单的比例尺,使用该选项则绘制fancy比例尺,即黑白相间的火车轨道比例尺
+llabel 为比例尺添加标签;若不指定 label,默认的标签是比例尺所使用的长度单位
+u 比例尺的标注默认只有值没有单位,该选项会给所有标注加上单位
+v 垂直比例尺(仅限于笛卡尔坐标系)
以下GMT配置参数可以控制比例尺的外观:
FONT_LABEL 控制比例尺的标签字体
FONT_ANNOT_PRIMARY 控制比例尺的标注字体
MAP_SCALE_HEIGHT 控制比例尺的高度
MAP_TICK_PEN_PRIMARY 控制比例尺的线及刻度属性
- -M
将边界数据以多段ASCII表或二进制表的形式导出到标准输出
使用该选项,则只导出数据而不绘图。该选项需要与 -E, -I, -N 或 -W 选项一起使用。
- -Nborder[/pen]
绘制政治边界。
该选项在某些地方与 -E 选项有重叠。边界类型 border 可以取:
1
:国界2
:州界;(目前只有美国、加拿大、澳大利亚以及南美各国的数据)3
:Marine boundariesa
:1-3的全部边界;
pen 的默认属性为 default,black,solid。该选项可重复多次使用,以指定不同级别边界的不同画笔属性。
- -Q
关闭区域裁剪。
使用 -G 和 -S 可以分别裁剪出dry区域和wet区域,接下来的其他绘图命令中只有在裁剪区域内的部分才会被绘制。在绘图结束后,需要关闭裁剪,就需要再次调用 coast,并加上 -Q 选项。若在开启裁剪后使用了 -X 和 -Y 选项,则在关闭时也要记得使用 -X 和 -Y。
- -S[fill]
设置wet区域的填充色或裁剪wet区域
-Sfill 设置wet区域(一般指海洋或湖泊)的填充色。若不指定 fill 则将wet区域裁剪出来,使得接下来的绘图只有wet区域内的才会被绘制。
- -Td[g|j|J|n|x]refpoint+wwidth[+f[level]][+jjustify][+lw,e,s,n][+odx[/dy]]
在指定位置绘制方向玫瑰图
简单介绍各子选项的含义,详情见 修饰物
g|j|J|n|x]refpoint指定地图上的参考点
+jjustify 指定比例尺上的锚点 [MC]
+odx/dy 在参考点的基础上设置方向玫瑰图的额外偏移量
+wwidth 玫瑰图宽度
+flevel 绘制fancy玫瑰图。level 取不同值代表不同类型的玫瑰图。 level 可以取:
1
绘制E-W和N-S四个方向2
绘制8个方向3
绘制16个方向
+lw,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+wwidth[+ddec[/dlabel]]][+ipen][+jjustify][+lw,e,s,n][+ppen][+tints][+odx[/dy]]
在指定位置绘制磁场玫瑰图
磁场玫瑰包括两个同心圆环,其中外环用于展示方向信息,内环用于显示磁场方向。
简单介绍各子选项的含义,详情见 修饰物
g|j|J|n|x]refpoint指定地图上的参考点
+jjustify 指定比例尺上的锚点 [MC]
+odx/dy 在参考点的基础上设置玫瑰图的额外偏移量
+wwidth 玫瑰图宽度
+ppen 绘制外环并设置其画笔属性
+ipen 绘制内环并设置其画笔属性
+ddec/dlabel 设置磁倾角以及罗盘指针上的磁倾角标签。若 dlabel 为空,则使用默认标签 d = dec;若 dlabel 为 -,则不绘制标签。当使用 +d 子选项时,会同时绘制地理方向和磁场方向
+lw,e,s,n 为四个方向分别指定标签。默认标签是四个方向的单字母代码(英文语言下是W、E、S、N),四个方向的标签之间用逗号分隔,若留空则表示不添加标签;若 n 取值为 *,则会在北方向标签处绘制星代表北极星。比如
+lw,e,s,n
或+l",,Down,Up"
或+l,,,*
。标签的文字属性由 FONT_TITLE 控制内外环都可以设置标注、刻度和网格的间隔。内外环的间隔默认值都是
30/5/1
。可以使用 +tints 选项,后面接6个斜杠分隔的值,以分别指定两个圆环的 3种刻度值,其中前三个值控制内环属性,后三个值控制外环属性
- -U[label][+c][+jjust][+odx/dy] (more …)
在图上绘制GMT时间戳logo
- -V[level] (more …)
设置 verbose 等级 [w]
- -W[level/]pen
绘制岸线(shoreline)
shore指水与陆地交界的“岸”(如:海岸、湖岸、河岸等),是一个较为笼统的说法。
GMT中岸线分成四个等级(level 取1-4):
coastline:海岸线
lakeshore:湖泊与陆地的岸线
island-in-lake shore:首先要有陆地,陆地中有个湖,湖里有个岛。即岛的岸线
lake-in-island-in-lake shore:首先有陆地,陆地中有个湖,湖中有个岛,岛里又有个湖。这里指的是湖的岸线
使用时需要注意:
不使用 -W 选项,则不绘制任何shore
使用 -W ,给定画笔属性 pen,但不给出 level,则绘制四个level的shore
在同一个命令中可以多次使用 -W,以指定不同 level 的shore的画笔属性
-W 选项中 level 是可选的,而 pen 是必须的!因而 -W2 会被解释为所有level的画笔属性,而不是level 2
-X[a|c|f|r][xshift[u]]
- -Y[a|c|f|r][yshift[u]] (more …)
移动绘图原点
- -bo[ncols][type][w][+l|b] (more …)
设置二进制输出的数据格式
- -p[x|y|z]azim[/elev[/zlevel]][+wlon0/lat0[/z0]][+vx0/y0] (more …)
设置3D透视视角
- -t[transp] (more …)
设置图层透明度(百分比)。取值范围为0(不透明)到100(全透明)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 gmt.conf
示例
在入门教程 绘制海岸线 和 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
错误消息:
coast: low resolution shoreline data base not installed.
出现该错误的原因有如下几种:
未安装GSHHG海岸线数据
安装了但路径不正确(建议的做法是把所有GSHHG的文件放在
$GMTHOME/share/coast
目录下)安装的netCDF版本号为3.x而不是4.x
自行编译了netCDF 4.x,且编译时使用了
--disbale-netcdf4
选项