根据经纬度获取两点之间的距离,java

最近在工作中遇到这么一个需求:给你两个经、纬度,计算出这两个经、纬度相差多远?

在网上找了找资料,还是有很多答案的,分享给小伙伴们,拿走不谢😉

一、pom引入依赖

        <dependency>
              <groupId>org.gavaghan</groupId>
              <artifactId>geodesy</artifactId>
              <version>1.1.3</version>
        </dependency>

二、编写后台代码

计算函数:

    /**
     * 计算距离
     *
     * @param from 经纬度源
     * @param to   比较的经纬度
     * @param ellipsoid 坐标系
     * @return double
     */
    public static double getDistanceMeter(GlobalCoordinates from, GlobalCoordinates to, Ellipsoid ellipsoid) {
        // 经纬度计算距离
        GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, from, to);
        return geoCurve.getEllipsoidalDistance();
    }

调用

    @Test
    public void test(){
        GlobalCoordinates source = new GlobalCoordinates(108.42372, 22.82905);
        GlobalCoordinates target = new GlobalCoordinates(108.42788, 22.826532);
        //WGS84坐标-GPS坐标
        double WGS84Meter = getDistanceMeter(source, target, Ellipsoid.WGS84);
        System.out.println("》WGS84格式坐标--》两点相距["+WGS84Meter+"]米");
        System.out.println("------------------------------------------------------");
        double SphereMeter = getDistanceMeter(source, target, Ellipsoid.Sphere);
        System.out.println("》Sphere格式坐标--》两点相距["+SphereMeter+"]米");
    }

结果:

          Ellipsoid.WGS84 与 Ellipsoid.Sphere 区别
类别WGS84Sphere
形状代表一个真实的地球形状,其赤道半径不同于极半径。表示一个理论上的球形地球,即所有方向的半径相等。
地球参数采用WGS84地理坐标系统标准,该标准有精确的长半轴和扁率参数,用于精确定位通常使用单位半径1.0进行初始化,不涉及具体的地理坐标系统标准。
通用性由于其精确模拟了地球的实际形状,适用于大多数地理信息系统(GIS)和位置服务。主要用于理论计算和简化模型,对于一些不需要高度精度的应用可能更适用。
API应用在Cesium中作为常量提供,可以直接使用而无需手动构造。同样作为常量提供给开发者,并允许通过指定x, y, z方向的半径来手动构造。
精度5M以内(通常--参考值(百度百科上说的))10M以上(通常--参考值(百度百科上说的))

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值