Name

ST_BuildArea — Crée une géométrie polygonale formée par le tracé d'une géométrie.

Synopsis

geometry ST_BuildArea(geometry geom);

Description

Crée une géométrie aréolaire formée par les lignes constitutives de la géométrie d'entrée. L'entrée peut être une LineString, MultiLineString, Polygon, MultiPolygon ou une GeometryCollection. Le résultat est un Polygone ou un MultiPolygone, en fonction de l'entrée. Si la ligne d'entrée ne forme pas de polygone, NULL est renvoyé.

Contrairement à ST_MakePolygon, cette fonction accepte les anneaux formés par plusieurs lignes et peut former un nombre quelconque de polygones.

Cette fonction convertit les anneaux intérieurs en trous. Pour transformer les anneaux intérieurs en polygones, utilisez ST_Polygonize.

[Note]

Les lignes d'entrée doivent être correctement nouées pour que cette fonction fonctionne correctement. ST_Node peut être utilisé pour nouer des lignes.

Si le réseau de lignes d'entrée est croisé, cette fonction produira des polygones non valides. ST_MakeValid peut être utilisé pour s'assurer que la sortie est valide.

Disponibilité : 1.1.0

Exemples

Lignes en entrée

Résultat de la zone

WITH data(geom) AS (VALUES
   ('LINESTRING (180 40, 30 20, 20 90)'::geometry)
  ,('LINESTRING (180 40, 160 160)'::geometry)
  ,('LINESTRING (160 160, 80 190, 80 120, 20 90)'::geometry)
  ,('LINESTRING (80 60, 120 130, 150 80)'::geometry)
  ,('LINESTRING (80 60, 150 80)'::geometry)
)
SELECT ST_AsText( ST_BuildArea( ST_Collect( geom )))
    FROM data;

------------------------------------------------------------------------------------------
POLYGON((180 40,30 20,20 90,80 120,80 190,160 160,180 40),(150 80,120 130,80 60,150 80))

Créer un donut à partir de deux polygones circulaires

SELECT ST_BuildArea(ST_Collect(inring,outring))
FROM (SELECT
    ST_Buffer('POINT(100 90)', 25) As inring,
    ST_Buffer('POINT(100 90)', 50) As outring) As t;

Voir aussi

ST_Collect, ST_MakePolygon, ST_MakeValid, ST_Node, ST_Polygonize, ST_BdPolyFromText, ST_BdMPolyFromText (wrappers de cette fonction avec l'interface standard de l'OGC)