返回给定的两个Geometry对象的弗雷歇距离。

语法

float  ST_FrechetDistance(geometry  g1 , geometry  g2 , float  densifyFrac);

参数

参数名称 描述
g1 第一个Geometry对象。
g2 第二个Geometry对象。
densifyFrac 当指定参数densifyFrac时候,每一个分段会被分割成距离相等的更小分段,而所有分段的总距离最接近给出的大分段总距离。

描述

  • 弗雷歇距离是曲线之间相似度的量度,其中考虑了沿曲线的点的位置和顺序。因此,它通常比豪斯多夫距离更好。
  • 如果设置了densifyFrac参数,该函数在计算离散弗雷歇距离之前执行段致密化。每个段将被分成多个等长的子段,每个子段之于总段的比例接近给定的分数。
  • 当前实现仅支持将顶点视为离散位置,并且不限制点的数量。
  • 指定的densifyFrac越小,得到的弗雷歇距离越精确。但是,计算时间和内存使用量与子段数的平方成正比。

示例

默认调用:
SELECT ST_FrechetDistance('LINESTRING (1 0,2 0)'::geometry, 'LINESTRING (-1 0,0 0)'::geometry);
 st_frechetdistance
--------------------
                  2
(1 row)