최종 수정: 에
ST_AZIMUTH
설명
지구 표면의 두 지점 사이의 방위각(라디안 단위)을 계산합니다. 방위각은 시작점(지점 1)에서 진북을 향하는 선을 기준으로 두 지점을 잇는 선까지 시계 방향으로 측정한 각도입니다.
방위각은 한 지점에서 다른 지점으로 향하는 방향을 나타내기 위해 항법과 지리 정보 시스템(GIS)에서 널리 사용됩니다.
구문
ST_AZIMUTH( <point1>, <point2>)
매개변수
| 매개변수 | 설명 |
|---|---|
<point1> | 방위각 계산의 기준점이 되는 시작점으로, GeoPoint 타입입니다. |
<point2> | 시작점에 대한 상대적인 방향을 계산할 끝점으로, GeoPoint 타입입니다. |
반환 값
두 지점 사이의 방위각을 라디안 단위로 반환하며, 범위는 [0, 2π)입니다. 방위각은 진북을 기준으로 시계 방향으로 측정하며, 각 방향에 해당하는 값은 다음과 같습니다.
- 진북: 0 라디안
- 정동: π/2 라디안(약 1.5708)
- 정남: π 라디안(약 3.1416)
- 정서: 3π/2 라디안(약 4.7124)
ST_AZIMUTH의 예외적인 경우:
- 입력된 두 지점이 동일한 경우(경도와 위도가 같은 경우) NULL을 반환합니다.
- 입력된 두 지점이 대척점인 경우(지구상에서 정반대에 있는 경우) NULL을 반환합니다.
- 입력된 지리적 위치 중 하나라도 단일 점이 아니거나 빈 지리 객체인 경우 NULL을 반환합니다.
예제
정서 방향((1,0)에서 (0,0)으로)
SELECT st_azimuth(ST_Point(1, 0),ST_Point(0, 0));
+----------------------------------------------------+
| st_azimuth(st_point(1.0, 0.0), st_point(0.0, 0.0)) |
+----------------------------------------------------+
| 4.71238898038469 |
+----------------------------------------------------+
정동 방향((0,0)에서 (1,0)으로)
SELECT st_azimuth(ST_Point(0, 0),ST_Point(1, 0));
+----------------------------------------------------+
| st_azimuth(st_point(0.0, 0.0), st_point(1.0, 0.0)) |
+----------------------------------------------------+
| 1.5707963267948966 |
+----------------------------------------------------+
진북 방향((0,0)에서 (0,1)으로)
SELECT st_azimuth(ST_Point(0, 0),ST_Point(0, 1));
+----------------------------------------------------+
| st_azimuth(st_point(0.0, 0.0), st_point(0.0, 1.0)) |
+----------------------------------------------------+
| 0 |
+----------------------------------------------------+
대척점
SELECT st_azimuth(ST_Point(-30, 0),ST_Point(150, 0));
+--------------------------------------------------------+
| st_azimuth(st_point(-30.0, 0.0), st_point(150.0, 0.0)) |
+--------------------------------------------------------+
| NULL |
+--------------------------------------------------------+
북동쪽 방향((0,0)에서 (1,1)으로)
mysql> SELECT st_azimuth(ST_Point(0, 0), ST_Point(1, 1));
+--------------------------------------------+
| st_azimuth(ST_Point(0, 0), ST_Point(1, 1)) |
+--------------------------------------------+
| 0.7854743216187384 |
+--------------------------------------------+
경도 180°를 가로지르는 동쪽 방향((170, 0)에서 (-170, 0)으로)
mysql> SELECT st_azimuth(ST_Point(170, 0), ST_Point(-170, 0));
+-------------------------------------------------+
| st_azimuth(ST_Point(170, 0), ST_Point(-170, 0)) |
+-------------------------------------------------+
| 1.5707963267948966 |
+-------------------------------------------------+
점이 아닌 타입을 입력하면 NULL 반환
mysql> SELECT st_azimuth(ST_LineFromText("LINESTRING (0 0, 1 1)"), ST_Point(1, 0));
+----------------------------------------------------------------------+
| st_azimuth(ST_LineFromText("LINESTRING (0 0, 1 1)"), ST_Point(1, 0)) |
+----------------------------------------------------------------------+
| NULL |
+----------------------------------------------------------------------+