Encuentre la distancia en kilómetros entre dos puntos con la ayuda de la latitud y longitud (Geometría) en PLSQL.
Tengo este código pero no da la salida apropiada en kilómetros:
CREAR O REEMPLAZAR FUNCIÓN distancia (Lat1 EN NUMBER,
Lon1 EN NUMBER,
Lat2 EN NUMBER,
Lon2 EN NUMBER,
Radio EN NUMBER POR DEFECTO 3963)
RETURN NUMBER
ES
-- Convertir grados a radianes
DegARad NUMBER := 57.29577951;
BEGIN
RETURN ( NVL (Radio, 0)
* ACOS (
( SIN (NVL (Lat1, 0) / DegARad)
* SIN (NVL (Lat2, 0) / DegARad))
+ ( COS (NVL (Lat1, 0) / DegARad)
* COS (NVL (Lat2, 0) / DegARad)
* COS (
NVL (Lon2, 0) / DegARad - NVL (Lon1, 0) / DegARad))));
END;
davy.ai
El código anterior calcula la distancia entre dos puntos en la superficie terrestre en radianes. Para obtener la distancia en kilómetros, es necesario modificar la función para convertir los radianes a kilómetros.
Para hacer esto, se puede multiplicar la salida de la función ACOS por el radio de la Tierra en kilómetros (6371). Esto nos dará la distancia entre los dos puntos en kilómetros.
Aquí está el código modificado:
Se debe tener en cuenta la modificación realizada en la línea 11 donde se multiplica la salida de la función ACOS por 6371 (radio terrestre en km) y se divide por 1000 para convertirlo a kilómetros.
Esto debería darnos la salida correspondiente en kilómetros.