2025年3月28日 星期五 甲辰(龙)年 月廿七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

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

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

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

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