Name

ST_Centroid — Restituisce il centro geometrico di una geometria.

Synopsis

geometry ST_Centroid(geometry g1);

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

Descrizione

Calcola un punto che è il centro di massa geometrico di una geometria. Per [MULTI]POINTs, il centroide è la media aritmetica delle coordinate immesse. Per [MULTI]LINESTRINGs, il centroide viene calcolato utilizzando la lunghezza ponderata di ciascun segmento di linea. Per [MULTI]POLYGONs, il centroide viene calcolato in termini di area. Se viene fornita una geometria vuota, viene restituita una GEOMETRYCOLLECTION vuota. Se viene fornito NULL viene restituito NULL. Se vengono fornite CIRCULARSTRING o COMPOUNDCURVE, queste vengono convertite in linestring con CurveToLine e poi come per LINESTRING

Per gli input a dimensione mista, il risultato è uguale al centroide delle geometrie componenti di dimensione più elevata (poiché le geometrie di dimensione inferiore contribuiscono al centroide con un "peso" nullo).

Si noti che per le geometrie poligonali il centroide non si trova necessariamente all'interno del poligono. Ad esempio, si veda la figura seguente del centroide di un poligono a forma di C. Per costruire un punto con garanzia di giacenza nell'interno di un poligono si usa ST_PointOnSurface.

New in 2.3.0 : supports CIRCULARSTRING and COMPOUNDCURVE (using CurveToLine)

Availability: 2.4.0 support for geography was introduced.

Questo metodo implementa le OGC Simple Features Implementation Specification for SQL 1.1.

Questo metodo implementa la specifica SQL/MM. SQL-MM 3: 8.1.4, 9.5.5

Esempi

In the following illustrations the red dot is the centroid of the source geometry.

Centroide di un MULTIPOINT

Centroide di una LINESTRING

Centroide di un POLYGON

Centroide di una GEOMETRYCOLLECTION

SELECT ST_AsText(ST_Centroid('MULTIPOINT ( -1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 0, 6 0, 7 8, 9 8, 10 6 )'));
                st_astext
------------------------------------------
 POINT(2.30769230769231 3.30769230769231)
(1 row)

SELECT ST_AsText(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 ;
------------------------------------------
POINT(0.5 1)


SELECT ST_AsText(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;
------------------------------------------
POINT(0.5 1)