En este post te voy a mostrar una fórmula de MySQL para calcular la distancia entre dos coordenadas GPS (latitud y longitud) en metros, de modo que podrás calcular la cantidad de metros que existen entre 2 puntos geográficos al hacer consultas SQL.
Debido a que vamos a definir la fórmula como una función de MySQL vas a poder usarla al hacer cualquier operación como SELECT o INSERT.
Vamos a usar la fórmula de Haversine también llamada semiverseno, misma que permite conocer la distancia de círculo máximo entre dos puntos de un globo sabiendo su longitud y su latitud.
Definición de Haversine con MySQL
La siguiente función para calcular la distancia entre 2 coordenadas con MySQL te va a devolver la distancia en metros; obviamente puedes convertirla a kilómetros o metros.
El código SQL es el siguiente:
Solo debes ejecutarlo en tu base de datos una vez, y después vas a poder calcular la distancia entre coordenadas con MySQL en cualquier tabla. Incluso puedes probarla sin tabla, por ejemplo:
La salida de esa consulta será 1784668.3798590573 lo cual es correcto según mi otro post de Haversine con JS. No olvides que en este caso la salida está en metros.
Usando Semiverseno con MySQL usando tabla
A continuación se presenta un ejemplo de una consulta usando esta fórmula:
Si quisieras un ejemplo más sencillo podrías hacer algo como: