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

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

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


person Mulone    schedule 06.04.2011    source источник


Ответы (3)


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

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

person Bhanu Prakash Pandey    schedule 06.04.2011

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

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

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

person Annu    schedule 06.04.2011

Попробуйте эту функцию 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;
 }

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

person serdarsenay    schedule 04.04.2015