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 參數設定加密每個線段的分數。每個線段將被分割成若干個等長子線段,其總長度的比例最接近給定的分數。
單位與幾何圖形的空間參考系統的單位相同。
![]() |
|
目前的實作僅支援頂點作為離散位置。可以擴展此功能以允許使用任意密度的點。 |
![]() |
|
我們指定的 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)