经纬度计算距离公式 java_Java计算两点间经纬度距离(两种方式)

经纬度计算距离公式 java_Java计算两点间经纬度距离(两种方式)反余弦计算方式 privatestati RADIUS 平均半径 单位 m 不是赤道半径 赤道为 6378 左右 publicstatic Doublelat1 Doublelng1 Doublelat2 Doublelng2 经纬度 角度 转弧度 弧度用作参数 以调用 Math

反余弦计算方式:

private static final double EARTH_RADIUS = ; // 平均半径,单位:m;不是赤道半径。赤道为6378左右

public static double getDistance(Double lat1,Double lng1,Double lat2,Double lng2) {

// 经纬度(角度)转弧度。弧度用作参数,以调用Math.cos和Math.sin

double radiansAX = Math.toRadians(lng1); // A经弧度

double radiansAY = Math.toRadians(lat1); // A纬弧度

double radiansBX = Math.toRadians(lng2); // B经弧度

double radiansBY = Math.toRadians(lat2); // B纬弧度

// 公式中“cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2”的部分,得到∠AOB的cos值

double cos = Math.cos(radiansAY) * Math.cos(radiansBY) * Math.cos(radiansAX – radiansBX)

+ Math.sin(radiansAY) * Math.sin(radiansBY);

// System.out.println(“cos = ” + cos); // 值域[-1,1]

double acos = Math.acos(cos); // 反余弦值

// System.out.println(“acos = ” + acos); // 值域[0,π]

// System.out.println(“∠AOB = ” + Math.toDegrees(acos)); // 球心角 值域[0,180]

return EARTH_RADIUS * acos; // 最终结果

}

利用第三方jar包计算:

引依赖:

org.gavaghan

geodesy

1.1.3

代码:

public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid)

{

//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离

GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);

return geoCurve.getEllipsoidalDistance();

}

计算结果对比:

public static void main(String[] args) {

//121.,31.12055 121.,31.090867

// double distance = getDistance(31.12055, 121.,31.090867, 121.);

double distance = getDistance(29.090295, 106.,29., 106.);

System.out.println(“距离” + distance + “米”);

GlobalCoordinates source = new GlobalCoordinates(29.090295, 106.);

GlobalCoordinates target = new GlobalCoordinates(29., 106.);

double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere);

double meter2 = getDistanceMeter(source, target, Ellipsoid.WGS84);

System.out.println(“Sphere坐标系计算结果:”+meter1 + “米”);

System.out.println(“WGS84坐标系计算结果:”+meter2 + “米”);

}

d8c2a8f140c3dba5ef036f67fcf6f0a2.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217076.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:24
下一篇 2026年3月18日 上午10:24


相关推荐

  • Win10安装不了:Windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式

    Win10安装不了:Windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式

    2026年3月16日
    2
  • apache RewriteCond详解

    apache RewriteCond详解RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。RewriteEngineonRewriteCond%{HTTP_USER_AGENT}^Mozilla\/5\.0.*RewriteRuleinde…

    2022年6月12日
    33
  • 右键菜单中的好友列表Ajax直接跳转请求到登陆页面

    右键菜单中的好友列表Ajax直接跳转请求到登陆页面

    2022年1月4日
    56
  • sqlyog连接mysql错误码2003_sqlyog无法连接本地主机

    sqlyog连接mysql错误码2003_sqlyog无法连接本地主机首先保证你的MySQL数据库安装成功cmd命令下  mysql-uroot-p 这样就启动成功了。。。sqlyog配置新连接报错:错误号码2058,是因为mysql密码加密方法变了。先登录你的数据库,然后执行 ALTERUSER’root’@’localhost’IDENTIFIEDWITHmysql_native_passwordBY’pass…

    2022年10月2日
    5
  • Linux curl 命令模拟 POST/GET 请求「建议收藏」

    Linux curl 命令模拟 POST/GET 请求「建议收藏」curl命令,是一个利用URL规则在命令行下工作的文件传输工具。curl支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、FTP等众多协议,还支持GET、POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征,还可以做网页处理流程和数据检索自动化。 …

    2022年7月27日
    19
  • PureMVC框架的学习笔记

    PureMVC框架的学习笔记参考资料 官方 GitHub 连接 https github com PureMVCPureM 官方网站 www puremvc org 博客 PureMVC 解析 Peter Gao 的博客 CSDN 博客 puremvc 曾经自己做的项目 UI 层使用简单的 UI 框架 发现扩展性不强 大型项目多人协同也是个问题 于是学习了比较经典的基于 MVC 的 PureMVC 以及基于 MVVM 的 LoxodonFrame 今天记录一下有关 PureMVC 的学习 MVC 思想什么是 MVC MVC 的全名是 Mo

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号