2.3 设计哲学

2.3.1 命令行

与平常接触的Adobe PhotoShop、Adobe Illustator之类的绘图工具不同,GMT是没有图形界面的,无法通过鼠标点击或拖动来执行绘图操作。

GMT是纯命令行的,所有的绘图操作都是通过在命令行敲入命令来执行的。命令行相对于图形界面的优势在于:

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

2.3.2 命令格式

GMT的 bin 目录下几乎可以说是只有 gmt 这一个有用的二进制文件,所以一切的绘图操作都是通过 gmt 这个命令来完成的。

一个GMT命令由“ gmt + 模块 + 选项 + 参数”构成,写成如下形式:

gmt module -Axx+bxxxx -Bxx+axxxx

其中,

  • gmt 是GMT中“唯一”的一个二进制文件,所有GMT命令必须以 gmt 开头
  • module 是用于完成某个特定操作的模块的名字
  • -A 是模块 module 提供的选项, xx 为选项 -A 的参数
  • +b 是选项 -A 的子选项, xxxx 为该子选项的参数

一个完整的示例:

gmt pscoast -R0/20/0/20 -JM6i -Ggray -Wthin -B5 -B+t"Title with spaces" -V -P > map.ps

其中,

  • 命令以 gmt 开头
  • pscoast 是用于绘制海岸线的模块
  • -R-J-G 等都是 pscoast 模块的选项
  • -B+t"Title with spaces"+t 是选项 -B 的子选项, "Title with spaces" 是子选项 +t 的参数

几点说明:

  • 若模块名以 gmt 开头,则模块名中的 gmt 可省略。比如 gmt gmtconvert xxx xxx 可以简写为 gmt convert xxx xxx
  • 模块名、选项等均区分大小写
  • 每个模块可以使用哪些选项由模块自己定义,具体参考每个模块的语法说明
  • 选项以 - 开头,后接单个字符表示某个选项,字符后接选项的参数以及子选项
  • 不以 - 开头的参数,都会被当做文件,GMT会尝试去读取
  • 子选项以 + 开头,后接单个字符以及子选项的参数
  • 官方文档中子选项称为modifier,可以译为“修饰符”,本文档中统一使用“子选项”
  • 各选项间以空格分隔,选项内部不能有空格
  • 选项内部的字符串,若存在空格,应用单引号或双引号括起来
  • 注意 -A—A 以及 -A 的细微区别,这通常是由于标点符号的全角和半角导致的,GMT中只能使用第一种
  • GMT4官方文档的网页版、PDF版以及网络上某些介绍GMT的博客中,该字符都是有问题的,直接复制运行通常都会报错。GMT5的官方文档以及本文档不存在该问题。

2.3.3 模块分类

GMT的所有绘图操作都是通过调用不同的模块来完成的,但GMT除了绘图之外,还有数据处理以及格式转换等功能。根据功能的不同,大致将GMT的众多模块分为如下几类:

  • 参数设定类:如 gmtset
  • 绘图操作类:如 psxygrdimage
  • 数据处理类:如 gmtmathgrdmath
  • 格式转换类:如 xyz2grdpsconvert