10.1 GMT配置简介

10.1.1 简介

GMT中还有150多个配置参数,用于控制图像的外观(如底图边框的画笔粗细、颜色,文字标注的字体、大小和颜色等)和数据的处理方式(如默认的插值方式、地图投影使用的椭球等)。

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

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

10.1.2 设计思路

GMT将这100多个配置参数单独放置在配置文件 gmt.conf 中,主要是基于两方面的考虑:

  1. 让每个模块的命令行语法中都涵盖如此多的参数是不实际的,这些参数有些很少或几乎不需要改变(比如地图投影过程中使用的地球椭率)
  2. 不同的期刊可能要求不同的字体和字号,用于PowerPoint演示的图件也可能与期刊的要求不同。可以针对不同的应用环境设计不同的GMT配置参数,保存到不同的 gmt.conf 文件中。对于特定的应用环境,可以将对应的配置文件 gmt.conf 复制到GMT脚本所在目录再执行脚本即可,可以尽可能的避免由于环境不同而导致的大量参数微调。

10.1.3 修改GMT配置

GMT系统自带的 gmt.conf 文件中对每个参数都给了一个合理的默认值,但有时用户需要修改这些参数值,GMT提供了多种方法来实现修改。

  1. gmtset 模块在脚本执行的过程中显式地修改GMT参数值

    比如,需要设置主标注的字体为 12p,Times-Bold,red:

    gmt set FONT_ANNOT_PRIMARY 12p,Times-Bold,red
    

    gmtset 会修改当前目录下的 gmt.conf 文件中的相应参数值,进而影响到接下来其它GMT程序的执行。若当前目录没有 gmt.conf 文件,则 gmtset 会先复制系统自带的 gmt.conf 文件,再修改之。该命令修改的参数将一直生效,直到被新值覆盖。

  2. 若你需要修改某些参数值,使得其在执行单个命令时有效,而不影响其他命令的执行效果,可以考虑在该命令行上使用 --PAR=value 语法。

    比如,针对某个GMT命令,为了临时设置浮点数的输出格式包含更多的小数位,而不影响其他命令的浮点数输出格式,可以在该命令中加上 --FORMAT_FLOAT_OUT=%.16lg

  3. 在单个GMT命令中使用 +<defaultfile> 的语法,来指定使用特定配置文件 <defaultfile>,该方法仅对单个命令有效:

    gmt psxy ... +custom_gmt.conf
    
  4. 在脚本开始执行之前,将要使用的配置文件 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。这导致了执行同一个脚本出现了不同的结果,且难以调试和拍错。

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

10.1.4 查看配置参数的值

使用:

gmt defaults -D

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

使用:

gmt get FORMAT_GEO_MAP

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

10.1.5 删除配置文件

可以使用 gmt clear conf 命令删除配置文件 gmt.conf

10.1.6 GMT配置示例

下面列出部分会影响到绘图效果的GMT参数。

Source Code

../../_images/overview-gmtplot-0.png

Source Code

../../_images/overview-gmtplot-1.png

Source Code

../../_images/overview-gmtplot-2.png