GMT4 → GMT5¶
GMT5相对于GMT4有很多功能上的更新以及语法上的改进。最大的变化在于,GMT5中所有GMT命令必须以 gmt 开头。
GMT4中使用 psbasemap 命令绘制底图、使用 pscoast 绘制海岸线。 psbasemap 和 pscoast 都是GMT4提供的命令,每个命令均对应一个可执行文件。GMT4总共提供了上百个命令,这带来一个命名空间污染(namespace pollution)的问题。即不同的软件提供了相同名字的命令,导致不同命令之间出现冲突,使得用户难以确认自己执行的 pscoast 命令是由GMT提供的还是其它软件包提供的。
为了解决这个问题,GMT5对源码做了大量改写。GMT5中只提供 gmt 这一个命令/可执行文件。GMT4中的所有命令在GMT5中都变成了 gmt 命令的模块。所有模块都以 gmt module options 的形式进行调用。例如,GMT4中的命令 psbasemap 在GMT5中应写为 gmt psbasemap。
因而,将GMT4脚本迁移到GMT5下,只需要遵循如下步骤:
- 将所有GMT4命令前加上 gmt,即 psbasemap 改成 gmt psbasemap
- 保存并执行脚本。若出现报错,则找到最早的报错信息并查询当前GMT版本对应的文档,检查是否语法存在变化,并进一步更正。
GMT提供了脚本 gmt5syntax,可以自动在GMT4命令前加上 gmt,该脚本位于
GMT的 share/tools
目录下。该脚本的使用方法也很简单:
gmt5syntax old_script.sh > new_script.sh
如果不愿意修改原脚本,GMT还为旧命令提供了软链接,使得依然可以直接使用 psbasemap 等命令,但极其不推荐这一方法。为旧命令生成软链接有多种方法,用户可任选其一即可:
如果你是自行编译GMT源码并安装,则可以在
cmake/ConfigUser.cmake
中加上set (GMT_INSTALL_MODULE_LINKS TRUE)
再进行编译安装对于已经安装GMT的用户,可以执行:
$(gmt --show-sharedir)/tools/gmt_links.sh create
该脚本会自动为所有旧命令创建软链接。
对于Bash用户,可以直接在Bash脚本、终端或者Bash配置文件中加入如下语句:
source $(gmt --show-sharedir)/tools/gmt_functions.sh
该脚本会为所有旧命令构建一个等效的bash函数。
对于csh用户,可以直接在csh脚本、终端或者csh配置文件中加入如下语句:
source `gmt --show-sharedir`/tools/gmt_aliases.csh
该脚本会为所有旧命令构建一个等效的csh别名。