GetAngle method (CRS)

Возвращает угол между опорным направлением, заданным географической точкой, и направлением на вторую точку.

Применяется к:

CRS

Синтаксис:

Visual Basic:

Function GetAngle(Lat As Double, Lon As Double, Xo As Double, Yo As Double, X As Double, Y As Double, flags As Long) As Double

Lat, Lon - широта и долгота точки земной поверхности в градусах, задающей опорное направление.

Xo, Yo - координаты вершины угла в метрах.

X, Y - координаты второй точки в метрах.

flags - единицы измерения результата: 0 - радианы, 0x01 - градусы.

Описание:

Угол отсчитывается в вершине Xo, Yo по часовой стрелке - от направления на точку Lat, Lon к направлению на точку X, Y. Результат лежит в диапазоне от 0 до 2π радиан (от 0 до 360 градусов).

Обратите внимание на порядок координат: X - северная координата, Y - восточная.

Метод обобщает GetAzimuth: азимут является частным случаем, когда опорным служит направление на север, то есть Lat = 90, Lon = 0.

Для одного и того же направления значения GetAngle и GetAzimuth могут незначительно расходиться. Это следствие того, что методы используют разные вспомогательные проекции: азимут вычисляется через проекцию Гаусса-Крюгера с центральным меридианом, проходящим через вершину, а GetAngle - через равноугольную проекцию Ламберта с точкой касания в вершине.

Пример:

Visual Basic:

Sub CRS_GetAngle
Set crs = CreateObject("ZuluLib.CRS")
crs.InitByCode("EPSG:3857")

'Вершина угла - точка (0, 0).
'Опорное направление задано точкой на экваторе к востоку от вершины.
'Вторая точка смещена от вершины на 1000 м к северу.
'X - северная координата, Y - восточная, flags = 1 - результат в градусах.
MsgBox crs.GetAngle(0, 1, 0, 0, 1000, 0, 1)   'вернет 270 с точностью до погрешности вычислений
End Sub

Python:

import zulu

def Macro_CRS_GetAngle():
    crs = zulu.CRS()
    crs.InitByCode("EPSG:3857")

    # Вершина угла - точка (0, 0).
    # Опорное направление задано точкой на экваторе к востоку от вершины.
    # Вторая точка смещена от вершины на 1000 м к северу.
    # X - северная координата, Y - восточная, flags = 1 - результат в градусах.
    print(crs.GetAngle(0, 1, 0, 0, 1000, 0, 1))   # 269.9999999999887