최종 수정: 에
ST_ANGLE_SPHERE
설명
지표면의 두 점 사이의 중심각을 도 단위로 계산합니다. 입력 매개변수는 순서대로 점 X의 경도, 점 X의 위도, 점 Y의 경도, 점 Y의 위도입니다.
중심각은 두 점을 잇는 호에 대응하는 지구 중심에서의 각도를 말합니다.
구문
ST_ANGLE_SPHERE( <x_lng>, <x_lat>, <y_lng>, <y_lat>)
매개변수
| 매개변수 | 설명 |
|---|---|
<x_lng> | 점 X의 경도. 타입은 DOUBLE이며 유효 범위는 [-180, 180]입니다. |
<x_lat> | 점 X의 위도. 타입은 DOUBLE이며 유효 범위는 [-90, 90]입니다. |
<y_lng> | 점 Y의 경도. 타입은 DOUBLE이며 유효 범위는 [-180, 180]입니다. |
<y_lat> | 점 Y의 위도. 타입은 DOUBLE이며 유효 범위는 [-90, 90]입니다. |
반환값
두 점 사이의 중심각을 도 단위로 반환합니다. 반환 타입은 DOUBLE이며 범위는 [0, 180]입니다.
ST_ANGLE_SPHERE의 경계 사례:
- 입력 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
- 좌표가 유효 범위를 벗어나면(예: 경도 > 180, 위도 < -90) NULL을 반환합니다.
- 두 점이 동일하면(경도와 위도가 같으면) 0을 반환합니다.
- 두 점이 대척점(지구에서 지름의 양 끝에 위치하는 점)이면 180을 반환합니다.
예제
서로 인접한 두 점 사이의 중심각 계산
select ST_Angle_Sphere(116.35620117, 39.939093, 116.4274406433, 39.9020987219);
+---------------------------------------------------------------------------+
| st_angle_sphere(116.35620117, 39.939093, 116.4274406433, 39.9020987219) |
+---------------------------------------------------------------------------+
| 0.0659823452409903 |
+---------------------------------------------------------------------------+
경도 차이가 45°인 적도상의 두 점
select ST_Angle_Sphere(0, 0, 45, 0);
+----------------------------------------+
| st_angle_sphere(0.0, 0.0, 45.0, 0.0) |
+----------------------------------------+
| 45 |
+----------------------------------------+
좌표가 동일한 두 점
mysql> SELECT ST_ANGLE_SPHERE(30, 60, 30, 60);
+---------------------------------+
| ST_ANGLE_SPHERE(30, 60, 30, 60) |
+---------------------------------+
| 0 |
+---------------------------------+
대척점(지름의 양 끝에 위치하는 점)
mysql> SELECT ST_ANGLE_SPHERE(0, 0, 180, 0);
+-------------------------------+
| ST_ANGLE_SPHERE(0, 0, 180, 0) |
+-------------------------------+
| 180 |
+-------------------------------+
동경과 서경에 걸친 두 점(예: 170°E 및 -170°W)
mysql> SELECT ST_ANGLE_SPHERE(170, 30, -170, 30);
+------------------------------------+
| ST_ANGLE_SPHERE(170, 30, -170, 30) |
+------------------------------------+
| 17.298330210575152 |
+------------------------------------+
적도를 사이에 둔 두 점(북위와 남위)
mysql> SELECT ST_ANGLE_SPHERE(0, 45, 0, -45);
+--------------------------------+
| ST_ANGLE_SPHERE(0, 45, 0, -45) |
+--------------------------------+
| 89.99999999999999 |
+--------------------------------+
유효하지 않은 경도(범위 초과)
mysql> SELECT ST_ANGLE_SPHERE(190, 30, 10, 30);
+----------------------------------+
| ST_ANGLE_SPHERE(190, 30, 10, 30) |
+----------------------------------+
| NULL |
+----------------------------------+
매개변수 중 하나가 NULL인 경우
mysql> SELECT ST_ANGLE_SPHERE(NULL, 30, 10, 30);
+-----------------------------------+
| ST_ANGLE_SPHERE(NULL, 30, 10, 30) |
+-----------------------------------+
| NULL |
+-----------------------------------+
유효 범위를 벗어난 위도(예: 91°N)
mysql> SELECT ST_ANGLE_SPHERE(0, 0, 180, 91);
+--------------------------------+
| ST_ANGLE_SPHERE(0, 0, 180, 91) |
+--------------------------------+
| NULL |
+--------------------------------+