jueves, 21 de septiembre de 2017

Calcular distancia entre 2 puntos MariaDB (MySQL también)

Calcular la distancia lineal (en kms) entra dos puntos geograficos directamente en MariaDB:

Formula de cálculo de distancia entre 2 puntos geográficos:

distancia = acos(sin(radians(lat1)) * sin(radians(lat2)) + 
  cos(radians(lat1)) * cos(radians(lat2)) * 
  cos(radians(lng1) - radians(lng2))) * 6378;


Crear funcion en MariaDB (o MySQL):

CREATE FUNCTION distancia (lat1 float,lng1 float, lat2 float, lng2 float) RETURNS float
BEGIN
set @dist = (acos(sin(radians(lat1)) * sin(radians(lat2)) + 
  cos(radians(lat1)) * cos(radians(lat2)) * 
  cos(radians(lng1) - radians(lng2))) * 6378);
RETURN @dist;
END

Llamar a esta función:

select distancia(-35.4307073,-71.6517769,-33.4517812,-70.6784224) as distancia

Resultado: 237.71774291992188

Saludos.