ST_FRECHETDISTANCE
📄字数 610
👁️阅读量 加载中...
功能描述
基于计算离散 Fréchet 距离,实现计算仅限于两个几何图形的离散点的 Fréchet 距离的算法。
语法格式
sql
DOUBLE ST_FRECHETDISTANCE(GEOMETRY g1, GEOMETRY g2, DOUBLE densifyFrac = -1);参数说明
- g1:第一个目标 GEOMETRY 对象。
- g2:第二个目标 GEOMETRY 对象。
- densifyFrac:用于致密每个段的分数。指定此参数时,每个段将被分成多个等长的子段,其总长度的分数最接近给定的分数。
函数返回类型
DOUBLE 类型
使用说明
- Fréchet 距离是曲线之间相似性的度量,考虑了曲线上点的位置和顺序。 因此它比 Hausdorff 距离更好。
- 单位采用几何空间参考系的单位。
- 当前的实现仅支持顶点作为离散位置。 这可以扩展到允许使用任意密度的点。
- 指定的 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)