GMT学习笔记

参考:

https://docs.gmt-china.org/latest/

安装

GMT分为Linux版本和Windows版本,本次使用在linux版本,在ubuntu下运行。
使用miniconda进行安装gmt十分方便。

conda install gmt -c conda-forge
gmt --version  //进行测试

升级:

conda update gmt

卸载:

conda remove gmt

入门使用

初步使用

GMT基本内容

在终端中输入

gmt  //开始使用gmt
gmt --new-script > 文件名 //创建一个.sh文件
gedit 文件名 //使用gedit文本编辑器编辑脚本文件
bash 文件名  //执行该脚本

建立的gmt文件内容为:

文件内容:

gmt begin figurename pdf  # figurename指生成图片文件名,不给定时默认gmtsession
# pdf为格式。
    # Place modern session commands here
    gmt coast -Rg -JH15c -Gpurple -Baf -B+t"My first Plot"
gmt end show  # show表示自动打开生成的图片文件

GMT脚本模板

gmt的命令格式为:

gmt+模块名+[-选项+参数]

coast 表示绘制海岸线

-R指选项,g为参数

+t为-B的子选项

coast模块

  • -JH180/15c:指定地图投影参数,H表示使用Hammer投影,地图中心为经度180°(0-360°为标准)
    地图宽度为15cm

    • H:hammer投影
    • M:墨卡托投影
  • -R 表示指定绘图范围。格式为:

    1
    2
    3
    -R起始经度/结束经度/起始纬度/结束纬度
    -Rg # g表示global,写法相当于下面语句,表示绘制全球地图
    -R0/360/-90/90

    或者使用国家代码表示区域范围

    • NZ:新西兰国家代码,表示绘制该国的地图。
    • CN:中国国家代码。
  • -B 表示增加边框及经纬线,参数一般为g。

    • a:annotation 增加标注,即经纬度数字等
    • f:frame 刻度线,周边的刻度线
    • g:grid 网格线
    • xa4g2: 表示x轴标注间隔4°,网格线间隔2°,y轴同理
    • WSen:控制四条边的属性,大写表示添加标注,小写表示只绘制边框不显示标注
    • +t“标题内容”:增加标题
  • -W 表示绘制海岸线

    • 0.5p,black:表示岸线为0.5p宽的黑色线条
      • 颜色有:黑色black,浅红色lightred
    • 1/0.5p,black:1/表示绘制1级海岸线
  • -A 绘制对象湖泊或岛屿的最小面积(平方千米)

  • -G 设置陆地填充色

  • -S 设置水体颜色

  • -C 设置湖泊颜色,不设置为S颜色

  • -N 绘制国界、省界等,

    下载好相应数据包后,使用方式如下:

    plot CN-border-La.gmt -W0.1p```,此绘制的事中国国界省界十段线和南海诸岛。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64


    + -L 添加比例尺

    比例尺参数
    + g经度/纬度 比例尺位置
    + +w1000k 比例尺长度为1000km
    + +c25 绘制比例尺为北纬25°
    + +f 比例尺风格
    + +u 显示比例尺对应单位



    ### basemap模块
    绘制线性坐标轴和三维坐标轴
    + -J
    + X8c/5c:X轴宽度8cm、高度5cm


    + -R
    + x轴左/x轴右/y轴左/y轴右,表示图的范围


    + -B 参数同上
    + +l“坐标轴名”


    三维线性坐标轴:
    + -R
    + x轴左/x轴右/y轴左/y轴右/z轴下/z轴上

    z轴参数同x、y轴


    ### gridimage模块
    绘制全球地形起伏

    + @erath_relief_xxx指定地形起伏数据精度
    + 30m表示30′分辨率。1′约2km。
    + 1s表示以1″为分辨率,约为30m

    + -J 同coast模块


    + -I+d 增加光照效果

    #### 增加色标:

    gmt colorbar

    + -B 设置色标标注间隔,添加标签
    + xaf+l“标签”:设置间隔和标签,同上


    + -D 色标放置位置
    + JMR 地形起伏图右侧中间
    + +w10c 色标长度10cm
    + +o1.5c/0c 向右偏移1.5cm
    + +ml 标签放在色标左侧


    ### makecpt模块:
    制作CPT文件,供接下来的grdimage和colorcolorbar命令使用。

gmt basemap 参数
gmt makecpt -Cglobe -T -8000/8000
gmt colorbar -Bxa2000 -B+l”m”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

# 绘图示例:
绘制模型速度剖面的gmt脚本,使用TAUP自动生成:
```commandline
#!/bin/sh
#
# This script will plot the modelmyself velocity model using GMT. If you want to
#use this as a data file for psxy in another script, delete these
# first lines, as well as the last line.
#
/bin/rm -f modelmyself_vel.ps gmt.history

