名稱

ST_Centroid — 傳回幾何圖形的幾何中心。

概要

geometry ST_Centroid(geometry g1);

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

描述

計算一個點,該點是幾何圖形的幾何質心。對於 [MULTI]POINT,質心是輸入座標的算術平均值。對於 [MULTI]LINESTRING,質心是使用每個線段的加權長度計算的。對於 [MULTI]POLYGON,質心是根據面積計算的。如果提供空的幾何圖形,則傳回空的 GEOMETRYCOLLECTION。如果提供 NULL,則傳回 NULL。如果提供 CIRCULARSTRINGCOMPOUNDCURVE,它們會先使用 CurveToLine 轉換為線串,然後與 LINESTRING 的處理方式相同。

對於混合維度的輸入,結果等於最高維度元件幾何圖形的質心(因為較低維度的幾何圖形對質心的「權重」貢獻為零)。

請注意,對於多邊形幾何圖形,質心不一定位於多邊形的內部。例如,請參閱下面 C 形多邊形的質心圖。若要建構保證位於多邊形內部的點,請使用 ST_PointOnSurface

2.3.0 版新增功能:支援 CIRCULARSTRINGCOMPOUNDCURVE(使用 CurveToLine)

可用性:2.4.0 版導入了對地理位置的支援。

這個方法實作了 OGC 簡單功能 SQL 1.1 實作規範。

這個方法實作了 SQL/MM 規範。SQL-MM 3: 8.1.4, 9.5.5

範例

在以下圖示中,紅點是來源幾何圖形的質心。

MULTIPOINT 的質心

LINESTRING 的質心

POLYGON 的質心

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)