名稱

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 參數設定加密每個線段的分數。每個線段將被分割成若干個等長子線段,其總長度的比例最接近給定的分數。

單位與幾何圖形的空間參考系統的單位相同。

[Note]

目前的實作僅支援頂點作為離散位置。可以擴展此功能以允許使用任意密度的點。

[Note]

我們指定的 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)
			

另請參閱

ST_HausdorffDistance