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]

我们指定的密度越小,得到的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