✍️ 田冬冬 , 陈箫翰 • 📅 2025-12-30

# connect

官方文档:

  connect

简介:

  将端点接近的线段连接起来

该命令会读入一个或多个多段数据，并检查所有线段的两个端点。若某对端点完全相同 或者二者的距离在可容忍的范围内，则将两段线段连接成一条线段。该进程会一直重复， 直到剩余的端点均不在可容忍的范围内。最终连接得到的线段会被写到终端或特定的 输出文件中。

若不清楚该如何确定可容忍范围值，可以使用 `-L` 选项，获得所有端点之间的距离的 列表，通过分析该列表来得到合适的值。

## 语法

gmt connect [ table ] [ `-C`[closed] ] [ `-D`[template] ] [ `-L`[linkfile] ] [ `-Q`[template] ] [ `-T`[cutoff[+s sdist]] ] [ `-V`[level] ] [ `-a` flags ] [ `-bi` binary ] [ `-bo` binary ] [ `-d` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-g` gaps ] [ `-h` headers ] [ `-i` flags ] [ `-o` flags ] [ `-q` flags ] [ `-s` flags ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

  一个或多个ASCII或二进制表数据。若不提供表数据，则会从标准输入中读取。

## 可选选项

-C

-C[closed]

  将所有闭合多边形写到文件 closed （默认文件名为 `gmtconnect_closed.txt` ）i 中并将其他数据段写到标准输出。

  使用该选项不会对线段做连接。

-D

-D[template]

  对于多段数据文件，将每段数据分别输出到不同的数据文件中。

  template 是文件名的模板，该模板中必须包含一个整型参数的格式，比如 `%d` 或 `%08d` ，也可以在整型参数格式前加上字符参数格式 `%c` ，实际 输出时会被C或O代替，分别表示closed和open。

  默认的模板为 `gmtconnect_segment_%d.txt` 。

-L

-L[linkfile]

  将连接信息写到指定的文件中，默认文件名为 `gmtconnect_link.txt` 。

  对于每段数据而言，会写入原始的数据段ID；对于线段的起始点和终点而言，会报告 离得最近的线段的ID，以及两个线段端点之间的距离。

-Q

-Q[template]

  与 `-D` 结合使用，写入一个包含各个输出文件名列表的文件。 可以为各个文件名附加一个文件名模板；该模板 可能 包含一个 C 语言格式说明符， 用于格式化一个字符（分别代表闭合或打开的 C 或 O）。[默认值为 gmtconnect_list.txt]。

-T

-T[cutoff[+s sdist]]

  指定以数据坐标为单位的分离容差 [0]；对于地理数据，请附加 距离单位 。 如果两条线的端点距离小于 cutoff，则它们将被合并。附加 +s sdist 将增加一个额外约束： 只有在第二短的连接距离超过 sdist 时，才会建立连接。后者的距离必须使用与 cutoff 相同的单位。 如果 `-T` 没有参数，将关闭每个线段或多边形，而 不考虑 该段起点和终点之间的间隙距离。

-V

-V[level]

  设置 verbose 等级 [w]。 (参数详细介绍)

-a

-a[[col=]name][,...]

  控制输入或输出为 OGR/GMT 格式时对非空间元数据的处理方式。 (参数详细介绍)

-bi

-bi[ncols][type][w][+l|b]

  控制二进制文件的输入格式。 (参数详细介绍)

-bo

-bo[ncols][type][w][+l|b]

  控制二进制文件的输出格式。 (参数详细介绍)

-d

-d[i|o]nodata

  将某些特定值当作 NaN。 (参数详细介绍)

-e

-e[~]"pattern" | -e[~]/regexp/[i]

  筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)

-f

-f[i|o]colinfo

  显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)

-g

-g[a]x|y|d|X|Y|D|[col]z gap[+n|p]

  确定数据或线段的间断。 (参数详细介绍)

-h

-h[i|o][n][+c][+d][+m segheader][+r remark][+t title]

  在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)

-i

-i cols[+l][+s scale][+o offset][,...][,t[word]]

  对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-o

-o cols[,...][,t[word]]

  对输出的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-q

-q[i|o][~]rows[+c col][+a|f|s]

  对输入或输出的行进行筛选，该选项在一定程度上可以代替 gawk 的某些功能。 (参数详细介绍)

-s

-s[cols][+a|+r]

  设置 NaN 记录的处理方式。 (参数详细介绍)

-:

-:[i|o]

  交换输入或输出数据的前两列。 (参数详细介绍)

-^ 或 -

  显示简短的帮助信息，包括模块简介和基本语法信息（Windows下只能使用 -）

-+ 或 +

  显示帮助信息，包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

  显示完整的帮助信息，包括模块简介、基本语法以及所有选项的说明

--PAR=value

  临时修改GMT参数的值，可重复多次使用。参数列表见 配置参数

## 距离单位

GMT支持多种不同的距离单位，以及三种不同的球面距离计算方式。 详情见 单位 和 -j 选项。

## ASCII 格式精度

ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ；控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_CLOCK_OUT ；普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失，这会在下游计算中导致一些问题。 如果用户需要保证数据精度，则应考虑将数据写为二进制文件，或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。

## 示例

注: 下面是该模块的一些有效语法示例。使用远程文件（文件名以 `@` 开头）的示例可以剪切并粘贴到您的终端中进行测试。其他需要输入文件的命令只是常见的使用类型的虚拟示例，但不能按编写的原样运行。

将线段文件 segment_*.txt（其笛卡尔坐标单位为厘米）尽可能地合并为最少的完整线条，假设端点的数字化误差最高可达 0.1 毫米:

    gmt connect segment_*.txt -T0.1 > new_segments.txt

将多段文件 my_lines.txt（其坐标为 经度, 纬度）中的线段尽可能地合并为最少的完整线条， 假设端点数字化误差最高可达 150 米，并将完整的线段写入名为 Map_segment_0001.txt、Map_segment_0002.txt 等的独立文件中:

    gmt connect my_lines.txt -T150e -DMap_segment_%04d.txt

## Bugs

如果线条仅包含单个点，则线条连接功能将无法工作。 但是 connect 会正确地将该点添加到最近的线段中。 对新的线条集合再次运行 connect，最终将连接所有满足 `-T` 给定标准的线条。

## 相关模块

simplify, spatial, mapproject