字典翻译 问答 小学 数学 两个经纬度算距离classEarth{privateconstdoubleEARTH_RADIUS=6378.137;//地球半径privatestaticdoubleRad(doubled){returnd*Math.PI/180.0;}publicstaticdoubleGetDistance(doublelat1,doublelng1,doublelat2,doublelng2){doublera
问题标题:
两个经纬度算距离classEarth{privateconstdoubleEARTH_RADIUS=6378.137;//地球半径privatestaticdoubleRad(doubled){returnd*Math.PI/180.0;}publicstaticdoubleGetDistance(doublelat1,doublelng1,doublelat2,doublelng2){doublera
问题描述:

两个经纬度算距离

classEarth

{

privateconstdoubleEARTH_RADIUS=6378.137;//地球半径

privatestaticdoubleRad(doubled)

{

returnd*Math.PI/180.0;

}

publicstaticdoubleGetDistance(doublelat1,doublelng1,doublelat2,doublelng2)

{

doubleradLat1=Rad(lat1);

doubleradLat2=Rad(lat2);

doublea=radLat1-radLat2;

doubleb=Rad(lng1)-Rad(lng2);

doubles=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;

returns;

}

}

用的这个算法,现在不知道精度到底如何?这个return的S是米还是千米.

我要算50米左右的距离.

刘茂奇回答:
  EARTH_RADIUS是地球半径是常量,看它是米还是千米.距离越近越好吧,应该符合(你试试)
陈瑞亮回答:
  privateconstdoubleEARTH_RADIUS=6378.137;//地球半径这个半径应该是千米,如果我小数点向右移3位变成米,还能算出来么?
刘茂奇回答:
  可以的就通过这算
陈瑞亮回答:
  我又移了小数点,确实是米,原来算的是千米,我问了一个人,人家说这个算法有问题,不严谨,你知道哪里有问题么?那人没说就下线了。
刘茂奇回答:
  就是把曲线看做直线了要多准啊这样应该满足要求了。他的意思肯能想要这两个点的平面坐标然后再算把
陈瑞亮回答:
  需要测量两个点间的距离,然后跟50米去做比对,看大于小于,我用googleearth的算距离工具算了下,误差大概0.3%左右,应该可以接受。
刘茂奇回答:
  是的但是理论是不行《大地坐标系与大地基准》,当长距离计算时,用大地线的概念(两点之间的最短距离,这个弧长很复杂)你看看吧里面也有解法
点击显示
数学推荐
热门数学推荐
  • 语文
  • 数学
  • 英语
  • 科学
  • 作文