zoukankan      html  css  js  c++  java
  • Java计算两个经纬度间的距离最简单的方式

     

    开发中经常会遇到计算两个点(经纬度)之间的距离或者计算最近门店的场景,下面简单实现一下如何计算两个经纬度之间相隔的距离。

    1、导入geodesy的maven依赖 或者到阿里云maven仓库下载jar包

    1
    2
    3
    4
    5
    <dependency>
      <groupId>org.gavaghan</groupId>
      <artifactId>geodesy</artifactId>
      <version>1.1.3</version>
    </dependency>

      

    2、实现计算

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package com.test.gps;
     
    import org.gavaghan.geodesy.Ellipsoid;
    import org.gavaghan.geodesy.GeodeticCalculator;
    import org.gavaghan.geodesy.GeodeticCurve;
    import org.gavaghan.geodesy.GlobalCoordinates;
     
    public class CaculateDistanceTest
    {
        public static void main(String[] args)
        {
            GlobalCoordinates source = new GlobalCoordinates(29.490295, 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 + "米");
        }
     
        public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid)
        {
            //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
            GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
     
            return geoCurve.getEllipsoidalDistance();
        }
    }

      

    3、输出结果:


    对比百度地图,计算结果和Sphere坐标系计算结果一致,表明计算结果正确,WGS84坐标系的计算结果存在几十米的误差。不同的坐标系精度不同,计算结果不一样。大家根据实际情况自己选择。

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    CentOS/Linux安装VNCserver
    vncserver的安装和使用
    linux下常用FTP命令 1. 连接ftp服务器
    linux下安装dovecot
    教你如何架设linux邮件服务器postfix
    vim打开文件时显示行号
    VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通
    Linux文件权限详解
    虚拟机下CentOS 6.5配置IP地址的三种方法
    Linux基础知识之man手册的使用
  • 原文地址:https://www.cnblogs.com/xiondun/p/15379253.html
Copyright © 2011-2022 走看看