当您知道Java中的经度和纬度时,以米为单位计算距离

我需要计算两个坐标给定的两个点之间的距离。我正在处理的项目是一个Java项目,因此Java代码会很棒,但是也可以提供伪代码,然后我可以自己实现它:)

您可能知道,有三种表示坐标的方法:

  • 度:分:秒(49°30'00“ N,123°30'00” W)

  • 度:小数分钟(49°30.0',-123°30.0'),(49d30.0m,-123d30.0')

  • 小数度(49.5000°,-123.5000°),通常使用4-6个十进制数。

这是输入坐标的第三种方式,因此首选使用此值的代码:)


jeck猫
浏览 1067回答 3
3回答

互换的青春

基于关于stackoverflow的另一个问题,我得到了此代码。这将以米为单位计算结果,而不是以英里为单位:) public static float distFrom(float lat1, float lng1, float lat2, float lng2) {    double earthRadius = 6371000; //meters    double dLat = Math.toRadians(lat2-lat1);    double dLng = Math.toRadians(lng2-lng1);    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +               Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *               Math.sin(dLng/2) * Math.sin(dLng/2);    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));    float dist = (float) (earthRadius * c);    return dist;    }

人到中年有点甜

您可以将Java Geodesy Library用于GPS,它使用Vincenty的公式,该公式考虑了地球表面的曲率。实现是这样的:import org.gavaghan.geodesy.*;...GeodeticCalculator geoCalc = new GeodeticCalculator();Ellipsoid reference = Ellipsoid.WGS84;  GlobalPosition pointA = new GlobalPosition(latitude, longitude, 0.0); // Point AGlobalPosition userPos = new GlobalPosition(userLat, userLon, 0.0); // Point Bdouble distance = geoCalc.calculateGeodeticCurve(reference, userPos, pointA).getEllipsoidalDistance(); // Distance between Point A and Point B结果距离以米为单位。

斯蒂芬大帝

在C ++中,是这样完成的:#define LOCAL_PI 3.1415926535897932385 double ToRadians(double degrees) {  double radians = degrees * LOCAL_PI / 180;  return radians;}double DirectDistance(double lat1, double lng1, double lat2, double lng2) {  double earthRadius = 3958.75;  double dLat = ToRadians(lat2-lat1);  double dLng = ToRadians(lng2-lng1);  double a = sin(dLat/2) * sin(dLat/2) +              cos(ToRadians(lat1)) * cos(ToRadians(lat2)) *              sin(dLng/2) * sin(dLng/2);  double c = 2 * atan2(sqrt(a), sqrt(1-a));  double dist = earthRadius * c;  double meterConversion = 1609.00;  return dist * meterConversion;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java