Name

ST_FrechetDistance — 返回两个几何图形之间的 Fréchet 距离。

Synopsis

float ST_FrechetDistance(geometry g1, geometry g2, float densifyFrac = -1);

描述

基于计算离散 Fréchet 距离,实现计算仅限于两个几何图形的离散点的 Fréchet 距离的算法。 Fréchet 距离是曲线之间相似性的度量,考虑了曲线上点的位置和顺序。 因此它通常比 Hausdorff 距离更好。

当指定可选的 densifyFrac 时,该函数在计算离散 Fréchet 距离之前执行分段致密化。 densifyFrac 参数设置用于致密每个段的分数。 每个段将被分成多个等长的子段,其总长度的分数最接近给定的分数。

单位采用几何空间参考系的单位。

[Note]

当前的实现仅支持顶点作为离散位置。 这可以扩展到允许使用任意密度的点。

[Note]

我们指定的 densifyFrac 越小,我们获得的 Fréchet 距离就越准确。 但是,计算时间和内存使用量随着子段数量的平方而增加。

这个函数是由 GEOS 模块执行的。

可用性:2.4.0 - 需要 GEOS >= 3.7.0

示例

postgres=# SELECT st_frechetdistance('LINESTRING (0 0, 100 0)'::geometry, 'LINESTRING (0 0, 50 50, 100 0)'::geometry);
 st_frechetdistance
--------------------
   70.7106781186548
(1 row)
                        
SELECT st_frechetdistance('LINESTRING (0 0, 100 0)'::geometry, 'LINESTRING (0 0, 50 50, 100 0)'::geometry, 0.5);
 st_frechetdistance
--------------------
                 50
(1 row)
                        

相关信息

ST_HausdorffDistance