ST_Node — ラインストリングの集合にノードを作成します。
geometry ST_Node(
geometry geom)
;
ラインストリングのコレクションに完全にノードが加えられたものを表現する(マルチ)ラインストリングを返します。全ての入力ノードを保存したうえで、可能な最低の数だけノードを加えています。結果の線はディゾルブされています (重複線が削除されます)。
これはST_Polygonizeへの入力に適した、完全にノードを加えた線を生成する良い方法です。
ST_UnaryUnion も、ラインのノード追加とディゾルブに使うことができます。gridSizeを指定する任意引数を与えると、より単純かつよりロバストな出力が得られます。集約関数版についてはST_Unionをご覧下さい。
この関数は3次元に対応し、Z値を削除しません。
GEOSモジュールで実現しています。
Availability: 2.0.0
Changed: 2.4.0 この関数は内部でGEOSUnaryUnionの替わりにGEOSNodeを使用しています。ラインストリングの並び順と方向がPostGIS 2.4より前のものと違うことになるかも知れません。
自己交差する3次元ラインストリグにノードを加えます。
SELECT ST_AsText( ST_Node('LINESTRINGZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'::geometry) ) As output; output ----------- MULTILINESTRING Z ((0 0 0,5 5 4.5),(5 5 4.5,10 10 10,0 10 5,5 5 4.5),(5 5 4.5,10 0 3))
線を共有する二つのラインストリングにノードを加えます。結果の線はディゾルブされます。
SELECT ST_AsText( ST_Node('MULTILINESTRING ((2 5, 2 1, 7 1), (6 1, 4 1, 2 3, 2 5))'::geometry) ) As output; output ----------- MULTILINESTRING((2 5,2 3),(2 3,2 1,4 1),(4 1,2 3),(4 1,6 1),(6 1,7 1))