CREATE OR REPLACE FUNCTION RTIS_DBA.FN_DISTANCE (
inLat1 NUMBER
,inLon1 NUMBER
,inLat2 NUMBER
,inLon2 NUMBER
)
RETURN NUMBER
IS
/*
* Author : youngkwon.kim
* Purpose : 지점간 거리 계산
* Date : 2015-03-23
*/
cSpherRad CONSTANT NUMBER := 6367;
vTemp NUMBER;
vLat NUMBER;
vLat1Rad NUMBER;
vLat2Rad NUMBER;
vLon NUMBER;
vLon1Rad NUMBER;
vLon2Rad NUMBER;
BEGIN
vLat1Rad := inLat1 * 0.017453293;
vLat2Rad := inLat2 * 0.017453293;
vLon1Rad := inLon1 * 0.017453293;
vLon2Rad := inLon2 * 0.017453293;
vLon := vLon2Rad - vLon1Rad;
vLat := vLat2Rad - vLat1Rad;
vTemp := POWER(SIN(vLat/2),2) + COS(vLat1Rad) * COS(vLat2Rad) * POWER(SIN(vLon/2),2);
RETURN ROUND(cSpherRad * 2 * ATAN2(SQRT(vTemp), SQRT(1-vTemp)),1);
EXCEPTION
WHEN OTHERS THEN
RETURN 999;
END FN_DISTANCE;