计算半径

来源:互联网 发布:金庸 古龙 知乎 编辑:程序博客网 时间:2024/04/30 11:48
public class EarthLongLatiCalculator {
private static final double EARTH_RADIUS = 6378137;// 赤道半径(单位m)


/**
* 转化为弧度(rad)
* */
private static double rad(double d) {
return d * Math.PI / 180.0;
}


/**
* 基于googleMap中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不多,相差范围在0.2米以下

* @param lon1
*            第一点的精度
* @param lat1
*            第一点的纬度
* @param lon2
*            第二点的精度
* @param lat3
*            第二点的纬度
* @return 返回的距离,单位km
* */
public static double getDistance(double lon1, double lat1, double lon2,
double lat2) {
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lon1) - rad(lon2);
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;
return s;
}

public static void main(String[] args) {
double long1 = 116.392456;
double lati1 = 40.003906;

double long2 = 116.413899;
double lati2= 39.994869;
double dis = EarthLongLatiCalculator.getDistance(long1, lati1, long2, lati2);
System.out.println(dis);
}
}
0 0
原创粉丝点击