Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_GEOMETRICMEDIAN

📄字数 730
👁️阅读量 加载中...

功能描述

使用 Weiszfeld 算法计算多点几何的近似几何中值。

语法格式

sql
GEOMETRY ST_GEOMETRICMEDIAN (GEOMETRY geom, DOUBLE tolerance = NULL, INTEGER max_iter = 10000, BOOLEAN fail_if_not_converged = FALSE);

参数说明

  • geom:目标 GEOMETRY 对象。
  • tolerance:容差。可选,默认为 NULL。
    • 不指定容差:根据输入几何图形的范围计算公差值。
    • 指定容差:输入点 M 值将被解释为它们的相对权重。
  • max_iter:最大迭代次数。
  • fail_if_not_converged:未收敛时,是否报错。可选,默认:FALSE。

函数返回类型

GEOMETRY 类型

使用说明

  1. 几何中位数是最小化到输入点的距离总和的点。 它提供了一种中心性度量,与质心(质心)相比,它对异常点不太敏感。
  2. 该算法进行迭代,直到连续迭代之间的距离变化小于提供的容差参数 tolerance。
  3. 如果设置fail_if_not_converged 为 TRUE时,在 max_iter 次迭代后仍未满足此条件,则函数会产生错误并退出。
  4. 该函数支持 3d 并且不会丢失 z-index。
  5. 该功能支持 M 坐标。

示例

多点的几何中值和质心的比较:

sql
SQL> 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.017784212497283 25.017784212497283) |
+------------------+----------------------------------------------+

(1 row)