一个GMT脚本应首先满足严谨且分层明确,然后是清晰和整洁。

(1)严谨且分层明确,每一行代码的任务应该非常清楚,且相互隔开互不干扰;

(2)代码命令和各选项的排列顺序应前后一致;可以省略的就省略,力图最简洁;

风格示例如下:

第一部分:声明

1
2
3
4
5
#声明编译器类型及变量,变量声明一般包含需要反复用到的经纬度范围、投影方式、流对象。
#!/bin/bash
R=99.3/101.3/24.3/27
J=M105/35/5.5i
PS=KHD_faults.ps

第二部分:GMT基本配置

1
2
3
4
#gmt对gmt.conf中的每一个参数都给了一个合理的默认值,在必要时才会修改,因此,这一部分不是必要的。
gmt set MAP_GRID_PEN_PRIMARY ......
gmt set FORMAT_GEO_MAP ddd_mm_ssF ......
gmt set FONT_ANNOT_PRIMARY ......

第三部分:操作基础数据

1
2
3
4
#这一部分的任务主要是操作绘图基础数据,例如高程数据topo、地形起伏数据ETOPO,经常需要切割以满足对某一区域的绘图需求。
gmt grdcut ......
gmt grdgradient ......
gmt grd2cpt ......

第四部分:绘图

1
2
3
4
5
6
#正式绘图从这里开始,因此,管道流符号也在这里开始出现。
#绘图的第一步永远是底图,basemap。
#投影、经纬度范围的排列顺序:-J -R,这两个选项的命令只在这里出现一次即可,后面全部省略。
#文件头尾切割命令按-K -O排列。
gmt psbasemap -R$R -J$J -Ba -P -K > $PS
gmt grdimage ...... >> $PS

第五部分:PS文件操作

1
2
#这一部分主要任务是转换PS文件到需要的格式
gmt psconvert -Tt $PS

第六部分:删除配置文件

1
2
#为使得工作目录尽可能简洁,需要删除运行脚本后产生的配置文件
rm gmt.conf gmt.history