PCOLOR=0/0/255
SCOLOR=255/0/0
P2COLOR=0/255/255
S2COLOR=255/0/255

gmt psbasemap -JX6i/-9i -P -R0/11.657488500000001/0/6371.0 -Bxa2f1+l'Velocity (km/s)' -Byf200a400+l'Depth (km)' -BWSen+t'modelmyself' -K > modelmyself_vel.ps

gmt psxy -JX -P -R -W2p,${PCOLOR} -: -m -O -K >> modelmyself_vel.ps <<END
0.0 9.74431
371.0 9.74431
871.0 9.74431
1371.0 9.74431
1891.0 9.74431
2891.0 9.74431
2891.0 10.33598
3370.5 10.33598
3870.5 10.33598
4370.5 10.33598
4670.5 10.33598
5149.5 10.33598
5149.5 11.10237
5371.0 11.10237
6371.0 11.10237
END

gmt psxy -JX -P -R -W2p,${SCOLOR} -: -m -O -K >> modelmyself_vel.ps <<END
0.0 5.21269
371.0 5.21269
871.0 5.21269
1371.0 5.21269
1891.0 5.21269
2891.0 5.21269
2891.0 0.0
3370.5 0.0
3870.5 0.0
4370.5 0.0
4670.5 0.0
5149.5 0.0
5149.5 3.51458
5371.0 3.51458
6371.0 3.51458
END
gmt psxy -JX -P -R -W2p,${P2COLOR} -: -m -O -K >> modelmyself_vel.ps <<END
0.0 9.74431
371.0 9.74431
871.0 9.74431
1371.0 9.74431
1891.0 9.74431
2891.0 9.74431
2891.0 9.20998
3370.5 10.33598
3870.5 10.33598
4370.5 10.33598
4470.5 10.33598
4670.5 10.33598
4670.5 11.10237
5371.0 11.10237
6371.0 11.10237
END

gmt psxy -JX -P -R -W2p,${S2COLOR} -: -m -O >> modelmyself_vel.ps <<END
0.0 5.21269
371.0 5.21269
871.0 5.21269
1371.0 5.21269
1891.0 5.21269
2891.0 5.21269
2891.0 0.0
3370.5 0.0
3870.5 0.0
4370.5 0.0
4470.5 0.0
4670.5 0.0
4670.5 3.51458
5371.0 3.51458
6371.0 3.51458
END


# convert ps to pdf, clean up .ps file
gmt psconvert -P -Tf modelmyself_vel.ps && rm modelmyself_vel.ps
# clean up after gmt...
/bin/rm gmt.history

其中,语句

gmt psxy -JX -P -R -W2p,${PCOLOR} -: -m -O -K

为绘制语句。其中:

  • -J 表示投影方式
  • -P
  • -R
  • -W2p 表示线段宽度为2
  • ${PCOLOR}为设置的颜色变量。
  • -O -K
    • -K 表示第一个图层
    • -K -O 表示中间的图层
    • -O 表示最后一个图层