3.1 命令行

与平常接触的Adobe PhotoShop、Adobe Illustator之类的绘图工具不同,GMT是没有图形界面的,即无法通过鼠标点击或拖动来执行绘图操作。GMT是纯命令行的,所有绘图操作都是通过一系列命令来实现的。

命令行相对于图形界面的优势在于:

  • 内存占用更低
  • 精确控制图形的显示,比如线条宽度、圆的大小
  • 方便写成脚本,可批量绘图、可重复、可自动化

其劣势在于:

  • 不够直观
  • 某些无法用坐标精确定义的曲线难以绘制

3.1.1 终端

终端,即terminal,是用户键入命令与电脑进行交互的接口。

如何启动终端?

  • Linux: 终端是Linux系统的标配。如果你是Linux用户,相信你已经知道如何启动终端了。
  • Windows: 默认终端是“命令提示符”,也就是 cmd。直接点击“开始”->“附件”->“命令提示符”即可启动cmd。也可以直接在开始按钮中的搜索框中搜索“cmd”并启动。
  • macOS: 可以使用“Command+空格”键启动Splitlight,在弹出的搜索框中输入“terminal”再按回车即可。

启动终端后,默认情况下当前路径是自己的家目录。对于Linux用户,通常是 /home/username;对于Windows用户,通常是 C:\Users\username;对于macOS用户,通常是 /Users/username

在终端中键入如下命令:

$ gmt pscoast -JM10c -R70/140/2/60 -Bafg -Ggray -Wthin > map.ps

则会在当前目录(即家目录)下生成名为 map.ps 的一张图,其中绘制了中国及其周边的海岸线。

Windows下可以直接双击以查看该PS文件;Linux下可以用 gs map.ps 查看;macOS下可以直接用 open map.ps 查看。

3.1.2 脚本

一张稍复杂的图通常都需要多个GMT命令来完成。你可以在终端键入如下几行命令来绘制海岸线并在某个点处加一个五角星:

gmt pscoast -JM10c -R70/140/2/60 -Bafg -W1/thin -Ggray -P -K > map.ps
echo 115 40 | gmt psxy -J -R -Sa0.5c -Gred -O >> map.ps
gmt clear history

直接在终端敲大一堆命令是不是很麻烦?一旦敲错了就得把光标移过去重新编辑,或者哪里不满意想修改,还得查找命令历史把命令找出来重新执行一遍,又或者一个不小心命令历史丢了,原来的画图命令再也找不到了。这一切都可以通过脚本来解决。

Linux或macOS下,可以新建一个名为 test.sh 的文件,将上面的命令复制到文件中并保存就完成了一个脚本。然后在终端中键入如下命令即可执行该脚本:

$ sh ./test.sh

Windows下,可以将上面的命令复制到名为 test.bat 的文件内并保存,然后双击该bat文件即可执行脚本。此时会看到一个黑框一闪而过。

3.1.3 脚本语言

脚本最简单的用法就是像上面的示例那样,把一堆要执行的命令复制进去即可,但脚本的功能可不仅仅如此,要学会善于利用脚本语言的强大功能,比如:

  1. 定义变量,代替命令中重复的部分
  2. 用脚本语言完成计算与数据处理
  3. 利用脚本实现循环
  4. 利用脚本的命令行参数实现脚本的可复用性

Linux和macOS下最常见的脚本语言是bash,Windows下则是bat。当然还有跨平台的Perl和Python,本文档的所有示例都使用bash语法。