如何用MySQL的Haversine公式测量距离?
发布时间:2020-09-25 05:56:49 所属栏目:MySql 来源:互联网
导读:我从谷歌地图反向地理编码API获得纬度和经度,然后我需要这样的东西:mysql_query(SELECT users.*, .mysql_distance_column($lat,$lng). FROM users ORDER BY DISTANCE; function mysql_distance_column($lat=40 , $lng=-7
|
我从谷歌地图反向地理编码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 (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- php – 在向数据库插入值时删除记录
- python – SQLAlchemy:如何使用join删除
- php – 在Laravel 4中搜索和过滤/优化数据库结果
- Mysql实例关于Mysql查询带单引号及插入带单引号字符串问题
- mysql – 在MariaDB中如何从表中选择前10行?
- java – 数据源的自动提交应该设置为false吗?
- 计数器在PHP / MySQL中不会增加
- 0000-00-00 00:00:00作为MySQL DateTime输入
- Mysql应用mysql could not be resolved: Name or service n
- php – mysqli_fetch_all没有在共享主机上工作,需要替代
