ST_DumpSegments — 傳回幾何圖形中線段的 geometry_dump
列集合。
geometry_dump[] ST_DumpSegments(
geometry geom)
;
一個傳回集合的函數 (SRF),用於提取幾何圖形的線段。它會傳回一組 geometry_dump 列,每列都包含一個幾何圖形(geom
欄位)和一個整數陣列(path
欄位)。
geom
欄位的 LINESTRING
代表所提供幾何圖形的線性線段,而 CIRCULARSTRING
代表弧線線段。
path
欄位 (一個 integer[]
) 是一個索引,用於列舉所提供幾何圖形元素中線段起點的位置。索引從 1 開始。例如,對於 LINESTRING
,路徑為 {i}
,其中 i
是 LINESTRING
中第 n
個線段的起點。對於 POLYGON
,路徑為 {i,j}
,其中 i
是環的編號(1 是外部環;內部環依序編號),而 j
是環中線段的起點位置。
可用性:3.2.0
此函數支援三角形和不規則三角網格曲面 (TIN)。
此函數支援 3D,並且不會捨棄 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)