Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: MuloneОтветов: 3

Я хочу определить расстояние между двумя латлонными точками. Формула простого расстояния http://www.purplemath.com/modules/distform.htm неверно, потому что мы имеем дело с двумя разными мерами (широта и долгота).

Есть стандартное решение этой проблемы?

coordinatesdistancelatitude-longitude

Ответы

Ответ 1 · рейтинг 2 · Bhanu Prakash Pandey

используйте 1_.

см. эту ссылку http://www.movable-type.co.uk/scripts/latlong.html

Ответ 2 · Annu

попробуйте это. Здесь используется формула "гаверсинуса" для вычисления расстояний по дуге большого круга между двумя точками, то есть кратчайшего расстояния над земной поверхностью, что дает расстояние "по прямой" между точками (игнорируя любые холмы!).

Формула Хаверсина:

R = earth’s radius (mean radius = 6,371km)

Δlat = lat2− lat1 Δlong = long2− long1 a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2) c = 2.atan2(√a, √(1−a) ) д = Р.к

или перейдите по ссылке,http://www.movable-type.co.uk/scripts/latlong.html

Ответ 3 · serdarsenay

Попробуйте эту функцию javascript haversine вместе с вспомогательной функцией torad(), которую я использую для своего картографического приложения.

function calculateHaversineDistance(lat1x, lon1, lat2x, lon2) {
    var R = 6371; // km
    var dLat = toRad(lat2x-lat1x);
    var dLon = toRad(lon2-lon1);
    var lat1 = toRad(lat1x);
    var lat2 = toRad(lat2x);
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    return R * c;
 }
function toRad(x) {
    return x * Math.PI / 180;
 }

Надеюсь это поможет.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы