10.1 配置参数简介

除了丰富的命令行选项之外,GMT提供了150多个配置参数,用于控制图像的外观(如底图边框的画笔粗细、颜色,文字标注的字体、大小和颜色等)和数据的处理方式(如默认的插值方式、地图投影使用的椭球等)等。

10.1.1 配置文件的原理

当执行一个GMT模块时,GMT首先会将所有配置参数初始化为GMT的默认值,然后去搜索 gmt.conf 文件。若找到该文件,则会读取该文件中的参数值并覆盖GMT配置参数默认值。

GMT参数配置文件 gmt.conf 的搜索路径按优先级排序为: ./gmt.conf > ~/.gmt/gmt.conf > ~/gmt.conf。即GMT程序首先会在当前目录寻找参数配置文件;若未找到,则到 ~/.gmt 目录下寻找;若仍为找到,则在家目录下寻找。

10.1.2 查看配置参数的值

每个配置参数都有一个系统默认值。使用:

gmt defaults -D

即可查看所有GMT配置参数及其默认值。

使用:

gmt get FORMAT_GEO_MAP

可以查看单个配置参数 FORMAT_GEO_MAP 的当前值。

10.1.3 修改配置参数的值

GMT提供了多种方法来控制或修改配置参数的值。

设置全局参数

gmtset 模块可以为GMT设置全局参数,此类参数会影响到接下来所有GMT命令的执行,直到绘图结束或者被 gmtset 再次修改为其他值为止。本质上 gmtset 的作用就是将新的参数值写到配置文件 gmt.conf 中。例如:

# 设置全局参数 FONT_ANNOT_PRIMARY 的值为 12p,Times-Bold,red
gmt set FONT_ANNOT_PRIMARY 12p,Times-Bold,red
gmt psbasemap ...
rm gmt.*
设置临时参数

在单个命令上加上 --KEY=value 可以临时设置配置参数的值。此类参数仅对当前命令有效,而不影响接下来其他命令的执行效果。例如:

# 使用默认参数绘制底图
gmt psbasemap ...
# 该底图的 FONT_ANNOT_PRIMARY 为 12p,Times-Bold,red
gmt psbasemap ... --FONT_ANNOT_PRIMARY=12p,Times-Bold,red
# 使用默认参数绘制底图
gmt psbasemap ...
rm gmt.*
使用配置文件设置全局参数

可以将需要配置的一系列参数值写到GMT配置文件 gmt.conf 中。当GMT在执行时,会在当前目录->~/.gmt/以及家目录下寻找GMT配置文件 gmt.conf。若找到该配置文件,则会读取该配置文件中参数的值作为全局参数。

此种方式通常用于制作某个特定风格的图件(比如黑底白线)或者某个符合某个期刊特定要求的图件。可以使用:

gmt defaults > gmt.conf

生成一个包含所有参数的配置文件,然后手动修改。

注解

在使用方法一时,应在脚本的最后删除配置文件,以避免一个潜在的问题。

假如一个绘图脚本由三个命令构成:

gmt psxy ...
gmt set ...
gmt psxy ...

第一个命令 psxy 绘制了一张图,第二个命令 set 修改了GMT配置参数,例如将默认字体A修改为字体B,第三个命令 psxy 绘制了第二张图。此时,第一个命令 psxy 用的是默认字体A,而第三个命令 psxy 用的是字体B。

当执行完一次该脚本时,在当前目录下会生成配置文件 gmt.conf,其中的配置参数使用的是字体B。

若再次执行该脚本,由于当前目录下已经有了上一次执行生成的 gmt.conf 文件,且文件中配置参数使用的是字体B,则第一个命令 psxy 受到该参数文件影响而使用了字体B,而第二个命令 set 将字体B修改为字体B(相当于没修改),第三个命令 psxy 则使用字体B。这导致了执行同一个脚本出现了不同的结果,且难以调试和拍错。

因而,在脚本结束时应删除当前目录下的参数配置文件,甚至删除其他一些中间文件。