ST_HAUSDORFFDISTANCE
ST_HAUSDORFFDISTANCE (Hausdorff 거리)
두 GEOGRAPHY 객체 사이의 이산(discrete) Hausdorff 거리를 반환해요.
Hausdorff 거리는 두 객체가 얼마나 유사한지 나타내요. 한 객체의 각 점이 다른 객체의 어떤 점에 가까우면 두 객체는 유사한 것으로 간주돼요. Hausdorff 거리는 한 객체의 점과 다른 객체의 점 사이의 가장 큰 거리예요.
ST_HAUSDORFFDISTANCE는 정점(discrete points)만 비교하고 가장자리(edge)를 따라 있는 임의의 점은 비교하지 않아 계산된 이산 Hausdorff 거리를 반환해요.
본문
구문
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 |
+--------------------------+--------------------------+
더 알아보기
- Geospatial functions — 지리 공간 함수 모음
- ST_POINT — 점 생성
- TO_GEOGRAPHY — GEOGRAPHY 변환