1. Главная страница
  2. ››
  3. Формулы
  4. ››
  5. Поиск объекта в радиусе по формуле гаверсинуса - Upline Studio

Поиск объекта в радиусе по формуле гаверсинуса - Upline Studio

Задача

Просчитать расстояние в метрах между двумя координатами (вернее, длину геодезической прямой).

// Радиус погрешности
radius = 100;
aLat = round(sum(map(request.data.a, toNumber(split(item," ")[0])))/count(request.data.a),6);
aLong = round(sum(map(request.data.a, toNumber(split(item," ")[1])))/count(request.data.a),6);
cLat = if(count(split(arr[0].arr_coordinates," "))>2,toNumber(split(split(arr[0].arr_coordinates," ")[1],",")[0]),1);
cLong = if(count(split(arr[0].arr_coordinates," "))>2,toNumber(split(split(arr[0].arr_coordinates," ")[1],",")[1]),1);
r = 6371000;
pi = 3.1416;
fi1 = aLat * pi/180; // Широта a в радианах
fi2 = cLat * pi/180; // Широта b в радианах
dfi = (cLat-aLat) * pi/180; // Разница широт в радианах
dla = (cLong-aLong) * pi/180; // Разница долгот в радианах

a = sin(dfi/2) * sin(dfi/2) + cos(fi1) * cos(fi2) * sin(dla/2) * sin(dla/2);
c = 2 * atan2(sqrt(a), sqrt(1-a));

distance = r * c;

if (distance <= radius,
"Находится в радиусе погрешности",
"За пределами радиуса погрешности"
)

Полный анализ формулы

Формула использует метод, известный как формула гаверсинуса community.esri.com, для вычисления расстояния между двумя точками на поверхности сферы, используя широту и долготу этих точек. В контексте данного кода, эти точки представляют географические координаты и используются для определения, находится ли конкретная точка внутри определенного радиуса погрешности.

Сначала вычисляются средние значения широты и долготы из данных запроса (request.data.a). Затем эти значения используются вместе с координатами из массива arr для вычисления расстояния между двумя точками.

После этого вычисляются различные компоненты формулы гаверсинуса. Константы r и pi представляют радиус Земли (в метрах) и число Пи соответственно. Затем вычисляются значения fi1fi2dfi и dla, которые представляют широту и разницу в широте и долготе двух точек (в радианах).

Следующие строки вычисляют значения a и c, которые являются промежуточными значениями, используемыми в формуле гаверсинуса.

В конце концов вычисляется distance, которое представляет расстояние между двумя точками на поверхности Земли. Если это расстояние меньше или равно заданному радиусу погрешности, функция возвращает строку «Находится в радиусе погрешности». В противном случае она возвращает «За пределами радиуса погрешности».

О термине «гаверсинус»

Краткое объяснение

Термин «гаверсинус» происходит от латинского слова haversinus, которое в свою очередь образовано от half versed sine, что в переводе означает «половина вертикального синуса».

Гаверсинус угла α определяется как (1 - cos(α))/2. Этот термин был введен в 1835 году Джеймсом Инманом.

Формула гаверсинуса часто используется в навигации и географии для вычисления расстояний между двумя точками на сфере, такой как Земля, по их широте и долготе.

Возможное использование формулы

Эта формула может быть использована на веб-сайте для решения различных задач, связанных с географическими данными. Ниже представлены некоторые примеры:

  1. Сервисы доставки: Веб-сайты, предоставляющие услуги доставки, могут использовать эту формулу для определения расстояния между точкой отправления и точкой назначения. Это может помочь в расчете стоимости доставки или времени доставки.
  1. Мобильные приложения: Мобильные приложения, которые используют геолокацию, могут использовать эту формулу для определения расстояния между пользователем и определенной точкой интереса, например, ближайшим рестораном или магазином.
  1. Социальные сети: Социальные сети или приложения знакомств могут использовать эту формулу для отображения пользователей или событий, которые находятся в определенном радиусе от пользователя.
  1. Приложения для путешествий: Сайты и приложения для путешествий могут использовать эту формулу для расчета расстояний между различными туристическими достопримечательностями, помогая путешественникам планировать свой маршрут.
  1. Навигационные системы: Навигационные системы или карты могут использовать эту формулу для определения кратчайшего расстояния между двумя точками на Земле en.wikipedia.orgrosettacode.org.

Помимо этого, формула может быть полезна для любого веб-сайта или приложения, которому требуется вычислить географическое расстояние между двумя точками.

Источники

Автор: @lofthousespb

Взято от Дмитрия Соловей — @solovey_nchub

Другие формулы Creatium

Logo Upline Studio Creatium

Наша команда Uplinestudio разрабатывает сайты под разные потребности клиентов. Одним из ключевых направлений в нашей разработке является создание сайтов на Creatium.

Оставить заявку

Работает на Creatium