ST_AZIMUTH

ST_AZIMUTH

원점(관측자 위치)을 나타내는 Point와 지정된 Point 사이의 방위각(azimuth)을 라디안 단위로 돌려주는 공간 함수예요. 두 Point 모두 GEOGRAPHY 또는 GEOMETRY 객체여야 해요.

출처: 공식 문서

본문

원점(관측자의 위치)을 나타내는 Point와 지정된 Point가 주어졌을 때 방위각을 라디안으로 반환합니다. 두 Point 모두 GEOGRAPHY 또는 GEOMETRY 객체여야 합니다.

방위각(azimuth)은 원점의 관측자가 북쪽(GEOGRAPHY 객체의 경우) 또는 Y축(GEOMETRY 객체의 경우)을 향하고 있을 때 두 Point 사이의 각도입니다. 각도는 시계 방향으로 양수이며 다음과 같습니다:

  • 북쪽을 가리키는 선분이면 0.
  • 동쪽을 가리키는 선분이면 π/2.
  • 남쪽을 가리키는 선분이면 π.
  • 서쪽을 가리키는 선분이면 3π/2.

두 Point가 같은 위치이면 함수는 NULL을 반환합니다.

GEOGRAPHY 객체의 경우 구형 지구에서 여기에 설명된 공식이 방위각을 결정하는 데 사용됩니다.

주의 타원 지구 모델을 사용하는 시스템은 더 복잡한 방위각 알고리즘을 사용하며, 이는 때때로 크게 다른 결과를 산출합니다.

구문 (Syntax)

ST_AZIMUTH( <geography_expression_for_origin> , <geography_expression_for_target> )
ST_AZIMUTH( <geometry_expression_for_origin> , <geometry_expression_for_target> )

인자 (Arguments)

geography_expression_for_origin

원점(관측자가 위치한 곳)을 나타내는 Point인 GEOGRAPHY 객체.

geography_expression_for_target

방위각을 계산하려는 Point인 GEOGRAPHY 객체.

geometry_expression_for_origin

원점(관측자가 위치한 곳)을 나타내는 Point인 GEOMETRY 객체.

geometry_expression_for_target

방위각을 계산하려는 Point인 GEOMETRY 객체.

반환값 (Returns)

라디안 단위의 방위각인 REAL 타입의 값을 반환합니다.

사용 참고 (Usage notes)

  • 입력 지리 공간 객체 중 하나가 Point가 아니면 함수는 오류를 보고합니다.
  • 입력 Point 중 하나 또는 둘 다 NULL이면 NULL을 반환합니다.

예제 (Examples)

GEOGRAPHY 예제

다음 예제는 원점 Point(0, 1)와 대상 Point(0, 0)에 대한 라디안 단위의 방위각을 반환합니다:

SELECT ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(0 0)')
);
+---------------------------------+
|                     ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(0 0)') |
|                               ) |
|---------------------------------|
|                     3.141592654 |
+---------------------------------+

다음 예제는 원점 Point(0, 1)와 대상 Point(1, 2)에 대한 도(degrees) 단위의 방위각을 반환합니다:

SELECT DEGREES(ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(1 2)')
));
+---------------------------------+
|             DEGREES(ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(1 2)') |
|                              )) |
|---------------------------------|
|                    44.978182941 |
+---------------------------------+

GEOMETRY 예제

다음 예제는 원점 Point(0, 1)와 대상 Point(0, 0)에 대한 라디안 단위의 방위각을 반환합니다:

SELECT ST_AZIMUTH(
    TO_GEOMETRY('POINT(0 1)', TO_GEOMETRY('POINT(0 0)')
);

+------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 1)'), TO_GEOMETRY('POINT(0 0)')) |
|------------------------------------------------------------------|
| 3.141592654                                                      |
+------------------------------------------------------------------+

다음 예제는 원점 Point(0, 1)와 대상 Point(0.707, 0.707)에 대한 도 단위의 방위각을 반환합니다:

SELECT ST_AZIMUTH(
    TO_GEOMETRY('POINT(0 0)', TO_GEOMETRY(0.707 0.707')
);

+-------------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(0.707 0.707')) |
|-------------------------------------------------------------------------|
| 0.7853981634                                                            |
+-------------------------------------------------------------------------+

더 알아보기 (Learn more)