Catégories :

Fonctions géospatiales

ST_CENTROID

Returns the Point representing the geometric center of a GEOGRAPHY or GEOMETRY object.

Syntaxe

ST_CENTROID( <geography_or_geometry_expression> )

Arguments

geography_or_geometry_expression

The argument must be an expression of type GEOGRAPHY or GEOMETRY.

Renvoie

Returns a GEOGRAPHY or GEOMETRY object for the Point that represents geometric center of the input object.

Notes sur l’utilisation

  • Renvoie NULL si l’entrée est un NULL.

  • Si l’objet d’entrée est une GeometryCollection qui contient différents types d’objet (polygones, LineStrings et points), ST_CENTROID utilise le type avec la dimension la plus élevée pour déterminer le centre géométrique. Par exemple :

    • Si la GeometryCollection contient des polygones, des LineStrings et des points, ST_CENTROID utilise les polygones et ignore les LineStrings et les points de la collection.

    • Si la GeometryCollection contient des LineStrings et des points, ST_CENTROID utilise les LineStrings et ignore les points de la collection.

  • For GEOMETRY objects, the returned GEOMETRY object has the same SRID as the input.

Exemples

GEOGRAPHY Examples

L’exemple suivant renvoie le point qui représente le centre géométrique d’une LineString.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'LINESTRING(0 0, 0 -2)'
    )
) as center_of_linestring;
+----------------------+
| CENTER_OF_LINESTRING |
|----------------------|
| POINT(0 -1)          |
+----------------------+

L’exemple suivant renvoie le point qui représente le centre géométrique d’un polygone.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'
    )
) as center_of_polygon;
+------------------------+
| CENTER_OF_POLYGON      |
|------------------------|
| POINT(15 15.014819855) |
+------------------------+

L’exemple suivant renvoie le point qui représente le centre géométrique d’une GeometryCollection. Cette collection contient un polygone, une LineString et un point. ST_CENTROID utilise uniquement le polygone (et ignore la LineString et le point) lors de la détermination du centre géométrique.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'GEOMETRYCOLLECTION(POLYGON((10 10, 10 20, 20 20, 20 10, 10 10)), LINESTRING(0 0, 0 -2), POINT(50 -50))'
    )
) as center_of_collection_with_polygons;
+------------------------------------+
| CENTER_OF_COLLECTION_WITH_POLYGONS |
|------------------------------------|
| POINT(15 15.014819855)             |
+------------------------------------+

GEOMETRY Examples

The following example computes the centroid of a simple rectangular Polygon. Note how the result differs from the result when using ST_CENTROID with a GEOGRAPHY object

SELECT ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'));
+--------------------------------------------------------------------------+
| ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))')) |
|--------------------------------------------------------------------------|
| POINT(15 15)                                                             |
+--------------------------------------------------------------------------+
Revenir au début