名称

ST_LineMerge — 返回通过将 MultiLineString 缝合在一起形成的线。

大纲

geometry ST_LineMerge(geometry amultilinestring);

geometry ST_LineMerge(geometry amultilinestring, boolean directed);

描述

返回通过将 MultiLineString 的线元素连接在一起而形成的 LineString 或 MultiLineString。 线在 2 线交叉点处的端点处连接。 线不会在三向或更高阶次的交叉点上连接。

如果定向为 TRUE,则 ST_LineMerge 将不会更改 LineStrings 内的点顺序,因此方向相反的线不会被合并

[注意]

仅与 MultiLineString/LineString 一起使用。 其他几何类型返回空的 GeometryCollection

这个函数是由 GEOS 模块执行的。

增强:3.3.0 接受定向参数。

需要 GEOS >= 3.11.0 才能使用定向参数。

可用性:1.1.0

[警告]

此函数剥离 M 维度。

示例

次数2

次数 2 的节点会被合并移除。

Code
SELECT ST_LineMerge('MULTILINESTRING((10 160,60 120),(120 140,60 120),(120 140,180 120))'
);
栅格输出
LINESTRING(10 160,60 120,120 140,180 120)
Figure
Geometry figure for visual-st-linemerge-01

次数3以上

在交点的度数大于2时,线段不会合并。

Code
SELECT ST_LineMerge('MULTILINESTRING((10 160,60 120),(120 140,60 120),(120 140,180 120),(100 180,120 140))'
);
栅格输出
MULTILINESTRING((10 160,60 120,120 140),(100 180,120 140),(120 140,180 120))
Figure
Geometry figure for visual-st-linemerge-02

不相交的线

如果由于不接触线而无法合并,则返回原始 MultiLineString。

Code
SELECT ST_LineMerge('MULTILINESTRING((-29 -27,-30 -29.7,-36 -31,-45 -33),(-45.2 -33.2,-46 -32))'
);
栅格输出
MULTILINESTRING((-45.2 -33.2,-46 -32),(-29 -27,-30 -29.7,-36 -31,-45 -33))
Figure
Geometry figure for visual-st-linemerge-03

有向参数

Lines with opposite directions are not merged if directed is TRUE.

Code
SELECT ST_LineMerge('MULTILINESTRING((60 30,10 70),(120 50,60 30),(120 50,180 30))',
TRUE);
栅格输出
MULTILINESTRING((120 50,60 30,10 70),(120 50,180 30))
Figure
Geometry figure for visual-st-linemerge-04

Z 维度处理

Code
SELECT ST_LineMerge('MULTILINESTRING((-29 -27 11,-30 -29.7 10,-36 -31 5,-45 -33 6),(-29 -27 12,-30 -29.7 5),(-45 -33 1,-46 -32 11))'
        );
栅格输出
LINESTRING Z (-30 -29.7 5,-29 -27 11,-30 -29.7 10,-36 -31 5,-45 -33 1,-46 -32 11)
Figure
Geometry figure for visual-st-linemerge-05