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)