ST_DumpSegments — ジオメトリ内の辺の行であるgeometry_dump
行の集合を返します。
geometry_dump[] ST_DumpSegments(
geometry geom)
;
ジオメトリの辺を抽出する、集合を返す関数 (SRF=Set-Returning Function)です。ジオメトリ (geom
フィールド)と整数配列 (path
フィールド)からなるgeometry_dump行の集合を返します。
geom
フィールドには、与えられたジオメトリの辺を表現するLINESTRING
が入ります。
path
フィールド (integer[]
)は、与えられたジオメトリの要素内の辺の始点位置を列挙するインデックスです。インデックスは1始まりです。たとえば、LINESTRING
に対しては、LINESTRING
のn番目
の辺をi
とすると、{i}
となります。POLYGON
に対しては、i
を環番号 (1が外環、続いて内環)、j
を環の辺の始点位置とすると、{i,j}
となります。
Availability: 3.2.0
この関数は三角形と不規則三角網 (TIN)に対応しています。
この関数は3次元に対応し、Z値を削除しません。
SELECT path, ST_AsText(geom) FROM ( SELECT (ST_DumpSegments(g.geom)).* FROM (SELECT 'GEOMETRYCOLLECTION( LINESTRING(1 1, 3 3, 4 4), POLYGON((5 5, 6 6, 7 7, 5 5)) )'::geometry AS geom ) AS g ) j; path │ st_astext --------------------------------- {1,1} │ LINESTRING(1 1,3 3) {1,2} │ LINESTRING(3 3,4 4) {2,1,1} │ LINESTRING(5 5,6 6) {2,1,2} │ LINESTRING(6 6,7 7) {2,1,3} │ LINESTRING(7 7,5 5) (5 rows)
-- Triangle -- SELECT path, ST_AsText(geom) FROM ( SELECT (ST_DumpSegments(g.geom)).* FROM (SELECT 'TRIANGLE(( 0 0, 0 9, 9 0, 0 0 ))'::geometry AS geom ) AS g ) j; path │ st_astext --------------------------------- {1,1} │ LINESTRING(0 0,0 9) {1,2} │ LINESTRING(0 9,9 0) {1,3} │ LINESTRING(9 0,0 0) (3 rows)
-- TIN -- SELECT path, ST_AsEWKT(geom) FROM ( SELECT (ST_DumpSegments(g.geom)).* FROM (SELECT 'TIN((( 0 0 0, 0 0 1, 0 1 0, 0 0 0 )), (( 0 0 0, 0 1 0, 1 1 0, 0 0 0 )) )'::geometry AS geom ) AS g ) j; path │ st_asewkt --------------------------------- {1,1,1} │ LINESTRING(0 0 0,0 0 1) {1,1,2} │ LINESTRING(0 0 1,0 1 0) {1,1,3} │ LINESTRING(0 1 0,0 0 0) {2,1,1} │ LINESTRING(0 0 0,0 1 0) {2,1,2} │ LINESTRING(0 1 0,1 1 0) {2,1,3} │ LINESTRING(1 1 0,0 0 0) (6 rows)