返回给定的两个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)