导航

mysql语句 计算经纬度记录

Posted on 2013-01-11 18:07  小宝的亲哥哥  阅读(313)  评论(0)    收藏  举报

公式:select (2 * 6378.137* ASIN(SQRT(POW(SIN(PI() * (lat1 - lat2)/360), 2) + COS(PI() * lat1 / 180)
* COS(lat2 * PI() / 180) * POW(SIN(PI() * (lng1 - lng2) / 360), 2)))) as 'num'

摘处:http://hi.baidu.com/xzp19841203/item/8172e5f7288ac2df6225d203

 


 

谷歌计算原理:

从google maps的脚本里扒了段代码,没准啥时会用上。大家一块看看是怎么算的。

private const double EARTH_RADIUS = 6378.137;
private static double rad(double d)
{
   return d * Math.PI / 180.0;
}

public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
   double radLat1 = rad(lat1);
   double radLat2 = rad(lat2);
   double a = radLat1 - radLat2;
   double b = rad(lng1) - rad(lng2);
   double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) +
    Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));
   s = s * EARTH_RADIUS;
   s = Math.Round(s * 10000) / 10000;
   return s;
}

摘处:http://panyee.cnblogs.com/archive/2006/07/04/442771.html


 

@time:  2013-01-11 18:08:14

Tips:单位km