---
author: 田冬冬, 姚家园, 朱邓达
date: 2025-06-08
---

# 数据类型

GMT 可以绘制地图的经纬度轴、绝对时间轴、相对时间轴以及笛卡尔坐标轴，
具体请参考 {doc}`/option/B`。不同的坐标轴需要的数据类型也不同。
GMT 所支持的数据类型主要分为四大类：地理坐标、绝对时间坐标、相对时间坐标、一般浮点数。

(geographic_coordinates)=

## 地理坐标

地理坐标（即经纬度）有两种表示方式：

1. 浮点型的度数，如 **-123.45** 代表 –123.45 度

2. 度分秒：

   > \[**±**\]*ddd*\[**:**_mm_\[**:**_ss_\[.*xxx*\]\]\]\[**W**|**E**|**S**|**N**\]

   - *ddd*、*mm*、*ss*、*xxx* 分别表示度、分、秒以及秒的小数部分
   - **W**、**E**、**S**、**N** 分别代表西经、东经、南纬、北纬

   例如，**123:27W** 代表西经 123 度27分，
   **123:27:15.120W** 表示西经 123 度 27 分 15.12 秒。

(absolute_time_coordinates)=

## 绝对时间坐标

绝对时间由日期（*date*）和时间（*clock*）两部分构成，格式为：

> *date***T***clock*

其中，**T** 是关键字，用于分隔日期和时间。

日期可以是如下格式的一种：

1. 年–月–日：*yyyy*\[**-**_mm_\[**-**_dd_\]\]，
   如 **2013**、**2015-10**、**2015-01-02**
2. 年–一年中的第几日：*yyyy*\[**-**_jjj_\]，如 **2015-040**
3. 年–一年中的第几周–该周内第几天：*yyyy*\[**-W**_ww_\[**-**_d_\]\]，
   如 **2014-W01-3**、**2014-W01**

时间是 24 小时制，其格式为 _hh_**:**\[_mm_**:**\[*ss*\[.*xxx*\]\]\]，
如 **10:10:35.120**。

举几个绝对时间的例子：

- **2014-02-10T10:00:00.000**
- **2014-040T23:23:54.330**
- **2015-01-02** 表示 2015 年 1 月 2 日 00:00:00
- **T10:20:44.234** 表示今天早晨 10 点多

:::{note}
1. GMT 的时间数据的默认输入/输出格式为 *yyyy-mm-dd*T*hh:mm:ss.xxx*。
   若想要输入其它格式的时间数据，需要修改配置参数 {term}`FORMAT_DATE_IN`
   和 {term}`FORMAT_CLOCK_IN`；
   若想要输出其它格式的时间数据，需要修改配置参数 {term}`FORMAT_DATE_OUT`
   和 {term}`FORMAT_CLOCK_OUT`
2. 若未指定 *date*，则默认 *date* 是今日
3. 若未指定 *clock*，则默认是 **00:00:00**
4. 若指定了 *clock*，则必须要加 **T**，如 **T10:20:34** 表示今天早晨 10 点多
5. GMT 在程序内部会将所有绝对时间转换成相对于特定时刻的秒数
:::

(relative_time_coordinates)=

## 相对时间坐标

相对时间坐标表示某个时刻相对于参考时刻的秒数、小时数、天数或年数。
因而使用相对时间时需要指定两个参数，即参考时刻与相对时间所使用的单位。

默认参考时刻为 1970 年 1 月 1 日午夜，默认相对时间单位为秒。
但可以分别用配置参数 {term}`TIME_EPOCH` 和 {term}`TIME_UNIT` 来指定参考时刻和相对时间的单位，
也可以用配置参数 {term}`TIME_SYSTEM` 同时指定这两个参数。

指定了参考时刻之后，相对时间跟一般浮点数就没什么区别了。
那么，如何区分一般浮点数与相对时间呢？有以下两种方式：

1. 在数据后加上小写的 **t**，如 **30t** 表示相对于 {term}`TIME_EPOCH` 间隔了 30 个
   {term}`TIME_UNIT` 时刻
2. 在命令行中使用 **-ft** 选项（不需要在数据后加 **t**），表明当前数据是相对时间坐标

(float_coordinates)=

## 一般浮点数

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

浮点数坐标可以用两种方式表示：

1. 一般表示：\[**±**\]*xxx.xxx*，如 **123.45**
2. 指数表示：\[**±**\]*xxx.xx*\[**E**|**e**|**D**|**d**\[**±**\]*xx*\]，
   如 **1.23E10**
