计算 GPS 经纬度 两点间 距离 JAVA 代码

原文转自: http://blog.csdn.net/xjanker2/article/details/5404487
public class FCDTools {
	
	public final static double PI 	= 3.14159265354;
	private final static double D2R 	= 0.017453 ;
	private final static double a2 	= 6378137.0;
	private final static double e2 	= 0.006739496742337;
	
	public static double Distance(FCD_Point pt1, FCD_Point pt2) {
		if(pt1.lng == pt2.lng && pt1.lat == pt2.lat ) {
            return 0.0;
        } else {
            double fdLambda =(pt1.lng - pt2.lng) * D2R;
            double fdPhi = (pt1.lat - pt2.lat) * D2R;
            double fPhimean = ((pt1.lat + pt2.lat) / 2.0) * D2R;
            double fTemp = 1 - e2 * (Math.pow (Math.sin(fPhimean),2));
            double fRho = (a2 * (1 - e2)) / Math.pow (fTemp, 1.5);
            double fNu = a2 / (Math.sqrt(1 - e2 * (Math.sin(fPhimean) * Math.sin(fPhimean))));
            double fz = Math.sqrt (Math.pow(Math.sin(fdPhi / 2.0), 2) +
            		Math.cos(pt2.lat * D2R) * Math.cos( pt1.lat*D2R ) * Math.pow( Math.sin(fdLambda / 2.0),2));
            fz = 2 * Math.asin(fz);
            double fAlpha = Math.cos(pt2.lat * D2R) * Math.sin(fdLambda) * 1 / Math.sin(fz);
            fAlpha = Math.asin (fAlpha);
            double fR = (fRho * fNu) / ((fRho * Math.pow( Math.sin(fAlpha),2)) + (fNu * Math.pow( Math.cos(fAlpha),2)));
            return fz * fR;
        }
	}
}


测试:

System.out.println(FCDTools.Distance(new FCD_Point(117.107277,31.980298), 
				new FCD_Point(117.524757, 31.888227)));
// 输出40.7公里


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值