加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

wgs84 通过两坐标点计算两点间距离

(2015-09-22 18:00:57)
标签:

健康

计算方法一:

 public double caulateLength(double x1,double y1,double x2,double y2){
            double r = 6378137;
            double x11 = x1 * Math.PI / 180;
            double x21 = x2 * Math.PI / 180;
            double y11 = y1 * Math.PI / 180;
            double y21 = y2 * Math.PI / 180;
            double dx = Math.abs(x11 - x21);
            double dy = Math.abs(y11 - y21);
            double p = Math.pow(Math.sin(dx / 2), 2) + Math.cos(x11) * Math.cos(x21) * Math.pow(Math.sin(dy / 2), 2);
            double d= r * 2 * Math.asin(Math.sqrt(p)); 
            return d;
     }


计算方法二:

public double  getDistance(double aLon,double alat,double zLon,double zlat) {
            Long length=null;
            int Ri = 6371;
            Double d = ( Ri * Math.acos(Math.sin(alat*(Math.PI/180))*Math.sin(zlat*(Math.PI/180)) +
            Math.cos(alat*(Math.PI/180))*Math.cos(zlat*(Math.PI/180))*Math.cos((aLon - zLon)*(Math.PI/180))));     
            length = Math.round(d*1000);
            return length;
        }
其中两个方法的计算结果是不一致的,第一种方法计算的结果比较大,应该是最后乘以地球半径

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有