public class GeodesyUtil {
/**
* 计算两个经纬度之间的距离
*
* @param gpsFrom 第一个经纬度
* @param gpsTo 第二个经纬度
* @param ellipsoid 计算方式
* @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 lon1 第一个经度
* @param lat1 第一个纬度
* @param lon2 第二个经度
* @param lat2 第二个纬度
* @return 返回的距离,单位m
*/
public static BigDecimal getDistanceMeter(double lon1, double lat1, double lon2, double lat2) {
GlobalCoordinates source = new GlobalCoordinates(lon1, lat1);
GlobalCoordinates target = new GlobalCoordinates(lon2, lat2);
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
return BigDecimal.valueOf(getDistanceMeter(source, target, Ellipsoid.Sphere));
}
}
clickhouse计算前后两点间经纬度距离
2024-03-27 16:06:05 35 阅读