名前

ST_LineMerge — MULTILINESTRINGを縫い合わせて形成したラインを返します。

概要

geometry ST_LineMerge(geometry amultilinestring);

geometry ST_LineMerge(geometry amultilinestring, boolean directed);

説明

MULTILINESTRINGの要素を結合して形成されたLINESTRINGまたはMULTILINESTRINGを返します。ラインは2方向交点の終端で結合します。ラインは3方向以上の交点では結合しません。

directedがTRUEの場合には、ST_LineMergeはラインストリグ内のポイントの順序を変更しないため、反対方向のラインはマージされません。

[注記]

MULTILINESTRING/LINESTRINGでのみ使用します。他のジオメトリタイプでは空のGEMETRYCOLLECTIONを返します。

GEOSモジュールで実現しています。

Enhanced: 3.3.0 directedパラメータを付け付けるようになりました。

directedパラメータを使うにはGEOS 3.11.0以上が必要です。

Availability: 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

directedパラメーター

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