Oracle 오라클 두 좌표 사이의 거리 구하기 WGS84
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;