如何用MySQL的Haversine公式测量距离?
发布时间:2020-12-11 23:49:34 所属栏目:MySql教程 来源:网络整理
导读:我从谷歌地图反向地理编码API获得纬度和经度,然后我需要这样的东西: mysql_query("SELECT users.*,".mysql_distance_column($lat,$lng)." FROM users ORDER BY DISTANCE";function mysql_distance_column($lat=40,$lng=-73) { $defaultLatitudeColumn = 'us
我从谷歌地图反向地理编码API获得纬度和经度,然后我需要这样的东西:
UPDATE
最佳答案
这是我使用的公式.请记住,地球不是一个完美的球体,因此结果永远不会是完美的.
CREATE DEFINER=`root`@`localhost` FUNCTION `GeoDistMiles`( lat1 FLOAT,lon1 FLOAT,lat2 FLOAT,lon2 FLOAT ) RETURNS float BEGIN DECLARE pi,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 3963.346 * rads; END (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |