名称

ST_DumpSegments — 返回几何体中各个线段的 geometry_dump 行集。

语法

geometry_dump[] ST_DumpSegments(geometry geom);

说明

一个集返回函数 (SRF),用于提取几何体的线段。它返回一个 geometry_dump 行集,每行包含一个几何体(geom 字段)和一个整数数组(path 字段)。

  • geom 字段 LINESTRING 表示提供的几何体的线段。

  • path 字段(一个 integer[])是一个索引,用于枚举提供的几何体元素中线段的起始点位置。索引从 1 开始。例如,对于一个 LINESTRING,路径为 {i},其中 iLINESTRING 中第 nth 个线段的起始点。对于一个 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)

TIN 和三角形示例

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

另请参见

geometry_dump, 第 12.6 节,“PostGIS 几何体/地理/栅格转储函数”, ST_Dump, ST_DumpRings