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
。如果提供 CIRCULARSTRING
或 COMPOUNDCURVE
,它們會先使用 CurveToLine 轉換為線串,然後與 LINESTRING
的處理方式相同。
對於混合維度的輸入,結果等於最高維度元件幾何圖形的質心(因為較低維度的幾何圖形對質心的「權重」貢獻為零)。
請注意,對於多邊形幾何圖形,質心不一定位於多邊形的內部。例如,請參閱下面 C 形多邊形的質心圖。若要建構保證位於多邊形內部的點,請使用 ST_PointOnSurface。
2.3.0 版新增功能:支援 CIRCULARSTRING
和 COMPOUNDCURVE
(使用 CurveToLine)
可用性:2.4.0 版導入了對地理位置的支援。
這個方法實作了 OGC 簡單功能 SQL 1.1 實作規範。
這個方法實作了 SQL/MM 規範。SQL-MM 3: 8.1.4, 9.5.5
在以下圖示中,紅點是來源幾何圖形的質心。
![]()
|
![]()
|
![]()
|
![]()
|
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)