---
author: 田冬冬
date: 2024-09-09
---

# 单位

GMT 中的单位有两类：长度单位和距离单位。

:::{note}
本手册中，长度单位专用于度量纸张上的距离，而距离单位则用于度量真实地球上的距离。
:::

## 长度单位

GMT 中的长度量（如宽度、偏移量、符号大小等）可以使用厘米（**c**m）、
英寸（**i**nch）或点（**p**oint）为单位，
它们之间的关系为 $1 inch = 2.54 cm = 72 point$。

厘米、英寸和点，在 GMT 中分别用 **c**、**i** 和 **p** 表示。例如 **5c**
表示 5 厘米，**3i** 表示 3 英寸，**2p** 表示 2 点。

GMT 有两种方式可以指定长度量的单位，即显式指定单位和隐式指定单位。

显式指定单位

: 在长度量后直接加上单位以显式地指定当前长度量的单位。
  比如 **-X4c** 意味着传给 **-X** 选项的长度量是 4 厘米

隐式指定单位

: 若长度量后没有给定长度单位，则 GMT 会根据参数 {term}`PROJ_LENGTH_UNIT`
  所指定的默认长度单位对该长度量进行解释。
  比如 **-X4** 中的长度量 4 会根据 {term}`PROJ_LENGTH_UNIT`
  取值的不同而被解释为 4 厘米、4 英寸或 4 点。

:::{tip}
使用长度单位时，建议遵循如下几条：

- 始终显式指定长度量的单位，不依赖于 {term}`PROJ_LENGTH_UNIT` 的值，
  以免导致同一脚本在不同机器上由于 GMT 参数配置的差异而导致结果不同
- 长度单位 **p** 用于指定较小的长度量，比如线宽、文字大小等
- 长度单位 **c** 和 **i** 用于指定较大的长度量，比如底图宽度、圆圈大小等
- 尽量使用 SI 单位制（**c**）而不用 US 单位制（**i**），
  因为国人对于 1 厘米要比 1 英寸更有概念
:::

## 距离单位

对于真实地球上的距离量而言，常用单位包括：

- **d**：度（**d**egree of arc）
- **m**：分（**m**inute of arc）
- **s**：秒（**s**econd of arc）
- **k**：千米（**k**ilometer）
- **e**：米（m**e**ter） **默认单位**

还有几个不常用的单位：

- **f**：英尺（**f**oot）
- **M**：Statute mile
- **n**：Nautical mile
- **u**：US Survey foot

对于一个距离量而言，若不指定单位，则默认其单位为 **e** （即 “米”）。
当然还是建议为每个距离量显式指定其单位，使得命令更加清晰。
比如在地球上以某点为中心画一个特定半径的圆，半径取 30 等效于 **30e** 表示 30 米，
半径取 **30k** 则表示 30 千米。

## 小练习

1. 执行命令 `gmt get PROJ_LENGTH_UNIT` 查看 GMT 的默认长度单位。

2. 如下命令在一个长宽均为 10 厘米（由 `-JX10c/10c` 控制）的矩形底图中心，
   绘制了一个直径为 3 厘米（由 `-Sc3c` 控制）的圆:

   ```
   echo 5 5 | gmt plot -JX10c/10c -R0/10/0/10 -Baf -Sc3c -W1p -pdf units
   ```

   将 `-Sc3c` 改成 `-Sc3i` 或 `-Sc3` 并绘图，比较圆圈的大小差异以理解
   单位的作用。
