6.1 数据格式

GMT 作为一个画图工具,肯定要输入一些数据,同时作为一个数据处理工具,也会输出一些数据。这就牵涉到数据格式的问题了。

GMT可以绘制一般的笛卡尔坐标轴、地图的经纬度轴以及绝对时间轴、相对时间轴。对于不同的坐标轴,需要的数据格式也不同。

6.1.1 地理坐标

地理坐标(即经纬度)有两种表示方式:

  1. 以浮点型的度数表示:比如 -123.45 代表-123.45度
  2. 度分秒表示: [±]ddd[:mm[:ss[.xxx[W|E|S|N]]]] 。其中, dddmmssxxx 分别表示弧度、弧分、弧秒、弧毫秒。 WESN 分别代表西经、东经、北纬、南纬。例如 123:27W 代表西经123度27分, 123:27:15.120W 表示西经123度27分15.12秒。

6.1.2 绝对时间坐标

绝对时间由两部分构成,即日期和时间,表示为 <date>T<clock> 。其中 T 是关键字,用于分隔日期和时间。

日期 <date> 可以是如下格式的一种:

  1. yyyy[-mm[-dd]] :年-月-日,例如 20132015-102015-01-02
  2. yyyy[-jjj] :年-一年中的第几日,例如 2015-040
  3. yyyy[-Www[-d]] :年-第几周-该周内第几天,例如 2014-W01-32014-W01

时间 <clock> 的格式为 hh:[mm:[ss[.xxx]]] ,例如 10:10:35.120

使用过程中需要注意:

  1. GMT的时间数据的输入/输出格式默认为 yyyy-mm-ddThh:mm:ss.xxx 。若想要输入其他格式的时间数据,需要修改 FORMAT_DATE_INFORMAT_CLOCK_IN ;若想要输出其他格式的时间数据,需要修改 FORMAT_DATE_OUTFORMAT_CLOCK_OUT
  2. 若未指定 <date> 则假定 <date> 为今日
  3. 若未指定 <clock> 则认为是 00:00:00
  4. 若指定了 <clock> 则必须要加 T ,比如 T10:20:34 表示今天的早晨10点多
  5. 所有绝对时间在程序内部都会被转换成相对于特定时刻的秒数

下面举几个绝对日期的例子:

  • 2014-02-10T10:00:00.000
  • T10:20:44.234
  • 2014-040T23:23:54.330

6.1.3 相对时间坐标

相对时间坐标即某个时间相对于参考时刻的秒数、小时数、天数或年数。因而在使用相对时间时,首先要给定两个参数:参考时刻以及相对时间所使用的单位。

GMT参数 TIME_EPOCH 用于指定参考时刻, TIME_UNIT 用于指定相对时间的单位。也可以用参数 TIME_SYSTEM 同时指定这两个参数。默认的参考时刻为1970年1月1日午夜,默认的相对时间单位为秒。

在指定了参考时刻后,相对时间就跟一般的浮点数没什么区别了。那如何区分一般的浮点数与相对时间呢?有两种方式:

  1. 在数据后加上小写的 t ,比如 30t 表示相对于 TIME_EPOCH 间隔了 30 个 TIME_UNIT 时间单位的时刻
  2. 在命令行中使用 -ft 选项表明当前数据是相对时间,此时不需要在数字后加 t

6.1.4 一般坐标值

在绘制常规的笛卡尔坐标轴时,即输入数据不是地理坐标、绝对时间或相对时间时,输入数据可以直接用浮点数表示,而不去在意其物理含义及单位。比如,5牛顿的力,5千克的质量,在 GMT 看来都只是浮点数 5

这些浮点数坐标可以用两种方式表示:

  1. 一般表示: [±]xxx.xxx ,比如 123.45
  2. 指数表示: [±]xxx.xx[E|e|D|d[±]xx] ,比如 1.23E10