Calculer la distance de deux geo points de km c#

Je voudrais calculer la distance de deux geo points. les points sont attribués en longitude et latitude.

les coordonnées sont:

point 1: 36.578581, -118.291994

point 2: 36.23998, -116.83171

ici un site pour comparer les résultats:

http://www.movable-type.co.uk/scripts/latlong.html

voici le code que j'ai utilisé à partir de ce lien:
Calculer la distance entre deux points dans google maps V3

    const double PIx = Math.PI;
    const double RADIO = 6378.16;

    ///<summary>
    ///Convert degrees to Radians
    ///</summary>
    ///<param name="x">Degrees</param>
    ///<returns>The equivalent in radians</returns>
    public static double Radians(double x)
    {
        return x * PIx / 180;
    }

    ///<summary>
    ///Calculate the distance between two places.
    ///</summary>
    ///<param name="lon1"></param>
    ///<param name="lat1"></param>
    ///<param name="lon2"></param>
    ///<param name="lat2"></param>
    ///<returns></returns>
    public static double DistanceBetweenPlaces(double lon1, double lat1, double lon2, double lat2)
    {
        double R = 6371; //km
        double dLat = Radians(lat2 - lat1);
        double dLon = Radians(lon2 - lon1);
        lat1 = Radians(lat1);
        lat2 = Radians(lat2);

        double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Sin(dLon / 2) * Math.Sin(dLon / 2) * Math.Cos(lat1) * Math.Cos(lat2);
        double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
        double d = R * c;

        return d;
    }


Console.WriteLine(DistanceAlgorithm.DistanceBetweenPlaces(36.578581, -118.291994, 36.23998, -116.83171));

le problème est que j'obtiens deux résultats différents.

mon résultat: 163,307 km

suite du site: 136 km

des suggestions???

torti

Vous avez fait quelque peu douteux hypothèse que la terre est équatorial et polaire rayons sont les mêmes.

OriginalL'auteur tro | 2011-07-01