KM错误的距离?

时间:2017-05-18 19:49:10

标签: java geolocation

此类存储有关地球上某个位置的信息。地点是 使用纬度和经度指定。该类包括一种方法 以千米计算两个地点之间的距离。

`*这个实现基于Stuart Reges的例子  华盛顿大学。

public class GeoLocation 
{
 // Earth radius in miles
public static final double RADIUS = 3963.1676;  

// Number of kilomteres in one mile
public static final double KM_PER_MILE = 1.60934;

private double latitude;
private double longitude;

/**
 * Constructs a geo location object with given latitude and longitude
 */
public GeoLocation(double theLatitude, double theLongitude) 
{
    latitude = theLatitude;
    longitude = theLongitude;
}

/**
 * Returns the latitude of this geo location
 */
public double getLatitude() 
{
    return latitude;
}

/**
 * returns the longitude of this geo location
 */
public double getLongitude() 
{
    return longitude;
}

// returns a string representation of this geo location
public String toString() 
{
    return "latitude: " + latitude + ", longitude: " + longitude;
}

public double distanceFromInKilometers(GeoLocation other)
{
    double lat1 = Math.toRadians(latitude);
    double long1 = Math.toRadians(longitude);
    double lat2 = Math.toRadians(other.latitude);
    double long2 = Math.toRadians(other.longitude);
    // apply the spherical law of cosines with a triangle composed of the
    // two locations and the north pole
    double theCos = Math.sin(lat1) * Math.sin(lat2) +
        Math.cos(lat1) * Math.cos(lat2) * Math.cos(long1 - long2);
    double arcLength = Math.acos(theCos);

    return KM_PER_MILE * arcLength * RADIUS;
}'

所以我有这个代码,意味着转换为公里和: 旧金山到纽约市目前转换为4133.143717886466,这是正确的,但国际航空公司的转换是5576.443040444087,应该是5576.443040444088,任何具体原因,当这个数字在另一个工作时被关闭1?

0 个答案:

没有答案