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-index。
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)