首页 > 数据库技术 > 详细

mysql计算经纬度亮点之间的距离

时间:2015-11-01 06:57:36      阅读:387      评论:0      收藏:0      [点我收藏+]

1、计算距离的公式比较长(网上查找),建一个mysql函数:

delimiter $$
CREATE FUNCTION FUN_JW_DIST(lng1 double(15,9), lat1 double(15, 9), lng2 double(15,9), lat2 double(15,9))
  RETURNS double(15,9)
BEGIN
 DECLARE dist double(15, 9);
 
 SET dist = round(6378.138*2*asin(sqrt(pow(sin((lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)* pow(sin((lng1*pi()/180-lng2*pi()/180)/2),2)))*1000);
 
 RETURN (dist);
END$$
delimiter ;
测试:

例如:

第一点(116.359751000, 39.936868000)    第二点(117.291179000, 35.657141000)
在数据库中执行 select  round(6378.138*2*asin(sqrt(pow(sin((39.936868000*pi()/180-35.657141000*pi()/180)/2),2)+cos(39.936868000*pi()/180)*cos(35.657141000*pi()/180)* pow(sin( (116.359751000*pi()/180-117.291179000*pi()/180)/2),2)))*1000)

执行结果: 483402

执行: select FUN_JW_DIST(116.359751000, 39.936868000, 117.291179000, 35.657141000);

执行结果:483402.000000000


mysql计算经纬度亮点之间的距离

原文:http://my.oschina.net/yzw/blog/524461

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!