ST_MAKEPOLYGONORIENTED

ST_MAKEPOLYGONORIENTED

ST_MAKEPOLYGONORIENTED() 함수는 구멍(hole)이 없는 Polygon을 나타내는 GEOGRAPHY 객체를 구성해요. 이 함수는 지정한 LineString을 바깥쪽 루프(outer loop)로 사용해요.

이 함수는 루프의 방향(orientation)을 교정하려고 시도하지 않으므로, 지구의 절반 이상을 차지하는 Polygon을 만들 수 있어요. 반면 ST_MAKEPOLYGON은 그러한 큰 도형의 방향을 뒤집어요.

출처: Snowflake SQL Reference

본문

문법

ST_MAKEPOLYGONORIENTED( <geography_expression> )

인자

geography_expression — 외곽 루프로 사용할 LineString GEOGRAPHY 객체예요.

반환

이 함수는 GEOGRAPHY 타입 값을 반환해요.

사용 메모

  • Polygon의 선은 루프를 형성해야 해요. 즉, LineString을 정의하는 점(Point) 시퀀스의 마지막 점은 시퀀스의 첫 번째 점과 같아야 해요.
  • 루프를 따라갈 때 Polygon의 안쪽은 왼쪽에, 바깥쪽은 오른쪽에 있어야 해요.

예제

다음 예제는 ST_MAKEPOLYGONORIENTED 함수 사용법을 보여줘요. 아래 점 시퀀스는 너비 1도, 높이 2도의 대원(great circle) 사각 영역을 정의해요. Polygon의 왼쪽 아래 모서리는 적도(위도)와 그리니치(경도)에서 시작해요. 시퀀스의 마지막 점은 첫 번째 점과 같아 루프를 완성해요.

이 예제는 Polygon의 GEOGRAPHY 객체를 ST_AREA 함수에 전달해 Polygon의 면적을 반환해요.

SELECT ST_AREA(
  ST_MAKEPOLYGONORIENTED(
    TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0, 1.0 2.0, 0.0 2.0, 0.0 0.0)')
  )
) AS area_of_polygon;

+------------------+
|  AREA_OF_POLYGON |
|------------------|
| 24724306355.5504 |
+------------------+

다음 예제는 같은 도형이지만 반대 방향이에요. Polygon 면적의 차이에서 알 수 있듯이, 이 Polygon은 이전 도형을 제외한 지구 전체를 나타내요.

SELECT ST_AREA(
  ST_MAKEPOLYGONORIENTED(
    TO_GEOGRAPHY('LINESTRING(0.0 0.0, 0.0 2.0, 1.0 2.0, 1.0 0.0, 0.0 0.0)')
  )
) AS area_of_polygon;

+-----------------+
| AREA_OF_POLYGON |
|-----------------|
| 510041348811633 |
+-----------------+

더 알아보기