mysql - terrestres - ecuación haversine excel
Calcular la distancia dada 2 puntos, latitud y longitud (2)
Posible duplicado:
Configuración de tablas de latitud y longitud de MySQL
Sé que esta pregunta probablemente se ha hecho muchas veces, he investigado mucho y necesito ayuda con algo específico.
Digamos que tengo un formulario y el usuario ingresa longitud y latitud, y tengo una base de datos que tiene tablas que contienen longitudes y latitudes, ¿cómo buscaría un punto o puntos en esa tabla que estén dentro de 15 millas de radio?
Puedes usar la fórmula que calcula distancias entre dos puntos. Por ejemplo:
function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = ''Mi'') {
$theta = $longitude1 - $longitude2;
$distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) +
(cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) *
cos(deg2rad($theta)));
$distance = acos($distance);
$distance = rad2deg($distance);
$distance = $distance * 60 * 1.1515;
switch($unit) {
case ''Mi'':
break;
case ''Km'' :
$distance = $distance * 1.609344;
}
return (round($distance,2));
}
También puedes hacer algo como:
$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) *
sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) *
cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)*
pi()/180))))*180/pi())*60*1.1515
) as distance
FROM `MyTable`
HAVING distance >= ".$distance.";
Si tiene la Lat / Lon de dos puntos, puede obtener delta Lat y delta Lon y convertir esto a una distancia a lo largo de la latitud y una distancia a lo largo de la longitud, y usar el teorema de Pitágoras.
¿Has mirado páginas como http://www.movable-type.co.uk/scripts/latlong.html ? Esto tiene varias formas de calcular la distancia. Así que a medida que recorre su lista de puntos, usa la fórmula para calcular la distancia desde cada punto hasta el punto de interés y mantenga solo aquellos que satisfacen R <15 millas.