Просчитать расстояние в метрах между двумя координатами (вернее, длину геодезической прямой).
// Радиус погрешности
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
представляют радиус Земли (в метрах) и число Пи соответственно. Затем вычисляются значения fi1
, fi2
, dfi
и dla
, которые представляют широту и разницу в широте и долготе двух точек (в радианах).
Следующие строки вычисляют значения a
и c
, которые являются промежуточными значениями, используемыми в формуле гаверсинуса.
В конце концов вычисляется distance
, которое представляет расстояние между двумя точками на поверхности Земли. Если это расстояние меньше или равно заданному радиусу погрешности, функция возвращает строку «Находится в радиусе погрешности
». В противном случае она возвращает «За пределами радиуса погрешности
».
Термин «гаверсинус» происходит от латинского слова haversinus, которое в свою очередь образовано от half versed sine, что в переводе означает «половина вертикального синуса».
Гаверсинус угла α определяется как (1 - cos(α))/2. Этот термин был введен в 1835 году Джеймсом Инманом.
Формула гаверсинуса часто используется в навигации и географии для вычисления расстояний между двумя точками на сфере, такой как Земля, по их широте и долготе.
Эта формула может быть использована на веб-сайте для решения различных задач, связанных с географическими данными. Ниже представлены некоторые примеры:
Помимо этого, формула может быть полезна для любого веб-сайта или приложения, которому требуется вычислить географическое расстояние между двумя точками.
Автор: @lofthousespb
Взято от Дмитрия Соловей — @solovey_nchub
Простой текст
Работает на Creatium