|
Как в 1С посчитать расстояние между двумя географическими координатами? |
Функция ABS(Число)
Если Число<0 Тогда
Возврат -1*Число;
Иначе
Возврат Число;
КонецЕсли;
КонецФункции
Функция РастояниеВМетрахОтДо(Ширина1,Долгота1,Ширина2,Долгота2)
Пи=3.14; РадиусЗ = 6372795;
Расстояние = РадиусЗ*ATAN(Sqrt(Pow(COS(Пи*Ширина2/180)*SIN(ABS(Пи*Долгота2/180-Пи*Долгота1/180)),2)+Pow(COS(Пи*Ширина1/180)*SIN(Пи*Ширина2/180)-SIN(Пи*Ширина1/180)*COS(Пи*Ширина2/180)*COS(ABS(Пи*Долгота2/180-Пи*Долгота1/180)),2))/(SIN(Пи*Ширина1/180)*SIN(Пи*Ширина2/180)+COS(Пи*Ширина1/180)*COS(Пи*Ширина2/180)*COS(ABS(Пи*Долгота2/180-Пи*Долгота1/180))));
Возврат Расстояние;
КонецФункции
//Пример 2
Функция ПросчитатьРастояниеОтДо(ШиротаКоординаты1,ДолготаКоординаты1,ШиротаКоординаты2,ДолготаКоординаты2)
// cos(d) = sin(?А)*sin(?B) + cos(?А)*cos(?B)*cos(?А ? ?B),
// где ?А и ?B & широты, ?А, ?B & долготы данных пунктов, d & расстояние между пунктами, измеряемое в радианах
// длиной дуги большого круга земного шара.
// Расстояние между пунктами, измеряемое в километрах, определяется по формуле:
// L = d·R,
// где R = 6371 км & средний радиус земного шара.
Возврат (ASin(sin(ШиротаКоординаты1)*sin(ШиротаКоординаты2) + cos(ШиротаКоординаты1)*cos(ШиротаКоординаты2)*cos(ДолготаКоординаты1 - ДолготаКоординаты2)))*6371;
КонецФункции Read Full Article
|