カテゴリ:

地理空間関数

ST_HAUSDORFFDISTANCE

2つの地理空間オブジェクト間の離散 ハウスドルフ距離 を返します。

ハウスドルフ距離は、2つのオブジェクトがどの程度類似しているかを示します。1つのオブジェクトの各ポイントが他のオブジェクトのポイントに近い場合、2つのオブジェクトは類似していると見なされます。ハウスドルフ距離は、1つのオブジェクト内のポイントと他のオブジェクト内のポイントとの間における最大距離です。

ST_HAUSDORFFDISTANCE エッジに沿った任意のポイントではなく、頂点(離散点)のみを比較することによって計算される離散ハウスドルフ距離を返します。

構文

ST_HAUSDORFFDISTANCE( <geography_expression_1> , <geography_expression_2> )

引数

地理式1

引数は GEOGRAPHY 型の式でなければなりません。

地理式2

引数は GEOGRAPHY 型の式でなければなりません。

戻り値

離散ハウスホルフ距離を度数で表すタイプ REAL の値を返します。

使用上の注意

  • 1つ以上の入力ポイントが NULL の場合は NULL を返します。

この例では、2つのポイント(ポイント 0 0 とポイント 0 1)の間のハウスドルフ距離を返します。

SELECT ST_HAUSDORFFDISTANCE(ST_POINT(0, 0), ST_POINT(0, 1));
+------------------------------------------------------+
| ST_HAUSDORFFDISTANCE(ST_POINT(0, 0), ST_POINT(0, 1)) |
|------------------------------------------------------|
|                                                    1 |
+------------------------------------------------------+

次の例では、3つのポリゴン(ab、および c)を比較します。

ac の最も遠いポイント間の距離(ポイント 0 1 とポイント 0 3)は、 ab の最も遠いポイント間の距離(ポイント 1 0 とポイント 2 0)よりも大きくなります。

その結果、 ST_HAUSDORFFDISTANCE によって返される値は、 ac の方が小さくなります。これは、 acab より類似していることを示しています。

WITH
    a AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 1, 1 0, 0 -1, -1 0))')),
    b AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 1, 2 0, 0 -1, -1 0))')),
    c AS (TO_GEOGRAPHY('POLYGON((-1 0, 0 3, 1 0, 0 -1, -1 0))'))
SELECT
    ST_HAUSDORFFDISTANCE(a, b) as distance_between_a_and_b,
    ST_HAUSDORFFDISTANCE(a, c) as distance_between_a_and_c;
+--------------------------+--------------------------+
| DISTANCE_BETWEEN_A_AND_B | DISTANCE_BETWEEN_A_AND_C |
|--------------------------+--------------------------|
|                        1 |                        2 |
+--------------------------+--------------------------+