根据经纬度计算两点之间的距离

    经纬度计算有各种计算方式,一般误差也各不相同。个人觉着结合地球半径的计算方法可能靠谱一些,但是具体的计算公式是怎么来的,就不清楚,不知道谁提出的。下面给出一个计算方法和经纬度查询网站上的查询结果很接近了。

    下面给出代码,并附上运行的结果:

package com.xxx.javaee.common;
public class DistanceCalculate {
	//地球半径
	private static final double R = 6378.137d;
	
	public static double radius(double d) {
		return d * Math.PI / 180.0;
	}
	
	public static double getDistanceByR(Point a,Point b) {
		double distance = 0;
		double lata = radius(a.latitude);
		double latb = radius(b.latitude);
		
		double latd = lata - latb;
		double lond = radius(a.longitude-b.longitude);
		
		double sina = Math.sin(latd/2.0);
		double sinb = Math.sin(lond/2.0);
		
		distance = 2 * R * Math.asin(Math.sqrt(sina*sina+Math.cos(lata)*Math.cos(latb)*sinb*sinb));
		return distance;
		
	}
	
	public static void main(String[] args) {
		Point a = new Point(116.4028930664d,39.9034155951d);
		Point b = new Point(114.3347167969d,30.5433389542d);
		System.out.println("distance by radius : "+getDistanceByR(a, b));
	}
}

class Point{
	double longitude;//经度
	double latitude; //纬度
	
	public Point() {}
	
	public Point(double longitude,double latitude) {
		this.longitude = longitude;
		this.latitude = latitude;
	}
}

这里给出的示例是粗略计算北京到武汉的直线距离,经纬度都定位在北京和武汉的中心位置,他们的经纬度分别是:北京(116.4028930664d,39.9034155951d)与武汉(114.3347167969d,30.5433389542d)。

运行程序得到的结果如下:

我这里计算的是大概1058公里,我们通过前面提到的gps查询网站的数据来对比一下:

准确输入两点的纬度和经度,点击提交得到:

 

 距离是1057公里,误差有一些,但是相对来说已经比较准了,对于一般的应用来说够用了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值