ST_FrechetDistance — 返回两个几何图形之间的弗雷谢距离。
float ST_FrechetDistance(
geometry g1, geometry g2, float densifyFrac = -1)
;
实现算法,用于计算基于 计算离散弗雷谢距离 的两个几何图形的离散点上的弗雷谢距离。弗雷谢距离是衡量曲线之间相似性的度量,它考虑了曲线沿线的点的定位和排序。因此,它通常比豪斯多夫距离更好。
当指定可选的 densifyFrac 时,此函数在计算离散弗雷谢距离之前执行线段密集化。densifyFrac 参数设置密集化每个线段的比例。每个线段将被分成多个等长子线段,其总长度的比例最接近给定比例。
单位以几何图形的空间参考系统的单位表示。
当前实现仅支持顶点作为离散位置。这可以扩展到允许使用任意密度的点。 |
我们指定的 densifyFrac 越小,得到的弗雷谢距离越准确。但是,计算时间和内存使用量随子线段数量的平方而增加。 |
由 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)