您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

球面上两个经纬度点之间的距离公式

时间:03-08来源:作者:点击数:

球面上两个经纬度点之间的距离公式

private static final double EARTH_RADIUS = 6378137.0;    //
private static double getRad(Double d) {
    return d * Math.PI / 180.0;
}
/**
 * 113.5227398,38.38114998;

113.5320502,38.40294996;
*/
@Test
public void testJuLi() {
/**石家庄北站
* 114.471834,38.072762
*石太公园
*114.449556,38.065035
*测试结果2133.4924 实际距离应该是2.1公里
*/
double a = 114.471834;
double b = 38.072762;
double c = 114.449556;
double d = 38.065035;
double distance = EarthTwoPointsDistance(a,b,c,d);
	
	
	//2559.1132
	System.out.println(distance);
}
public double EarthTwoPointsDistance(double lng1, double lat1, double lng2, double lat2) {
    double radLat1 = getRad(lat1);
    double radLat2 = getRad(lat2);

    double a = radLat1 - radLat2;
    double b = getRad(lng1) - getRad(lng2);

    double s = 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.0;
    return s;
}
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门