haversine
Назначение
Функция haversine рассчитывает расстояние между двумя GPS координатами с помощью формулы гаверсинуса.
Формула гаверсинуса определяет расстояние по дуге большого круга между двумя точками на сферической поверхности с помощью значений долготы и широты.
Пусть центральный угол \(\theta\) между двумя точками на сферической поверхности равен:
где:
-
\(d\) - расстояние между двумя точками дуги большого круга сферы;
-
\(r\) - радиус сферического тела.
Формула гаверсинуса позволяет рассчитывать гаверсинус \(\theta\) (т.е., \(hav(\theta)\)) из широты (представленной \(\varphi\)) и долготы (представленной \(\lambda\)) двух точек:
где
-
\(\varphi_{1}\), \(\varphi_{2}\) - широта точки 1 и широта точки 2;
-
\(\lambda_{1}\), \(\lambda_{1}\) - долгота точки 1 и долгота точки 2.
Итак, функция гаверсинуса \(hav(\theta)\), применяемая выше к центральному углу \(\theta\) и разницам в широте и долготе, равна
Функция гаверсинуса рассчитывает половину версинуса угла \(\theta\).
Для расчета расстояния \(d\) используйте функцию аркгаверсинуса (обратного гаверсинуса) к \(h = hav(\theta)\) либо функцию арксинуса (обратного синуса):
Аргументы
Функция требует наличия четырех аргументов, выражающих значения широты и долготы. Все эти аргументы отображают значения в градусах в диапазоне от -90 до 90:
-
широта точки 1;
-
долгота точки 1;
-
широта точки 2;
-
долгота точки 2.
Функция также может принимать необязательный аргумент radius, означающий радиус сферического тела в любых единицах измерения. По умолчанию данный аргумент равен 6371 - радиус Земли в километрах.