第九章 通用地学制图工具GMT入门
简介:GMT通用地学绘图软件已经在地理、地球物理等学科得到广泛应用。作为一个共享软件,不存在版权问题。本章对于GMT的介绍属于入门级,其特点为:
1 只介绍Windows环境下GMT的基础使用方法,不涉及UNIX系统。 2 采用编写批处理文件的方法来实现绘图过程,不介绍GMT Windows窗口菜单。 3 只简单介绍几条用于处理数据文件的gawk命令,基本不涉及编程。 另外,严格按照“GMT安装”的步骤,可以把教学光盘的gmt.zip解压缩和安装到计算机上。按照本章给出的批处理文件,所有的投影和绘图范例都能正常完成。注释文字仅供参考。
The Generic Mapping Tools
Version 3.4.4
A Map–Making Tutorial
by
P?l(Paul)Wessel
School of Ocean and Earth Science and Technology
University of Hawai'i at Manoa
and
Walter H. F. Smith
Laboratory for Satellite Altimetry
NOAA/NESDIS/NODC
January 2004
介绍(INTRODUCTION )
该指南面向GMT 的新用户,概述GMT在线环境,使你能够绘制几种类型的图形但并不需要了解太多的UNIX 知识和UNIX 工具。 我们既不可能涵盖GMT 的各个方面,也不可能对于我们选择的内容阐述得足够详细。在完成这个短训之后,学习的内容一定有助于用户改进自己的GMT和UNIX 技能。
9.1 GMT 纵览:历史,体系和使用(GMT overview: History, philosophy, and usage)
9.1.1 历史回顾(Historical highlights ) GMT体系开始于1987年后期,在美国哥伦比亚大学 Lamont-Doherty 地球观测所,由研究生Paul Wessel
1
和 Walter H. F. Smith创立。 1988年7月,GMT的第一版被正式介绍给Lamont 的科学家。 GMT 1 口头上(和磁带)被传播到美国、英国、日本、法国其它研究所并吸引了少数后来者。1989年12月Paul在 SOEST 获得博士后位置并继续从事GMT 的开发工作。 GMT2.0版于1991年10月 在EOS以论文发表并很快传播到全世界。我们的GMT3.0版在1993年得到美国国家科学基金会的少量赞助,并于1995年8月15日在EOS 以另一篇论文发表。经过重大改进的版本 (3.1–3.3, 3.3.1–6; 3.4, 3.4.1–3) 分别公布于1998年11月到2003年5月期间,最新版本是2004年1月的3.4.4版。现在GMT在世界范围各个学科的用户已经超过6,000。
9.1.2 体系(Philosophy ) GMT 采用UNIX 体系,把复杂的任务分解为较小和易处理的部分。单独的GMT 模块很小,容易维护,也能使用任何其他的UNIX 工具。 GMT 用ANSI C 程序语言写成(非常简便), 适应于 POSIX 和Y2K,不受硬件(如内存)限制。GMT 有意用命令行形式写成,而不用Windows环境,以求最大程度的机动性。我们早就采用为标准化PostScript输出格式,而不用后文件( meta–file)的形式。除了支持海岸线数据外,GMT完全decouples了由主GMT程序读取数据的操作。GMT 使用独立结构的文件格式。
9.1.4 为什么GMT 如此普及(Why is GMT so popular? )
The price is right! 因为可以由命令行,scripts 内部和用户程序调用,GMT 具有无限的适应性。GMT因其高质量的PostScript 输出已经吸引了众多的用户。GMT 很容易安装在几乎所有的计算机上。
9.1.5 GMT 安装环境(GMT installation considerations )
GMT 已经被安装在由超级计算机到笔记本PC机的各类计算机上。GMT 只包括大约55,000 行代码,仅有适度的空间/内存需求。其最低需求是:
netCDF library 3.4或更高(由www.unidata.edu免费下载). 一个C 编辑器(由www.gnu.org免费下载).
大约 100 Mb 磁盘空间(70 Mb 附加的精细分辨率和高分辨率的全球海岸线数据库) 大约 32 Mb RAM. 此外,我们推荐使用一个PostScript 打印机或相当的打印机(例如 ghostscript ), PostScript 预览器(例如ghostview ), 任何类型的 UNIX 操作系统,比较多的磁盘空间和RAM。
9.2 GMT 环境(GMT environment )
9.2.1 Tutorial setup (见附件“GMT安装”)
9.2.2 GMT环境(The GMT environment: What happens when you run GMT?) 图 1.1为运行GMT时你需要了解的关系
图 1.1: GMT 运行环境
2
数据输入(Input data )
一个GMT 程序可以输入也可以不输入数据。要认识3类不同类型的输入文件(更多的细节可在技术参考的Appendix B 中看到):
1. 数据表。电子表格的列数有一定限制,行数不限。可以分为两类:
ASCII码文件(除非数据文件巨大,为首选格式)
单段文件 [缺省]
具有内部标头记录的多段文件(–M) 二进位文件(加快输入/输出速度)
单段文件 [缺省]
多段文件(段的头记录NaN 域)(–M)
2. 网格数据组。 为数据矩阵(数据点在两个坐标方向等距分布)。有两种格式:
网格线配准(Grid–line registration ) 像素配准(Pixel registration )
你可以从几个文件格式中选择(也可以定义你自己的文件格式),但GMT 缺省格式是netCDF。 3. 调色板表(用于影像图、彩色图和等值线图)。
任务控制(Job Control )
GMT 程序可以由以下几方面获得运行参数: 1. 由命令行选项/转换开关或程序缺省值所提供
2. 用省略符号,选项后不加参数说明参数同前(保存在文件 .gmtcommands内) 3. 使用GMT各种参数的缺省值(保存在文件 .gmtdefaults内) 4. 可以使用隐含的像海岸线或PostScript 图案这样的数据
数据输出(Output data )
GMT得到的6种输出文件列表如下: 1. PostScript 绘图文件 2. 数据表 3. 网格数据组 4. 统计和概要
5. 警告和出错信息,写入stderr.
6. 退出状态(0 为正常,其他为失败)
注意: GMT 自动创建和更新其公共转换开关命令选项的历史纪录。这些选项的历史文件是.gmtcommands ,在每一个运行GMT程序的目录下都被创建。许多GMT使用中出现的基础问题都是由于没有充分了解图1.1所示的关系。
9.2.3 UNIX环境,入门级知识(The UNIX Environment: Entry Level Knowledge) 编者注:因为我们只介绍用编写DOS批处理文件的方式来实现GMT绘图功能,以后的范例都采用DOS批处理文件的格式。注意和UNIX环境格式的区别。 重定向Redirection 大多数GMT程序由终端(称为标准输入stdin)或文件输入数据,向终端输出数据(称为标准输出stdout)。可用重定向来代替标准输入/输出。 GMTprogram input–file >output–file GMTprogram < input–file > output–file
GMTprogram input–file >> output–file “>>”加入到已有文件的后面
编者注:UNIX的感叹号(!)表示允许覆盖已有文件,DOS 批处理文件不用感叹号。
3
管道命令Piping(|)
有时我们想把一个程序的输出结果作为另一个程序的输入数据。可用UNIX的管道命令。DOS 批处理文件相同。
Someprogram | GMTprogram1 | GMTprogram2 > Output–file(or | lp)
标准差Standard error(stderr)
大多数UNIX 和 GMT 命令有时会输出出错信息。调用stderr 输出典型的不同数据流,可由标准输出设备(stdou)重定向。为重定向出错信息我们使用: UNIX命令 >& errors.log
如我们想把程序输出结果和出错信息分别存储在不同的文件,我们使用下面语法: (GMTprogram > output.d)>& errors.log
文件名扩展或替代符(File name expansion or ``wild cards'' ) 如“*”代表任意个字符,“?”代表1个任意字符,“[list]”匹配字符列表等。 范例
GMT命令 data_*.d 指对所有以“data_”开始并以“.d”字符结束的文件进行操作。
GMT命令 line_?.d指对所有以“line_”开始,后面跟任意一个字符,并以“.d”字符结束的文件进行操作。
GMT命令 section_1[0–9]0.part_[12] 只对sections 100到190范围的数据进行处理, 只用10的整数sections,同时得到part 1 和 2。
9.2.4 GMT 缺省参数设置GMT Defaults
大量的次要功能(多于50个)只需改变GMT 缺省参数设置即可实现。这些参数控制了诸如字体类型和大小、绘制底图的线宽、线性内插等许多参数。GMT 的缺省参数保留在文件.gmtdefaults中。用户可在主目录中保存一个主.gmtdefaults文件,而在某些子目录中保存几个特定的.gmtdefaults文件。如果在当前目录下没有.gmtdefaults文件,GMT就打开用户的主.gmtdefaults文件。如果再没有的话,就采用系统缺省的.gmtdefaults文件。后者为GMT开发者设定的,但在GMT安装时可能被改变。在这个水平上的典型改变就是选择SI单位而不是英美制单位。并不推荐全面改变系统的缺省设置,因为某些应用程序可能有赖于缺省值的标准设置。用户可以创建一个新的.gmtdefaults文件,事先调整好当前GMT所使用的.gmtdefault值 。
图 1.2: 影响绘图外观的一些 GMT 参数
至少有两个很好的原因来解释为什么要把GMT缺省选项放在一个单独的参数文件中:
1. 使用命令行语法来设置太多的选项并不实际,因为许多参数极少或从来不被改变(例如地图投影所使用的椭球模型)。
2. 保持独立的.gmtdefaults文件对于特定的任务很方便,简单运行子目录里的GMT文件就可以达到特殊效果。例如,刊物论文的最终成图常要求对字体和字号标准化等,就可以把所有这类设置保存在一个单独的.gmtdefaults文件中以简化该过程。同样,用于制作幻灯片的GMT script和在激光打印机输出的
4
图经常使用不同的配色方案和大小。把不同的设置组织成不同的.gmtdefaults文件可以把与图宏编辑(micro–editing)相关的麻烦减至最小。
图 1.3: 影响绘图外观的更多的 GMT 参数
GMT总是企图打开名为.gmtdefaults 的文件。有时,覆盖缺省值是值得的。我们提供另一种方法作为选择,即在GMT同一个命令行增加用加号(+)做前缀的备用的.gmtdefaults 文件。一种可能比较好的方法是每个程序开始时创建一个当前.gmtdefaults 文件的拷贝,然后把用户需
要的.gmtdefaults 文件复制到当前目录,最后在程序结束取消改变。为了在程序内部改变一些GMT参数,可以使用gmtset命令。例如,为把注释字体改变为12点的Times–Bold ,执行命令 gmtset ANOT_FONT Times–Bold ANOT_FONT_SIZE 12
Figure 1.4: 影响绘图外观的更多的 GMT 参数
除修改单位、比例外还有大量参数,有29个参数直接影响到绘图效果。完全的列表见.gmtdefaults 主页。 在程序的结尾,可以把特殊的参数重新设回GMT的原始设置。我们建议你至少把所有常用参数练习一次,以便了解如何通过设计一种方案来改变参数。
9.2.5 GMT单位(GMT Units)
GMT可以接受的空间单位有厘米、英寸、米或
点。有两种方法保证GMT了解用户想要使用哪种单位。
1. 给所应用的维度直接添加用户打算使用的单位。这种方法直接而清楚,比如, –X4c表明是 4 cm。 2. 用.gmtdefaults 中的MEASURE_UNIT设置用户打算使用的单位。如无明确标明,所有的维度都被解释为缺省设置单位。
后一种方法不太安全,因为其他用户可能使用不同的单位,你的程序可能不像预期地那样执行。因此,我们推荐你始终采用直接添加用户打算使用的单位的方法。
9.3 GMT常用命令行选项(GMT Common Command Line Options)
GMT有13种选项在所有的程序中都相同。了解如何使用这些选项至关重要,按照字母顺序简述如下。
9.3.1 The –B option
这是GMT中最复杂的选项,但在大多数使用的例子中实际上又十分简单。写为: –Bxinfo[/yinfo][:.\
该选项用选定的标志间隔指定了待绘制地图的边界。 xinfo 和 yinfo 的格式为
[a]tick[m|c][ftick[m|c]][gtick[m|c]][l|p][:\
5