Name

ST_DumpSegments — Renvoie un ensemble de lignes geometry_dump pour les segments d'une géométrie.

Synopsis

geometry_dump[] ST_DumpSegments(geometry geom);

Description

Une fonction de retour d'ensemble (SRF) qui extrait les segments d'une géométrie. Elle renvoie un ensemble de geometry_dump lignes, chacune contenant une géométrie (champ geom) et un tableau d'entiers (champ path).

  • le champ geom LINESTRINGs représente les segments linéaires de la géométrie fournie, tandis que CIRCULARSTRINGs représente les segments d'arc.

  • le champ path (un integer[]) est un index énumérant les positions des points de départ des segments dans les éléments de la géométrie fournie. Les indices sont basés sur 1. Par exemple, pour un LINESTRING, les chemins sont {i}i est le nième point de départ du segment dans le LINESTRING. Pour un POLYGONE, les chemins sont {i,j}i est le numéro de l'anneau (1 est l'anneau extérieur ; les anneaux intérieurs suivent) et j est la position du point de départ du segment dans l'anneau.

Disponibilité : 3.2.0

Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).

Cette fonction prend en charge la 3D et ne supprime pas l'indice z.

Exemples de géométrie standard

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)

Exemples de TIN et de triangles

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