|
Как в 1С посчитать расстояние между двумя географическими координатами? |
|
09.01.17 23:16 |
Функция 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
|