Имя: Пароль:
1C
 
v8 Вычисление расстояний по координатам точек на карте
0 chuchundraplus
 
01.09.10
10:07
Есть внешние файлики с координатами снятыми с какойто гео системы в виде типа такого
37.67015,55.78985
нужно считать расстояния между такими точками и т.п.
Как это вообще делается по какой формуле?
1 Fragster
 
гуру
01.09.10
10:08
ну было же
2 Fragster
 
гуру
01.09.10
10:09
3 IronDemon
 
01.09.10
10:12
[[]]
4 chuchundraplus
 
01.09.10
13:44
Функция ПолучитьРасстояниеМеждуТочкамиНаШаре(Долгота1,Широта1,Долгота2,Широта2)Экспорт
   
   ПИ=3.14159265358979;

   Если Широта1 = Неопределено
    или Широта2 = Неопределено
    или Долгота1 = Неопределено
    или Долгота2 = Неопределено
    Тогда
       Возврат Неопределено ;
   КонецЕсли;

   
   Широта1_Рад=ПИ*Широта1/180;
   Широта2_Рад=ПИ*Широта2/180;
   Долгота1_Рад=ПИ*Долгота1/180;
   Долгота2_Рад=ПИ*Долгота2/180;

   РадиусЗемли=6372795;
   b9=cos(Широта1_Рад);
   b10=cos(Широта2_Рад);
   b11=sin(Широта1_Рад);
   b12=sin(Широта2_Рад);
   b13=?(Долгота2_Рад-Долгота1_Рад<0,-(Долгота2_Рад-Долгота1_Рад),Долгота2_Рад-Долгота1_Рад);

   //b14=abs(Широта1_Рад-Широта2_Рад);
   b15=sin(Долгота2_Рад-Долгота1_Рад);
   b16=cos(b13);

   b18=acos(b11*b12+b9*b10*b16);
   УголМеждуТочкамиВРад=atan2(sqrt((b10*b15)*(b10*b15)+(b9*b12-b11*b10*b16)*(b9*b12-b11*b10*b16)),(b11*b12+b9*b10*b16));
   b20=atan((b15*b10)/(b9*b12-b11*b10*b16));

   b22=180*(b20 % (2*ПИ))/ПИ;
   Если (b20>0) Тогда
       b22=180*(b20/ПИ);
   Иначе
       b22=180*((2*ПИ+b20)/ПИ);
   КонецЕсли;
   
   //Азимут = round(b22);
   

   b25=РадиусЗемли*b18;
   Расстояние = round(РадиусЗемли*УголМеждуТочкамиВРад);
       
   Возврат Расстояние;
КонецФункции // ()
5 chuchundraplus
 
01.09.10
13:45
(3) отдельное спасибо