本文面向GMT的初学者或者即将打算学习GMT的新人。
* ?: ]3 P5 k; B& Q4 U3 K0 b0 iGMT简介GMT是一套地学绘图的工具,可以输出高质量的论文插图,并有优秀的数据处理工具,比如网格插值、数据筛选、空间滤波甚至重力场反演等。GMT在测绘、地球物理、海洋、遥感等领域有广泛的使用,GMT通常被视为地学研究生必备技能之一。由于其采用命令行模式,有一定的学习门槛,但掌握之后,会大大提高科研生产力。 GMT由美国夏威夷大学Paul教授等人开发,至今已有30多年历史,且仍旧在更新维护。中国也有一批热衷于更新GMT的粉丝。 下面分Windows和Linux来介绍安装GMT使用。
: k2 u! g5 {/ B$ a
- g! c, ? k9 B* \2 t; J" {
7 M* f, S: i& t0 [ Windows安装
2 N j4 d/ c1 x" j需要准备的程序: •GMT可执行程序, Ghostscript是为了解释ps矢量语言,支持转化成pdf格式。gsview是为了打开ps文件。 安装后,记得查看下系统路径PATH是否设置?如果没自动设置路径,请手动加上。 不需要重启电脑。 ( \3 E0 U% d+ o$ q0 ] R& u
使用GMT采用了脚本程序,在window中可以写bat文件进行批量运行。简单说就是把一行一行的代码放进bat中依次执行,后面的绘图代码将叠加到上一行的结果之上。 请前往GMT安装目录找到example目录,随便进入一个例子(动画除外),找到bat文件,双击执行,结束后当前目录会有图片产生。 例子的目录在: [Shell] 纯文本查看 复制代码 C:\programs\gmt6\share\doc\examples 注意,有些例子使用了在线数据,因此需要联网运行。 有些例子可能使用了gawk等文本处理工具,需要下载后放到GMT的bin目录(其他可以被path搜索的目录也行)。
下面是ex01代码: [Shell] 纯文本查看 复制代码 REM GMT EXAMPLE 01
REM
REM Purpose: Make two contour maps based on the data in the file osu91a1f_16.nc
REM GMT modules: set, subplot, grdcontour, coast
REM
gmt begin ex01
gmt set MAP_GRID_CROSS_SIZE_PRIMARY 0 FONT_ANNOT_PRIMARY 10p
gmt subplot begin 2x1 -A -M0.5c -Blrtb -Bafg -T"Low Order Geoid" -Fs16c/0 -Rg -JH16c
gmt coast -JH? -Glightbrown -Slightblue -c0,0
gmt grdcontour @osu91a1f_16.nc -C10 -A50+f7p -Gd10c -Ln -Wcthinnest,- -Wathin,- -T+d8p/2p+l
gmt grdcontour @osu91a1f_16.nc -C10 -A50+f7p -Gd10c -LP -T+d8p/2p+l
gmt coast -JH0/? -Glightbrown -Slightblue -c1,0
gmt grdcontour @osu91a1f_16.nc -C10 -A50+f7p -Gd10c -Ln -Wcthinnest,- -Wathin,- -T+d8p/2p
gmt grdcontour @osu91a1f_16.nc -C10 -A50+f7p -Gd10c -LP -T+d8p/2p
gmt subplot end
gmt end show
u- x" J Z( F: _' j( s7 z8 k 上述代码是GMT6风格。大概意思如下:'REM'表示注释,gmt begin表示开始,gmt set在本例中修改一些绘图默认值,gmt coast表示正式的绘图开始,这一行是加海岸线,后面各有不同含义,按顺序执行。 如果上面的例子复杂了,也可以打开cmd,运行一行的代码: ; d2 z& B: H6 A! i1 Q7 J, [# ~
[Shell] 纯文本查看 复制代码 gmt pscoast -JM6i -Baf -EGB,IT,FR+gblue+p0.25p,red -EES,PT,GR+gyellow -P > map.ps 使用gsview打开ps图片 一副GMT绘制的地图转换格式使用: " j/ c6 L- u( k5 ]6 Q- z+ x3 B( ~; N
[Shell] 纯文本查看 复制代码 gmt psconvert map.ps -A -Tg
3 J$ M W* i7 N- V" |/ v6 o+ g1 B4 o$ B% S m9 y: d' E9 H
& j# @1 `% x: O- g- q+ O9 D- i0 I- Q
y D' t' d: O: l; f2 J: h0 wLinux a4 Y$ z. o9 w9 e: O+ w5 b8 @
这里以Ubuntu为例。 安装联网情况下,GMT安装只需要几行命令,不要自己编译。 . a- c+ [1 h/ z% @0 P' E
[Shell] 纯文本查看 复制代码 sudo apt-get install gmt gmt-dcw gmt-gshhg
sudo apt-get install ghostscript 检查安装是否成功使用,直接在命令窗口输入gmt,出现版本信息即表示安装成功。 使用Linux下同样采用脚本,把每一行命令写到一个可执行的文本即可。[Shell] 纯文本查看 复制代码 gmt psconvert map.ps -A -Tg 和Windows有所不同的是,Linux下面有大量的文本处理工具可以使用,比如cat, sed, ls,awk等。 在命令窗口输入: , c) L4 c- U& S t1 ^- k
[Shell] 纯文本查看 复制代码 gmt pscoast -JM6i -Baf -EGB,IT,FR+gblue+p0.25p,red -EES,PT,GR+gyellow -P > map.ps # i6 G; t- z# Y# T% U9 L
可以得到和Windows一样的结果。 如果使用批处理运行,比如代码已经写进test.sh,执行./test.sh。
8 `% _6 D, q* d- v% D; O/ }, z1 o, ^3 P
: Z- R7 |9 D" Z( U y
6 O. P6 G! N$ R9 r2 m
6 @' x5 n7 l) ~ j9 r* o
# s& M! k0 \" p! x( ?; d$ ?! P# h( ]% Y& E, i2 W% [2 C6 r
8 H% ?" X& v) J. B+ Z4 N% M% B9 \ |