Database/SQL

Oracle 오라클 두 좌표 사이의 거리 구하기 WGS84

리커니 2017. 11. 7. 09:48
반응형

 

Oracle 오라클 두 좌표 사이의 거리 구하기 WGS84

 

특정 테이블에 좌표값 컬럼이 있고(LOCATION_DATA_Y, LOCATION_DATA_X)

파라메터로 좌표값(Y : 33.504274, X : 126.529182)을 받아 거리를 구하고자 할 경우

2km 정도의 오차 발생의 경우(0.019 - 0.022)

 

[QUERY]

SELECT DISTANCE_WGS84(33.504274, 126.529182, LOCATION_DATA_Y, LOCATION_DATA_X) as DISTANCE

  FROM COL_INCIDENT_LOG

WHERE (LOCATION_DATA_Y BETWEEN 33.504274-0.019 AND 33.504274+0.019)

    AND (LOCATION_DATA_X BETWEEN 126.529182-0.022 AND 126.529182+0.022)

 

 

 

[DISTANCE_WGS84 FUNCTION]

CREATE OR REPLACE FUNCTION DISTANCE_WGS84( H_LAT in number, H_LNG in number, T_LAT in number, T_LNG in number)
RETURN NUMBER DETERMINISTIC
IS
BEGIN
  RETURN ( 6371.0 * acos( 
          cos( radians( H_LAT ) )*cos( radians( T_LAT /* 위도 */ ) )
          *cos( radians( T_LNG /* 경도 */ )-radians( H_LNG ) )
          +
          sin( radians( H_LAT ) )*sin( radians( T_LAT /* 위도 */ ) )       
         ));
end DISTANCE_WGS84;

 

 

반응형