このトピックでは、ST_FrechetDistance関数について説明します。 この関数は、2つのジオメトリオブジェクト間のFrechet距離を計算します。
構文
float ST_FrechetDistance (ジオメトリg1、ジオメトリg2、float densifyFrac);パラメーター
| パラメーター | 説明 |
| g1 | 指定する最初のジオメトリオブジェクト。 |
| g2 | 指定する2番目のジオメトリオブジェクト。 |
| densifyFrac | この関数が各セグメントを高密度化する割合。 各セグメントは、いくつかの等しい長さのサブセグメントに分割され、その全長の分数は、指定された分数に最も近い。 |
説明
- フレシェ距離は、曲線間の類似性の尺度である。 この関数がFrechet距離を計算すると、この関数は曲線に沿った点の位置と順序を考慮します。 したがって、フレシェ距離はハウスドルフ距離よりも正確です。
- densifyFracパラメーターを指定すると、この関数はFrechet距離を計算する前にセグメントの高密度化を実行します。 各セグメントは、いくつかの等しい長さのサブセグメントに分割され、その全長の分数は、指定された分数に最も近い。
- この関数は、離散位置として頂点のみをサポートし、ポイントの数を制限しません。
- densifyFracパラメータの値が小さいほど、より正確なFrechet距離を示す。 しかしながら、計算時間およびメモリ使用量は、サブセグメントの数の2乗に比例する。
例
デフォルトのパラメーター設定を使用して、2つのジオメトリオブジェクト間のFrechet距離を計算します。
SELECT ST_FrechetDistance('LINESTRING (1 0,2 0)': geometry, 'LINESTRING (-1 0,0 0)'::geometry);
st_frechetdistance
--------------------
2
(1行)