ST_Centroid — Restituisce il centro geometrico di una geometria.
geometry ST_Centroid(
geometry g1)
;
geography ST_Centroid(
geography g1, boolean use_spheroid = true)
;
Calcola un punto che è il centro di massa geometrico di una geometria. Per [MULTI
]POINT
s, il centroide è la media aritmetica delle coordinate immesse. Per [MULTI
]LINESTRING
s, il centroide viene calcolato utilizzando la lunghezza ponderata di ciascun segmento di linea. Per [MULTI
]POLYGON
s, 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
In the following illustrations the red dot is the centroid of the source geometry.
|
|
|
|
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)