Categorias:

Funções geoespaciais

ST_CENTROID

Retorna o ponto que representa o centro geométrico de um objeto GEOGRAPHY ou GEOMETRY.

Sintaxe

ST_CENTROID( <geography_or_geometry_expression> )
Copy

Argumentos

geography_or_geometry_expression

O argumento deve ser uma expressão do tipo GEOGRAPHY ou GEOMETRY.

Retornos

Retorna um objeto GEOGRAPHY ou GEOMETRY para o ponto que representa o centro geométrico do objeto de entrada.

Notas de uso

  • Retorna NULL se a entrada for NULL.

  • Se o objeto de entrada for um GeometryCollection que contém diferentes tipos de objetos (polígonos, LineStrings e pontos), ST_CENTROID usa o tipo com a dimensão mais alta para determinar o centro geométrico. Por exemplo:

    • Se GeometryCollection contiver polígonos, LineStrings e pontos, ST_CENTROID usa os polígonos e ignora os LineStrings e pontos da coleção.

    • Se GeometryCollection contiver LineStrings e pontos, ST_CENTROID usa o LineStrings e ignora os pontos da coleção.

  • Para objetos GEOMETRY, o objeto GEOMETRY retornado tem o mesmo SRID que a entrada.

Exemplos

Exemplos GEOGRAPHY

O seguinte exemplo retorna o ponto que representa o centro geométrico de um LineString.

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

O seguinte exemplo retorna o ponto que representa o centro geométrico de um polígono.

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

O seguinte exemplo retorna o ponto que representa o centro geométrico de um GeometryCollection. Esta coleção contém um polígono, LineString e ponto. ST_CENTROID só utiliza o polígono (e ignora o LineString e o ponto) ao determinar o centro geométrico.

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

Exemplos GEOMETRY

O exemplo a seguir calcula o centróide de um polígono retangular simples. Observe como o resultado difere do resultado ao usar ST_CENTROID com um objeto GEOGRAPHY.

SELECT ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'));
Copy
+--------------------------------------------------------------------------+
| ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))')) |
|--------------------------------------------------------------------------|
| POINT(15 15)                                                             |
+--------------------------------------------------------------------------+
Copy