问题标题:
两个经纬度算距离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%左右,应该可以接受。
刘茂奇回答:
是的但是理论是不行《大地坐标系与大地基准》,当长距离计算时,用大地线的概念(两点之间的最短距离,这个弧长很复杂)你看看吧里面也有解法
点击显示
数学推荐
热门数学推荐