java根据经纬度计算距离_java经纬度转换xy坐标公式

java根据经纬度计算距离_java经纬度转换xy坐标公式反余弦计算方式:privatestaticfinaldoubleEARTH_RADIUS=6371000;//平均半径,单位:m;不是赤道半径。赤道为6378左右publicstaticdoublegetDistance(Doublelat1,Doublelng1,Doublelat2,Doublelng2){//经纬度(角度)转弧度。弧度用作参数,以调用Math…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

反余弦计算方式:

private static final double EARTH_RADIUS = 6371000; // 平均半径,单位: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.717594,31.12055 121.817629,31.090867

// double distance = getDistance(31.12055, 121.717594,31.090867, 121.817629);

double distance = getDistance(29.090295, 106.486654,29.615467, 106.581515);

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

GlobalCoordinates source = new GlobalCoordinates(29.090295, 106.486654);

GlobalCoordinates target = new GlobalCoordinates(29.615467, 106.581515);

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/190186.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • amos路径分析结果解读_swot模型个人分析

    amos路径分析结果解读_swot模型个人分析基于Amos的路径分析与模型参数详解1数据准备1.1数据格式转换2结构方程模型建立2.1变量相互关系确定2.2路径图绘制2.3数据导入3模型运行与结果3.1模型方法参数选择3.2模型输出参数选择3.3模型运行3.4模型结果1数据准备  本文所用数据包括某地百余个土壤采样点对应的一种土壤属性含量变量(BC)及与其有关的5种环境变量(Temp,Slope,Roden,POI,GAIA),存储于“xlsx”文件内。由于本文所用的土壤采样点空间数据集并不是我的,因此

    2022年8月24日
    12
  • 关于驻点,拐点,极值点的关系_鞍点是拐点吗

    关于驻点,拐点,极值点的关系_鞍点是拐点吗  最近有些考研的小伙伴问到我这个问题,正好也给自己梳理一下思路,毕竟在机器学习里面这4个概念也是非常重要的,不过这里由于知识所限,就只整理跟考研部分比较相关的知识点了。  既然是4种点,首先就需要将其进行大致的分类,大致来说如下。$$\begin{cases}一元函数\quad\begin{cases}一阶导数f'(x)\quad驻点、极值点、鞍点\\[3…

    2025年7月28日
    4
  • latex 参考文献排序_中文参考文献怎么排序

    latex 参考文献排序_中文参考文献怎么排序最近由于需要开始尝试使用LaTeX。瞎忙活了好多天,最近总算有一点点眉目了。由于以前没有接触过LaTeX,而且网上有好多种不同的编译、编辑工具,我也不知道用哪个。偶尔看到LyTeX:LyTeX是一个绿色的中文TeX套装,它包含绿色版还是安装版,无论哪种版本都不会与系统的其它TeX套装冲突。它包含了LaTeX,XeTeX,TeXworks和LyX,特别地包含了绝大部分

    2025年9月7日
    6
  • 排序算法:冒泡排序、插入排序、选择排序、希尔排序

    排序算法:冒泡排序、插入排序、选择排序、希尔排序

    2021年10月5日
    38
  • Java面试题大全(2021版)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~本套Java面试题大全,全的不能再全,哈哈~一、Java基础知识面试题1、Java概述①.何为编程编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机

    2022年4月17日
    41
  • unity和solidarity的区别_交互分配法对内分配

    unity和solidarity的区别_交互分配法对内分配Unity调用so文件中的方法,配合一个简单的实例,简单的介绍了Unity端是如何调用so文件的。该文是系列文章,前面两篇对so基本概述和如何在AndroidStudio中生成so文件做了一个介绍,想了解的可以去参考下!

    2022年9月19日
    5

发表回复

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

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