使用场景:
物流和配送:物流和供应链管理公司通常需要计算货物的起点和目的地之间的距离,以确定适当的路径和运输成本。此方法提供根据
出发点和目的地的经纬度
计算两地之间的距离
使用方法:
引入依赖
<!--用于计算两点之间的距离-->
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
<version>1.1.3</version>
</dependency>
方法工具
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GeodeticCurve;
import org.gavaghan.geodesy.GlobalCoordinates;
/**
* 计算距离
*
* @author lenovo
* @date 2023/4/17
*/
public class GeodesyUtils {
/**
* 计算两个经纬度之间的距离
*
* @param gpsFrom 第一个经纬度
* @param gpsTo 第二个经纬度
* @param ellipsoid 计算方式 Ellipsoid.Sphere偏差更小,推荐使用 Ellipsoid.WGS84偏差也不大
* @return 返回的距离,单位m
*/
public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) {
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
return geoCurve.getEllipsoidalDistance();
}
/**
* 计算两个经纬度之间的距离
*
* @param longitudeFrom 经度出发点
* @param latitudeFrom 维度出发点
* @param latitudeTo 经度目的点
* @param ellipsoid 未读目的点
* @param ellipsoid 计算方式: Ellipsoid.Sphere偏差更小,推荐使用 Ellipsoid.WGS84偏差也不大
* @return 返回的距离,单位m
*/
public static double getDistanceMeter(double longitudeFrom,double latitudeFrom,double longitudeTo,double latitudeTo, Ellipsoid ellipsoid) {
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
GlobalCoordinates gpsFrom=new GlobalCoordinates(longitudeFrom,latitudeFrom);
GlobalCoordinates gpsTo=new GlobalCoordinates(longitudeTo,latitudeTo);
GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
return geoCurve.getEllipsoidalDistance();
}
}
使用
distanceMeter 就是两点之间的距离
double distanceMeter = GeodesyUtils.getDistanceMeter(from.getLongitude(), from.getLatitude(), to.getLongitude(), to.getLatitude(), Ellipsoid.Sphere);