ST_GeometricMedian — 返回多点的几何中位数。
geometry ST_GeometricMedian (
geometry geom, float8 tolerance = NULL, int max_iter = 10000, boolean fail_if_not_converged = false)
;
使用 Weiszfeld 算法计算多点几何的近似几何中位数。几何中位数是使到输入点的距离总和最小的点。它提供了一种中心度量,与质心(质心)相比,对异常点不太敏感。
该算法会一直迭代,直到连续迭代之间的距离变化小于提供的 tolerance
参数。如果在 max_iterations
次迭代后仍未满足此条件,则该函数会产生一个错误并退出,除非 fail_if_not_converged
设置为 false
(默认值)。
如果未提供 tolerance
参数,则容差值将根据输入几何的范围进行计算。
如果存在,则输入点 M 值将被解释为它们的相对权重。
可用性:2.3.0
增强:2.5.0 添加了对 M 作为点权重的支持。
此函数支持 3d,并且不会删除 z 索引。
此函数支持 M 坐标。
WITH test AS ( SELECT 'MULTIPOINT((10 10), (10 40), (40 10), (190 190))'::geometry geom) SELECT ST_AsText(ST_Centroid(geom)) centroid, ST_AsText(ST_GeometricMedian(geom)) median FROM test; centroid | median --------------------+---------------------------------------- POINT(62.5 62.5) | POINT(25.01778421249728 25.01778421249728) (1 row)