Рассчитать расстояние между двумя точками широты и долготы? (формула Хаверсина)
Мне нужно было рассчитать algorithms большое расстояние между algorithm точками для моего проекта, поэтому latitude-longitude я пошел дальше и попытался maps оптимизировать код, который haversine нашел здесь. В среднем в cartography разных браузерах моя новая mathematical реализация работает в 2 раза быстрее, чем ответ, получивший latitude-longitude наибольшее количество голосов.
function distance(lat1, lon1, lat2, lon2) {
var p = 0.017453292519943295; // Math.PI / 180
var c = Math.cos;
var a = 0.5 - c((lat2 - lat1) * p)/2 +
c(lat1 * p) * c(lat2 * p) *
(1 - c((lon2 - lon1) * p))/2;
return 12742 * Math.asin(Math.sqrt(a)); // 2 * R; R = 6371 km
}
Вы algorithm-design можете поиграть с моим jsPerf latitude-longitude и увидеть results here.
Недавно мне нужно lat-long было сделать то же самое arithmetic на python, поэтому вот реализация на python:
from math import cos, asin, sqrt, pi
def distance(lat1, lon1, lat2, lon2):
p = pi/180
a = 0.5 - cos((lat2-lat1)*p)/2 + cos(lat1*p) * cos(lat2*p) * (1-cos((lon2-lon1)*p))/2
return 12742 * asin(sqrt(a)) #2*R*asin...
И mathematical для полноты: Haversine в Википедии.
algorithm
math
maps
latitude-longitude
haversine
Рассчитать расстояние между двумя точками широты и долготы? (формула Хаверсина)
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.