본문으로 건너뛰기
최종 수정: 에

ST_DISTANCE_SPHERE

설명​

지구상의 두 지점 사이의 구면 거리를 미터 단위로 계산합니다. 입력 매개변수는 순서대로 X 지점의 경도, X 지점의 위도, Y 지점의 경도, Y 지점의 위도입니다.

구문​

ST_DISTANCE_SPHERE( <x_lng>, <x_lat>, <y_lng>, <y_lat>)

매개변수​

매개변수설명
<x_lng>X 지점의 경도. DOUBLE 타입이며, 유효 범위는 [-180, 180]입니다(범위를 벗어나면 NULL을 반환합니다).
<x_lat>X 지점의 위도. DOUBLE 타입이며, 유효 범위는 [-90, 90]입니다(범위를 벗어나면 NULL을 반환합니다).
<y_lng>Y 지점의 경도. DOUBLE 타입이며, 유효 범위는 [-180, 180]입니다(범위를 벗어나면 NULL을 반환합니다).
<y_lat>Y 지점의 위도. DOUBLE 타입이며, 유효 범위는 [-90, 90]입니다(범위를 벗어나면 NULL을 반환합니다).

반환값​

두 지점 사이의 최단 구면 거리를 미터 단위로 반환합니다(DOUBLE 타입).

ST_DISTANCE_SPHERE는 다음과 같은 경계 조건에서 아래와 같이 동작합니다.

  • 입력 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
  • 경도가 [-180, 180] 범위를 벗어나거나 위도가 [-90, 90] 범위를 벗어나면 NULL을 반환합니다.
  • 두 지점이 완전히 동일하면(경도와 위도 값이 같으면) 0을 반환합니다(거리는 0).

예제​

지구상에서 서로 가까운 두 지점

select st_distance_sphere(116.35620117, 39.939093, 116.4274406433, 39.9020987219);
+----------------------------------------------------------------------------+
| st_distance_sphere(116.35620117, 39.939093, 116.4274406433, 39.9020987219) |
+----------------------------------------------------------------------------+
| 7336.9135549995917 |
+----------------------------------------------------------------------------+

적도 위의 두 지점(경도 차이 1°, 위도 0°)

mysql> SELECT ST_DISTANCE_SPHERE(0, 0, 1, 0);
+--------------------------------+
| ST_DISTANCE_SPHERE(0, 0, 1, 0) |
+--------------------------------+
| 111195.10117748393 |
+--------------------------------+

경도 차이가 20°로 실제로는 서로 가까운 두 지점


-- Point X(170, 0), Point Y(-170, 0) (longitude difference of 20° instead of 340°, taking the shortest path)
mysql> SELECT ST_DISTANCE_SPHERE(170, 0, -170, 0);
+-------------------------------------+
| ST_DISTANCE_SPHERE(170, 0, -170, 0) |
+-------------------------------------+
| 2223902.023549678 |
+-------------------------------------+

유효하지 않은 매개변수(위도가 범위를 벗어남)

mysql> SELECT ST_DISTANCE_SPHERE(116, 39, 120, 91);
+--------------------------------------+
| ST_DISTANCE_SPHERE(116, 39, 120, 91) |
+--------------------------------------+
| NULL |
+--------------------------------------+

매개변수가 NULL이면 NULL 반환

mysql> SELECT ST_DISTANCE_SPHERE(NULL, 39.9, 116.4, 30);
+-------------------------------------------+
| ST_DISTANCE_SPHERE(NULL, 39.9, 116.4, 30) |
+-------------------------------------------+
| NULL |
+-------------------------------------------+

두 좌표가 동일하면 0 반환


mysql> SELECT ST_DISTANCE_SPHERE(1,1 , 1, 1);
+--------------------------------+
| ST_DISTANCE_SPHERE(1,1 , 1, 1) |
+--------------------------------+
| 0 |
+--------------------------------+