PostGis计算几何中心点(ST_Centroid函数)

  • Post author:
  • Post category:其他



概要

geometry ST_Centroid(几何 g1) ;

geography ST_Centroid(地理 g1,布尔 use_spheroid = true);


描述

计算几何的几何中心,或等效地将几何的质心计算为POINT。对于[ MULTI] POINT,将其计算为输入坐标的算术平均值。对于[ MULTI] LINESTRING,将其计算为每个线段的加权长度。对于[ MULTI] POLYGON,“重量”是根据面积来考虑的。如果提供了空的几何体,GEOMETRYCOLLECTION则返回一个空 的。如果 NULL提供,NULL则返回。如果 提供CIRCULARSTRING或COMPOUNDCURVE,则首先将它们转换为CurveToLine的线串,然后与 LINESTRING

2.3.0中的新功能:支持CIRCULARSTRING和COMPOUNDCURVE(使用CurveToLine)

可用性:2.4.0引入了对地理的支持。

重心等于最大维的组件几何的集合的重心(因为较低维的几何对重心的贡献为零“重量”)。


此方法实现了

SQL 1.1



OpenGIS简单功能实现规范。


此方法实现SQL / MM规范。SQL-MM 3:8.1.4、9.5.5


例子

在以下每个插图中,绿点代表源几何图形的质心。

Centroid of a


MULTIPOINT

Centroid of a

LINESTRING

Centroid of a


POLYGON

Centroid of a


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)


常用PostgreSQL 空间处理函数