Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_FRECHETDISTANCE

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

功能描述

基于计算离散 Fréchet 距离,实现计算仅限于两个几何图形的离散点的 Fréchet 距离的算法。

语法格式

sql
DOUBLE ST_FRECHETDISTANCE(GEOMETRY g1, GEOMETRY g2, DOUBLE densifyFrac = -1);

参数说明

  • g1:第一个目标 GEOMETRY 对象。
  • g2:第二个目标 GEOMETRY 对象。
  • densifyFrac:用于致密每个段的分数。指定此参数时,每个段将被分成多个等长的子段,其总长度的分数最接近给定的分数。

函数返回类型

DOUBLE 类型

使用说明

  1. Fréchet 距离是曲线之间相似性的度量,考虑了曲线上点的位置和顺序。 因此它比 Hausdorff 距离更好。
  2. 单位采用几何空间参考系的单位。
  3. 当前的实现仅支持顶点作为离散位置。 这可以扩展到允许使用任意密度的点。
  4. 指定的 densifyFrac 越小,获得的 Fréchet 距离就越准确。 但是,计算时间和内存使用量随着子段数量的平方而增加。

示例

sql
SQL> SELECT ST_FRECHETDISTANCE('LINESTRING (0 0, 100 0)'::GEOMETRY, 'LINESTRING (0 0, 50 50, 100 0)'::GEOMETRY);

+--------------+
|    EXPR1     |
+--------------+
| 7.071068e+01 |
+--------------+

(1 row)

SQL> SELECT ST_FRECHETDISTANCE('LINESTRING (0 0, 100 0)'::GEOMETRY, 'LINESTRING (0 0, 50 50, 100 0)'::GEOMETRY, 0.5);

+--------------+
|    EXPR1     |
+--------------+
| 5.000000e+01 |
+--------------+

(1 row)