ST_HAUSDORFFDISTANCE

ST_HAUSDORFFDISTANCE (Hausdorff 거리)

두 GEOGRAPHY 객체 사이의 이산(discrete) Hausdorff 거리를 반환해요.

Hausdorff 거리는 두 객체가 얼마나 유사한지 나타내요. 한 객체의 각 점이 다른 객체의 어떤 점에 가까우면 두 객체는 유사한 것으로 간주돼요. Hausdorff 거리는 한 객체의 점과 다른 객체의 점 사이의 가장 큰 거리예요.

ST_HAUSDORFFDISTANCE는 정점(discrete points)만 비교하고 가장자리(edge)를 따라 있는 임의의 점은 비교하지 않아 계산된 이산 Hausdorff 거리를 반환해요.

출처: Snowflake SQL Reference - ST_HAUSDORFFDISTANCE

본문

구문

ST_HAUSDORFFDISTANCE( <geography_expression_1>, <geography_expression_2> )

인자

geography_expression_1

인자는 GEOGRAPHY 타입의 표현식이어야 해요.

geography_expression_2

인자는 GEOGRAPHY 타입의 표현식이어야 해요.

반환 값

이산 Hausdorff 거리를 도(degrees) 단위로 나타내는 REAL 타입의 값을 반환해요.

사용상 주의사항

  • 입력 점 중 하나 이상이 NULL이면 NULL을 반환해요.

예시

이 예시는 두 점(점 0 0과 점 0 1) 사이의 Hausdorff 거리를 반환해요:

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

다음 예시는 세 개의 Polygon(a, b, c)을 비교해요.

a와 c에서 가장 먼 점(점 0 1과 점 0 3) 사이의 거리는 a와 b에서 가장 먼 점(점 1 0과 점 2 0) 사이의 거리보다 커요.

결과적으로 a와 c에 대해 ST_HAUSDORFFDISTANCE가 반환하는 값은 더 작아요. 이것은 a와 c가 a와 b보다 더 유사함을 나타내요.

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 |
+--------------------------+--------------------------+

더 알아보기