Nom

ST_Centroid — Renvoie le centre géométrique d'une géométrie.

Synopsis

geometry ST_Centroid(geometry g1);

geography ST_Centroid(geography g1, boolean use_spheroid = true);

Description

Calcule un point qui est le centre de masse géométrique d'une géométrie. Pour [MULTI]POINTs, le centroïde est la moyenne arithmétique des coordonnées entrées. Pour les [MULTI]LINESTRINGs, le centroïde est calculé en utilisant la longueur pondérée de chaque segment de ligne. Pour les [MULTI]POLYGONs, le centroïde est calculé en termes de surface. Si une géométrie vide est fournie, une GEOMETRYCOLLECTION vide est renvoyée. Si NULL est fourni, NULL est renvoyé. Si CIRCULARSTRING ou COMPOUNDCURVE sont fournis, ils sont convertis en linestring avec CurveToLine d'abord, puis de la même manière que pour LINESTRING

Pour les entrées de dimensions mixtes, le résultat est égal au centroïde de la composante Géométries de la dimension la plus élevée (puisque les géométries de dimension inférieure n'apportent aucun "poids" au centroïde).

Notez que pour les géométries polygonales, le centroïde n'est pas nécessairement situé à l'intérieur du polygone. Par exemple, voir le diagramme ci-dessous du centroïde d'un polygone en forme de C. Pour construire un point garanti à l'intérieur d'un polygone, utilisez ST_PointOnSurface.

Nouveau dans la version 2.3.0 : prend en charge CIRCULARSTRING et COMPOUNDCURVE (en utilisant CurveToLine)

Disponibilité : la prise en charge du type geography a été introduite dans la version 2.4.0.

Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.

Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 8.1.4, 9.5.5

Exemples

Centroid of a MultiPoint.

Code
SELECT ST_Centroid(
  'MULTIPOINT (8 24,10 92,12 154,17 68,28 10,29 52,29 84,55 50,56 24,131 14,160 180,189 180)');
Export de raster
POINT(60.333 77.667)
Figure
Geometry figure for st-centroid-multipoint

Centroid of a LineString.

Code
SELECT ST_Centroid(
  'LINESTRING (190 160,10 190,40 90,20 70,10 10,30 40,30 10,110 40,70 10,110 10,140 40,140 10,160 30,180 10)');
Export de raster
POINT(76.191 79.876)
Figure
Geometry figure for visual-st-centroid-02

Centroid of a Polygon.

Code
SELECT ST_Centroid(
  'POLYGON ((190 190,10 190,10 10,190 10,190 20,160 30,60 30,60 130,190 140,190 190))');
Export de raster
POINT(80.251 113.405)
Figure
Geometry figure for visual-st-centroid-03

Centroid of the highest-dimension components of a GeometryCollection.

Code
SELECT ST_Centroid(
  'GEOMETRYCOLLECTION (POLYGON ((190 170,180 100,80 140,80 160,130 160,110 180,110 190,180 180,190 170)),
    LINESTRING (80 120,120 20,140 70,150 30,180 50,190 10),
    MULTIPOINT (19 150,22 49,30 13,32 101,45 35,67 88,75 16))');
Export de raster
POINT(143.361 148.263)
Figure
Geometry figure for visual-st-centroid-04
Code
SELECT ST_Centroid(g)
FROM  ST_GeomFromText('CIRCULARSTRING(0 2,-1 1,0 0,0.5 0,1 0,2 1,1 2,0.5 2,0 2)')  AS g ;
Export de raster
st_astext
-------------
 POINT(0.5 1)
(1 row)
Figure
Geometry figure for visual-st-centroid-05
Code
SELECT ST_Centroid(g)
FROM  ST_GeomFromText('COMPOUNDCURVE(CIRCULARSTRING(0 2,-1 1,0 0),(0 0,0.5 0,1 0), CIRCULARSTRING( 1 0,2 1,1 2),(1 2,0.5 2,0 2))' ) AS g;
Export de raster
st_astext
-------------
 POINT(0.5 1)
(1 row)
Figure
Geometry figure for visual-st-centroid-06

Centroids of the parts of a MultiPolygon.

Code
SELECT ST_Collect(ST_Centroid(geom) ORDER BY path)
FROM ST_Dump('MULTIPOLYGON (
    ((0 0,0 1,1 1,1 0,0 0)),
    ((2 2,2 3,3 3,3 2,2 2))
  )'::geometry);
Export de raster
MULTIPOINT((0.5 0.5),(2.5 2.5))
Figure
Geometry figure for visual-st-centroid-07