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のノードはマージされます。
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)
インタセクト位置で方向数 > 2 となるラインはマージされません。
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))
接触するラインが無くマージができない場合には、元の MULTILINESTRING が返されます。
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))
directed が TRUE の場合には反対方向のラインはマージされません。
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))
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)