Skip to content

Latest commit

 

History

History
117 lines (75 loc) · 5.44 KB

intro-gmt.rst

File metadata and controls

117 lines (75 loc) · 5.44 KB

GMT简介

GMT是什么

GMT,全称Generic Mapping Tools,中文一般译为“通用制图工具”。GMT不仅可以用于绘制不同类型的地图,还可以绘制常见的笛卡尔坐标轴(线性轴、对数轴和指数轴)。除此之外,GMT还有一些数据处理和分析的功能,比如多项式拟合、数据滤波、线性回归分析等。

GMT的历史

  • 1988年,Paul Wessel和Walter H.F. Smith开发了GMT的最原始版本GMT 1.0
  • 1991年8月10日,GMT 2.0发布
  • 1998年11月8日,GMT 3.x的第一个正式版发布
  • 2005年10月1日,GMT 4.x的第一个正式版发布;目前最新版本 GMT 发布于
  • 2013年11月5日,GMT 5.x的第一个正式版发布;目前最新版本 GMT 发布于

GMT维护者

GMT目前的5个维护者:Joaquim Luis、Walter H.F. Smith、Remko Scharroo、Florian Wobbe 和 Paul Wessel

GMT目前的5个维护者:Joaquim Luis、Walter H.F. Smith、Remko Scharroo、Florian Wobbe 和 Paul Wessel

GMT的特点

为什么选择GMT作为绘图软件呢?因为GMT有如下特点:

  1. 开源免费

    GMT是开源软件,其源码遵循 LGPL 协议。任何人均可自由复制、分发、修改其源代码,也可用于盈利。修改后的代码必须开源但可以使用其他开源协议。

  2. 跨平台

    GMT的源码采用了高度可移植的ANSI C语言,其完全兼容于POSIX标准,几乎不需修改即可运行在大多数类UNIX系统上。GMT官方网站不仅提供了软件源码,还提供了供 Windows 和 macOS 使用的软件安装包。各大Linux发行版中也提供了预编译的二进制版本。

  3. 模块化

    GMT遵循UNIX的模块化设计思想,将GMT的绘图及数据处理功能划分到不同的模块中。这样的模块化设计有很多优点:

    • 只需要少量的模块
    • 各个模块之间相互独立且代码量少,易于更新和维护
    • 每一步均独立于独立于之前的步骤以及具体的数据类型,因而可以用于不同的应用中
    • 可以在shell脚本中调用一系列程序,或通过管道连接起来,进而绘制复杂图件
  4. 高精度矢量图

    GMT绘制得到的图件为PS格式,即PostScript,是一种页面描述语言。PS格式是矢量图片格式,可以任意放大缩小而不失真。GMT充分利用PostScript语言的特性,可以生成高质量的矢量图件,并可以很容易地转换为其他图片格式。

GMT版本号

GMT的版本号的格式为:

major.minor.patch

其中 major 为主版本号,minor 为次版本号,patch 为补丁版本号。

一般而言,版本号的更新规则如下:

  • 当有极大的更新,会增加主版本号 major ,因而 major 不同的两个版本在语法和功能上有很大的差异
  • 当有较大的更新,比如个别命令的语法有变化,会更新次版本号 minor
  • 若更新主要是修复错误,则会增加 patch 的版本号

因而, GMT 5.x.xGMT 4.x.x 之间有很大差异,两个版本的语法是不完全兼容的,切勿混在一起使用。 GMT 4.5.xGMT 4.4.x ,部分命令的语法和用法可能有一点区别。而 GMT 4.5.13 相对于 GMT 4.5.12 ,主要是修复了一些BUG。

GMT4 vs GMT5

GMT目前在同时维护GMT4和GMT5两个大版本。用户是选择GMT4还是GMT5呢?

GMT4的优缺点:

  • 已发布十年有余,功能相对成熟
  • 仅修复Bug,不再增加新功能,命令语法相对稳定
  • 网络上的中文教程及示例多采用GMT4语法,新手学习起来更方便

GMT5的优缺点:

  • 相对于GMT4有很多改进,命令语法更统一,选项的设计更加合理
  • 相对于GMT4加入了更多的新功能
  • GMT5是GMT的未来
  • 由于重写了大量代码,因而可能有较多的Bug
  • 目前关于GMT5的中文教程太少

综上,对于用户的建议是:

  • 新用户推荐学习GMT5,毕竟GMT5是GMT的未来,更多新用户的加入也可以更好地促进GMT的发展
  • 实验室可能有前人留下的GMT4的代码,若历史负担太重,建议使用GMT4
  • 若自己的大型项目中使用了GMT绘图,建议使用GMT4,因为GMT4相对稳定,不至于因为GMT小版本的不兼容而影响到自己的项目

PS:GMT4和GMT5可在系统中共存,因而完全可以同时安装两个版本,旧脚本不必修改,继续使用GMT4,新脚本则使用GMT5语法。

跨平台特性

GMT是跨平台的,可以运行在Linux及Windows下,当然也可以运行在 macOS 下,这里姑且认为 macOS 跟Linux是同一个东西。

推荐在Linux下使用GMT,原因如下:

  • GMT是在Linux下开发再移植到Windows下的。因而,Windows版本的GMT相对来说有更多的bug
  • Linux自带了众多数据处理工具: gawkcutpaste
  • Windows下的命令行及bat太难用,Linux下的命令行和Bash脚本相对来说更易用

PS:Windows10即将自带Bash,未来有可能可以在Windows下写Bash脚本,值得期待。

GMT替代品

在绘制地图方面,还有一些软件也可以实现类似的功能,可以作为GMT的替代品。

  1. Matplotlib Basemap Toolkit for Python
  2. M_Map for Matlab
  3. ggmap for R