名称

ST_LineMerge — 返回通过缝合 MultiLineString 而形成的线。

概要

geometry ST_LineMerge(geometry amultilinestring);

geometry ST_LineMerge(geometry amultilinestring, boolean directed);

描述

返回一个 LineString 或 MultiLineString,该对象通过连接 MultiLineString 的线元素而形成。线在它们的端点以双向交点连接。线不会在 3 向或更高阶的交点处连接。

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

[Note]

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

由 GEOS 模块执行。

增强功能:3.3.0 接受 directed 参数。

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

可用性:1.1.0

[Warning]

此函数会去除 M 维度。

示例

合并具有不同方向的线。

SELECT ST_AsText(ST_LineMerge(
'MULTILINESTRING((10 160, 60 120), (120 140, 60 120), (120 140, 180 120))'
		));
--------------------------------------------
 LINESTRING(10 160,60 120,120 140,180 120)

线不会在度数 > 2 的交点处合并。

SELECT ST_AsText(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))

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

SELECT ST_AsText(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))

如果 directed = TRUE,则方向相反的线不会合并。

SELECT ST_AsText(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))

显示 Z 维度处理的示例。

SELECT ST_AsText(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)