Lat Lon Distance



       


       


Дистанция 0 км



Пример
Париж - Москва
48.857823, 2.295182 - 55.753929, 37.620308

Yandex map - 2500 км
Google map - 2489.93 км
Алгоритм Lat Lon - 2489.92 км
Алгоритм Гипотенуза - 3599.20 км

Кратчайший маршрут 2800 км
Соответствует показаниям одометра автомобиля.




Алгоритм вычисления дистанции на сферической поверхности (Lat Lon)
Wikipedia: Great-circle distance


function distance(lat1, lon1, lat2, lon2) {
  var dLat = ((lat2-lat1)*Math.PI)/180;
  var dLon = ((lon2-lon1)*Math.PI)/180;
  var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos((lat1*Math.PI)/180) * Math.cos((lat2*Math.PI)/180) * Math.sin(dLon/2) * Math.sin(dLon/2);
  var b = 2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  var l = (6371*b).toFixed(2); // R Земли 6371 км
  return l;
}




Алгоритм вычисление дистанции на плоской поверхности по теореме Пифагора: длина гипотенузы
Полная формула для дистанции ab=√((xb-xa)2+(yb-ya)2)
Wikipedia: Гипотенуза


function calculateDistance2(lat1, lon1, lat2, lon2) {
  if (lat1 > lat2) var ac = lat1 - lat2; else var ac = lat2 - lat1;
  if (lon1 > lon2) var bc = lon1 - lon2; else var bc = lon2 - lon1;
  var ab = Math.sqrt((ac*ac)+(bc*bc));
  var l = (ab*100).toFixed(2);
  return l;
}




Алгоритм вычисление дистанции по полярной системе координат
нуждается в процедуре перевода координат



Для просмотра кода этой страницы нажмите в браузере (Google Chrome) клавиши Ctrl + U.

Страница создана для проверки алгоритмов определения дистанции между двумя координатами на поверхности Земли.
Если у вас есть замечания, дотолнения или уточнения - пишите сообщите.



Я работаю на диспетчерскую службу грузовых автоперевозок и такси, как по городам, так и по междугородним. У меня стояла задача вычисления расстояния своими средствами без сервисов Яндекса и Гугла. Алгоритм с радиусом Земли тяжеловесный (много таких операций будет тормозить сервер), поэтому я хотел его обойти и использовать формулу по-проще. Первое, что вспомнил: можно на плоской поверхности вычислить расстояние между двумя точками по длине гипотенузы (перевод из треугольника). И это работает - но только на расстоянии до 1 километра. А дальше, чем большее расстояние, тем большая ошибка от реальных показаний одометров автомобилей. Я работал и над таксометрами. Пришлось отказаться и использовать тяжеловесный но точный алгоритм.

Все расчеты и коды программ я выложил на этой странице с демонстрацией их работы. Каждый человек, имеющий желание познать истину и хоть какие-то познания в математике из школьного курса, может это все сам проверить.

Поинтересуйтесь хотя бы что такое гипотенуза.

Дополнительная информация по теме.