✍️ 田冬冬 , 陈箫翰 • 📅 2025-08-17

# -g 选项

在处理多段数据时，GMT提供了三种机制来决定文件中数据的分段情况：

1. 使用数据段头记录来标记一段数据的开始，详见 ASCII 表

2. 若输入数据中，某个记录的某个关键列的值为NaN，则也可以用于将该记录作为数据段的开始标识

   - 当 IO_NAN_RECORDS 为 skip 时，这些包含NaN值的记录会被自动跳过

   - 当 IO_NAN_RECORDS 为 pass 时，这些包含NaN值的记录会被当做数据段的开始标识

3. 也可以使用 -g 选项，通过判断两个相邻的数据点是否符合某个准则来决定数据分段

-g 选项的完整语法为：

> -gx|y|z|d|X|Y|D gap[u][+a][+c col][+n|p]

该选项可重复多次，以指定多个分段准则。一次使用 x|y|z|d|X|Y|D 中的其中一个指定一个准则。 有些模块可以进行地图投影计算投影坐标（例如 mapproject）。大写字母表示的准则会应用到计算出的投影坐标中。

- x|X 表示相邻两点间的X坐标跳变超过 gap 则定义为一个分段

- y|Y 表示相邻两点间的Y坐标跳变超过 gap 则定义为一个分段

- z 表示相邻两点间的Z值跳变超过 gap 则定义为一个分段。默认数据中的第三列为Z值，用户可以使用 +c col 自行规定哪一列为Z值（默认 col 为2即第三列）。

- d|D 表示相邻两点间的距离超过 gap 则分段

用户可以设置 u 用于指定 gap 的单位：

- 对于地理坐标 (x|y|d)，u 可以取 d(egree), m(inute), s(econd), 或 (m)e(ter), f(eet), k(ilometer), M(iles), 或 n(autical miles) [默认为(m)e(ter)]

- 对于投影坐标 (X|Y|D)，u 可以取 i(nch), c(entimeter), p(oint) [默认值由 PROJ_LENGTH_UNIT控制]

- 对于 x|y|z，若输入是时间数据，则单位由 TIME_UNIT 控制

默认情况下，只要符合任意一个准则就对数据进行分段。用户可以使用 +a 表示所有准则都满足时才进行分段。

默认使用两点间的X坐标、Y坐标或距离差的绝对值作为 gap ，进行分段。

- +n 表示用前一数据减去当前数据作为 gap

- +p 表示用当前数据减去前一数据作为 gap