ST_DIFFERENCE

ST_DIFFERENCE

두 개의 입력 GEOGRAPHY 객체가 주어졌을 때, 두 번째 객체에는 없고 첫 번째 객체에 있는 점(즉 두 객체의 차집합)을 나타내는 GEOGRAPHY 객체를 반환해요.

출처: Snowflake SQL Reference - ST_DIFFERENCE

본문

구문

ST_DIFFERENCE( <geography_expression_1> , <geography_expression_2> )

인자

  • GEOGRAPHY 객체예요.
  • GEOGRAPHY 객체예요.

반환 값

함수는 GEOGRAPHY 타입의 값을 반환해요. geography_expression_1의 모든 점이 geography_expression_2에 있으면(즉 차집합이 빈 점 집합이면), 함수는 NULL을 반환해요.

사용상 주의사항

  • 한 입력 객체의 정점 중 하나라도 다른 입력 객체의 경계에 있으면(정점 제외), 출력이 정확하지 않을 수 있어요.
  • 이 함수는 정규화되고/거나 최소한의 결과를 생성한다고 보장되지 않아요. 예를 들어 출력이 실제로 하나의 직선 세그먼트를 이루는 여러 점을 포함하는 LineString으로 구성될 수 있어요.

예시

다음 예시는 두 입력 GEOGRAPHY 객체 사이의 차집합을 나타내는 GEOGRAPHY 객체를 반환해요.

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT = 'WKT';

SELECT ST_DIFFERENCE(
  TO_GEOGRAPHY('POLYGON((0 0, 1 0, 2 1, 1 2, 2 3, 1 4, 0 4, 0 0))'),
  TO_GEOGRAPHY('POLYGON((3 0, 3 4, 2 4, 1 3, 2 2, 1 1, 2 0, 3 0))'))
AS difference_between_objects;

이 예시는 다음 출력을 생성해요.

+-------------------------------------------------------------------------------------------------------------+
| DIFFERENCE_BETWEEN_OBJECTS                                                                                  |
|-------------------------------------------------------------------------------------------------------------|
| POLYGON((1 1,1.5 1.500171359,1 2,1.5 2.500285599,1 3,1.5 3.500399839,1 4,0 4,0 0,1 0,1.5 0.5000571198,1 1)) |
+-------------------------------------------------------------------------------------------------------------+

더 알아보기