Calcular distancias entre puntos geoposicionados con MySQL

Me ha tocado montar un buscador mostrando la distancia entre dos puntos geoposicionados así que googleando un poco me he encontrado con esta función que va bastante bien:

CREATE FUNCTION `geodistkm`(
        lat1  FLOAT ,
        lon1  FLOAT,
        lat2 FLOAT ,
        lon2 FLOAT
    )
    RETURNS float
    NOT DETERMINISTIC   
BEGIN
	 DECLARE pi, q1, q2, q3 FLOAT;
	 DECLARE rads FLOAT DEFAULT 0;
	 SET pi = PI();
	 SET lat1 = lat1 * pi / 180;
	 SET lon1 = lon1 * pi / 180;
	 SET lat2 = lat2 * pi / 180;
	 SET lon2 = lon2 * pi / 180;
	 SET q1 = COS(lon1-lon2);
	 SET q2 = COS(lat1-lat2);
	 SET q3 = COS(lat1+lat2);
	 SET rads = ACOS( 0.5*((1.0+q1)*q2 - (1.0-q1)*q3) ); 
	 RETURN 6378.388 * rads;
END;
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.