Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Jigil
Зарегистрирован: 15.07.2013 Сообщения: 4
|
Добавлено: Пн Июл 15, 2013 6:26 pm Заголовок сообщения: Некорректный азимут при создании линии командой Create Line |
|
|
Помогите, пожалуйста. Команда Create Line отрисовывает линию с некорректным азимутом. Особенно это заметно, когда точки лежат приблизительно на одной линии и азимут около 90 или 270. То есть, если азимут 95, а получается визуально меньше 90. С чем связано? |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пн Июл 15, 2013 7:13 pm Заголовок сообщения: |
|
|
Проекцию слоя скажите и как вы рассчитываете азимут (формулу). |
|
Вернуться к началу |
|
|
Jigil
Зарегистрирован: 15.07.2013 Сообщения: 4
|
Добавлено: Вт Июл 16, 2013 4:40 pm Заголовок сообщения: |
|
|
У меня основная программа работает на VBA в Acsess и запускает через батник файл MBX, которая делает выкопировку из карты с наложенной на нее линией с заданным масштабом.
В мапбейсике это первый скрипт, поэтому не понятно, что такое проекция слоя.
Азимут считается по корректной формуле, все сходится с измерениями. А вот на карте более южная точка оказывается выше, чем более северная. Помогите, пожалуйста. Объясните про проекцию. |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Вт Июл 16, 2013 7:29 pm Заголовок сообщения: |
|
|
Карта состоит из слоев. Любой слой карты имеет проекцию - План-схема или земную. Я и спрашиваю, в какой проекции у вас слои. Если они в какой-нибудь земной проекции, а вычисление азимута вы производите по обычным формулам для прямоугольных координат, как описано здесь:
http://gis-lab.info/qa/aveazimuth.html
то вы конечно будете получать указанную ошибку. Т.к. слой у вас на сфере. |
|
Вернуться к началу |
|
|
Jigil
Зарегистрирован: 15.07.2013 Сообщения: 4
|
Добавлено: Ср Июл 17, 2013 1:44 pm Заголовок сообщения: |
|
|
Азимут вычисляю по этой формуле:
Pi = 3.14159265358979
Rad = 6372795
Num = 7
lat1 = x1 * Pi / 180
lat2 = x2 * Pi / 180
long1 = y1 * Pi / 180
long2 = y2 * Pi / 180
cl1 = Cos(lat1)
cl2 = Cos(lat2)
sl1 = Sin(lat1)
sl2 = Sin(lat2)
Delta = long2 - long1
If ((x1 <> x2) Or (y1 <> y2)) Then
cdelta = Cos(Delta)
sdelta = Sin(Delta)
p1 = (cl2 * sdelta) ^ 2
p2 = ((cl1 * sl2) - (sl1 * cl2 * cdelta)) ^ 2
p3 = (p1 + p2) ^ 0.5
p4 = sl1 * sl2
p5 = cl1 * cl2 * cdelta
p6 = p4 + p5
p7 = p3 / p6
anglerad = Atn(p7)
dist = anglerad * Rad
X = (cl1 * sl2) - (sl1 * cl2 * cdelta)
y = sdelta * cl2
Z = (Atn(-y / X)) * 180 / Pi
If (X < 0) Then
Z = Z + 180
'
End If
Z = -((Z * 100 + 18000) Mod 36000 - 18000) / 100
Z = Z / 180 * Pi
Floor = Int(Z / (2 * Pi))
If Floor > Z / (2 * Pi) Then
Floor = Floor - 1
End If
anglerad2 = Z - ((2 * Pi) * Floor)
angledeg = (anglerad2 * 180) / Pi
Она учитывает кривизну земли. А где посмотреть свойства проекции слоя. Я новичок в МапБейсике. |
|
Вернуться к началу |
|
|
Jigil
Зарегистрирован: 15.07.2013 Сообщения: 4
|
Добавлено: Ср Июл 17, 2013 3:45 pm Заголовок сообщения: |
|
|
Нашел слой, который вносил искажения на карту опытным путем. Мне сказали, что так бывает, если слои с разными проекциями попадают в один рабочий набор. Всем спасибо, но хотелось бы подвести теорию и узнать где можно посмотреть, какая у слоя проекция? Может получится подправить? |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Ср Июл 17, 2013 7:00 pm Заголовок сообщения: |
|
|
В самой MapInfo непросто смотреть - меню Файл - Сохранить копию, в диалоге выбора файла есть кнопка Проекция, там видно текущую проекцию. Можно сторонними утилитами, например, Инструментарий для MapInfo отображает проекцию слоя в инструменте "Управление слоями+" |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Ср Авг 07, 2013 2:56 pm Заголовок сообщения: |
|
|
Андрей Могильный писал(а): |
В самой MapInfo непросто смотреть - меню Файл - Сохранить копию, в диалоге выбора файла есть кнопка Проекция, там видно текущую проекцию. Можно сторонними утилитами, например, Инструментарий для MapInfo отображает проекцию слоя в инструменте "Управление слоями+" |
Действительно смотреть не просто, а очень просто. Начиная с Mapinfo 6.5 в стандартных утилитах есть "Check and Set Coordsys Bounds". там все видно... |
|
Вернуться к началу |
|
|
|