Как я могу рассчитать расстояние и направление, используя широту и долготу? - PullRequest
1 голос
/ 14 ноября 2010

Допустим, эти 4 значения:

        double lat1 = ToRadians(53.14722222222222);
        double lon1 = ToRadians(-1.8494444444444447);
        double lat2 = ToRadians(52.20444444444445);
        double lon2 = ToRadians(-0.14055555555555554);

Я рассчитываю на карте Google получить направление, я получил около 181 км, но на этом сайте (http://www.movable -type.co.uk / scripts / latlong.html) он получил около 170 км.

В моем источнике я использую java и c # для реализации этой функции, когда я вычислял ее, я получил около 155 км.

почему они не эквивалентны?

У вас есть функция, которая может точно рассчитать эти 2 значения?

Ответы [ 2 ]

1 голос
/ 14 ноября 2010

Формула Хаверсайна на веб-сайте достаточно точна "по прямой линии".Вы не говорите, как использовали карты Google для расчета расстояния, но если вы просто введете значения и попросите его рассчитать маршрут, он будет использовать расстояние вождения (по дорогам), которое будет больше.Если ваша реализация формулы Haversine дает ответ, отличный от веб-сайта, то либо вы, либо они неправильно его реализовали.Вы можете найти другой веб-сайт , чтобы проверить свой ответ и узнать, какие именно.

Вы можете найти реализацию в C # здесь .

0 голосов
/ 14 ноября 2010

В Google Earth это значение составляет 155,92 км.Так что это согласуется с вашим результатом.

В Google Планета Земля используется Расчет расстояния между большими кругами , который учитывает тот факт, что Земля является Сферой.Я не знаю о двух других источниках.

Я бы сохранил вашу текущую реализацию.

...