Расчет расстояния между двумя географическими координатами широты и долготы

Я вычисляю расстояние между двумя географическими координатами. Я тестирую свое приложение против 3-4 других приложений. Когда я рассчитываю расстояние, я обычно получаю в среднем 3,3 мили для своих расчетов, тогда как другие приложения получают 3,5 мили. Это большая разница для вычислений, которые я пытаюсь выполнить. Есть ли какие-нибудь хорошие библиотеки классов для расчета расстояния? Я рассчитываю это так на C #:

public static double Calculate(double sLatitude,double sLongitude, double eLatitude, 
                               double eLongitude)
{
    var radiansOverDegrees = (Math.PI / 180.0);

    var sLatitudeRadians = sLatitude * radiansOverDegrees;
    var sLongitudeRadians = sLongitude * radiansOverDegrees;
    var eLatitudeRadians = eLatitude * radiansOverDegrees;
    var eLongitudeRadians = eLongitude * radiansOverDegrees;

    var dLongitude = eLongitudeRadians - sLongitudeRadians;
    var dLatitude = eLatitudeRadians - sLatitudeRadians;

    var result1 = Math.Pow(Math.Sin(dLatitude / 2.0), 2.0) + 
                  Math.Cos(sLatitudeRadians) * Math.Cos(eLatitudeRadians) * 
                  Math.Pow(Math.Sin(dLongitude / 2.0), 2.0);

    // Using 3956 as the number of miles around the earth
    var result2 = 3956.0 * 2.0 * 
                  Math.Atan2(Math.Sqrt(result1), Math.Sqrt(1.0 - result1));

    return result2;
}

Что я делал не так? Следует ли мне сначала рассчитать его в км, а затем преобразовать в мили?

125
задан Jason N. Gaylord 28 March 2017 в 12:52
поделиться