Calendar of Development

come on

  博客园 :: 首页 :: 新随笔 ::  ::  :: 管理 ::
  18 随笔 :: 2 文章 :: 37 评论 :: 3 引用

从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;
}

posted on 2006-07-04 20:14 Calendar 阅读(11287) 评论(14)  编辑 收藏 网摘 所属分类: 所有随笔

评论

#1楼 2006-07-04 20:44 浪人|努力      
路过,先收藏下。虽然也不懂。
  回复  引用  查看    

#2楼 2006-07-05 11:23 马维峰      
按照球体来算?
  回复  引用  查看    

#3楼 2006-07-07 08:34 懒狮      
地球表面的大圆距离,hehe,高中地理好像就有的内容.
  回复  引用  查看    

#4楼[楼主] 2006-07-12 20:30 pany之家      
按一个圆球进行计算,结果比Microsoft MapPoint计算出来的多好几个有效数字.
  回复  引用  查看    

#5楼 2006-10-07 14:48 yunping[未注册用户]
非常感谢,帮了我大忙了:)
虽然我也没看明白到底原理是什么,但验算了A(60,30),B(60,90)两点之间,此段代码和我用余弦定理算出来的结果很一致。
余弦定理的步骤是:1、算A、B弦长:地球半径R*cos(经度差60)=R/2;
2、算角AOB,O为地球圆心,利用余弦定理,
cosAOB=(2R*R-(R/2)^2) /2*R*R=7/8;
3、弧AB的长为:R*arc cos(7/8);求毕

  回复  引用    

能给个传入的经纬度值来看看吗?
我是菜鸟,
我现在有两个经纬度
(经)度.分.秒-(纬)度.分.秒
108.18.58 - 22.49.18
108.18.59 - 22.49.19

如何换成double 值?

  回复  引用    

#7楼 2006-10-18 16:20 rainbow[未注册用户]
如果考虑到地球是椭圆的话,这个公式应该是不正确的
因为计算中没有用到长轴和短轴
具体我还没有试过


  回复  引用    

任意两点的经纬度怎么算距离
  回复  引用    

#9楼 2007-08-02 14:31 rian[未注册用户]
s = Math.Round(s * 10000) / 10000;
其中的Round是什么意思呀,不太明白?

  回复  引用    

@l.yun@163.com
你把分秒都换算成°的小数点形式就行了, 60进制的

  回复  引用    

#11楼 2008-09-17 10:22 的[未注册用户]
int
  回复  引用    

#12楼 2008-12-22 12:34 柏文[未注册用户]
这个是应用了Great-circle distance公式,可以看这个页面
http://en.wikipedia.org/wiki/Great-circle_distance中的haversine formula

  回复  引用    

#13楼 2009-02-14 23:18 5chaos[未注册用户]
非常感谢
刚买了GPS Logger,正研究怎么把经纬度变成距离算速度呢

  回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 442771




相关文章:

相关链接: