Страница 1 из 1

Азимут в GPS не бьет с рассчетным

Добавлено: 20 апр 2006, 14:13
eLVik
Здравствуйте. Нужна Ваша помощь в уточнении/исправлении алгоритма нахождения азимута.

Исходные данные:
1) карта в системе координат СК-42 (шейпы). Параметры проекции:
Поперечная Меркатора,
Эллипсоид Красовского,
Центр. меридиан 57 (Республика Коми)
Смещение на восток: 10500000
Параметр сжатия: 1
Единицы измерения и карты: метры

2) та же карта закачанная в GPS-приемник (eTrex Vista), настроенный на выдачу координат в СК-42
DX = 24; DY = -141; DZ = -81; DA = -108; DF = 0.004808

3) географические координаты двух точек, выдаваемые GPS

Необходимо:
программно (через скрипт Avenue) определить азимут направления от первой точки ко второй

Азимут, выдаваемый GPS составляет 33 градуса,
Мой скрипт выдает 41 градус!!!

Чего я делаю не так.

СКРИПТ ПОЛУЧЕНИЯ АЗИМУТА:

Код: Выделить всё

' Порядок вызова
' azimuth = av.Run("GetAzimuth", {point1, point2})

pA = self.Get(0) ' первая точка
pB = self.Get(1) ' вторая точка

' Координаты вектора
X = pB.GetX - pA.GetX
Y = pB.GetY - pa.GetY

' Длина вектора
L = ((X*X) + (Y*Y)).Sqrt 

IF (L = 0) THEN
  Return nil
END

' Значение угла, отсчитываемого по тригонометрическому кругу
phi = (X / L).ACos.AsDegrees  

IF (Y < 0) THEN
  phi = 360 - phi
END

IF (phi <= 90) THEN
  azimut = 90 - phi
ELSE
  azimut = 450 - phi 
END  

Return azimut
ОСНОВНОЙ СКРИПТ

Код: Выделить всё


p1_Lat = 60.34602778
p1_Lon = 49.66977778
p2_Lat = 60.34644444
p2_Lon = 49.67036111

thePrj = av.GetActiveDoc.GetProjection ' Получаем проекцию вида
p1 = Point.Make(p1_Lon, p1_Lat).ReturnProjected(thePrj)
p2 = Point.Make(p2_Lon, p2_Lat).ReturnProjected(thePrj)

azimuth = av.Run("GetAzimuth", {p1, p2})
MsgBox.Info(azimuth.asString, "")


Добавлено: 21 апр 2006, 00:02
Максим Дубинин
А теперь попробуйте использовать ваш скрипт для неспроектированных точек убрав ReturnProjected в point.make.

Тоже когда-то писали про азимут: http://gis-lab.info/qa/aveazimuth.html

Добавлено: 24 апр 2006, 12:06
S.E.
При расчете азимута Вы считаете угол от напрвления 0, но это не магнитное направление, а направление линий километровой сетки в проекции Гаусса-Крюгера. Надо учитывать поправки на магнитный меридиан, которые можно посмотреть на любой "зеленке".
Кстати сказать, в GPS_премниках также есть установки поправок на магнитное склонение.