返回給定的兩個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)