ST_FrechetDistance — 返回两个几何图形之间的Fréchet距离。
float ST_FrechetDistance(
geometry g1, geometry g2, float densifyFrac = -1)
;
实现了计算两个几何形状的离散点的Fréchet距离的算法,基于 离散Fréchet距离的计算 。Fréchet距离是曲线之间的相似性度量,它考虑了曲线上点的位置和顺序。因此,它往往比Hausdorff距离更好。
如果指定了可选的densifyFrac,则此函数会在计算离散Fréchet距离之前执行线段加密。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)