Nov 04
Useful function.
DELIMITER //
DROP FUNCTION IF EXISTS DISTANCE; //
CREATE FUNCTION DISTANCE( lat1 DOUBLE, lon1 DOUBLE, lat2 DOUBLE, lon2 DOUBLE )
RETURNS DOUBLE NO SQL DETERMINISTIC
COMMENT 'counts distance (km) between 2 points on Earth surface'
BEGIN
DECLARE dtor DOUBLE DEFAULT 57.295800;
RETURN (6371 * acos(sin( lat1/dtor) * sin(lat2/dtor) +
cos(lat1/dtor) * cos(lat2/dtor) *
cos(lon2/dtor - lon1/dtor)));
END; //
DELIMITER ;
In next post I will explain how I used this function to implement a reverse geocoding — it’s useful when you need to find a closest city by given coordinates.
November 4th, 2010 at 20:09
надо ещё параметр добавить, чтоб могла в милях считать и будет ок.
November 5th, 2010 at 11:46
Думал об этом. Пришёл к выводу, что будет правильнее потом использовать конвертор. Километры выступают базой – а как уже надо приложению отобразить, оно само разберётся.