![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
VirtualHouse |
|
|||
Unregistered |
Это умная програмка перевода с координат системы GPS в наши метровые координаты. Очень полезная вещь. Только написана она не на делфи.
1 Функции рабочей книги для преобразования 1 геодезических координат из координатной системы Пулково 1942 ' в координатную систему WGS84 ' Все угловые значения передаются и возвращаются в градусах, ' высоты передаются и возвращаются в метрах 1 Сделано на основании ГОСТ Р 51794-2001 Российской Федерации Const Pi As Double = 3.14159265358979 ' Число, Пи Const ro As Double = 206264.8062 ' Число угловых секунд в радиане 1 Эллипсоид Красовского (Пулково 1942) Const aP As Double = 6378245 ' Большая полуось Const alP As Double = 1 / 298.3 ' Сжатие Const e2P As Double = 2 * alP - alP A 2 ' Квадрат эксцентриситета 1 Эллипсоид GRS80 (WGS84) Const aW As Double = 6378137 ' Большая полуось Const alW As Double = 1 / 298.257223563 ' Сжатие Const e2W As Double = 2 * alW - alW x 2 ' Квадрат эксцентриситета 1 Вспомогательные значения для преобразования эллипсоидов Const a As Double = (aP + aW) /2 Const e2 As Double = (e2P + e2W) / 2 Const da As Double = aW - aP Const de2 As Double = e2W - e2P 1 Линейные элементы трансформирования, в метрах Const dx As Double =23.92 Const dy As Double = -141.27 Const dz As Double = -80.9 1 Угловые элементы трансформирования, в секундах Const wx As Double = 0 Const wy As Double = 0 Const wz AS Double = 0 ' Дифференциальное различие масштабов Const ms As Double = 0 Function WGS84_SK42_Lat(Bd, Ld, H As Double) As Double WGS84_SK42_Lat = Bd - dB(Bd, Ld, H) / 3600 End Function Function SK42_WGS84_Lat(Bd, Ld, H As Double) As Double SK42__WGS84__Lat = Bd + dB(Bd, Ld, H) / 3600 End Function Function WGS84_SK42__Long(Bd, Ld, H As Double) As Double WGS84_SK42__Long = Ld - dL(Bd, Ld, H) / 3600 End Function Function SK42_WGS84_Long(Bd, Ld, H As Double) As Double SK42_WGS84_Long = Ld + dL(Bd, Ld, H) / 3600 End Function Function dB(Bd, Ld, H As Double) As Double Dim B, L, M, N- As Double В = Bd * Pi / 180 L * Ld * Pi / 180 M = a * (1 - e2) / (1 - e2 * Sin(B) A 2) A 1.5 N = a * (1 - e2 * Sin(B) A 2) л -0.5 dB = ro / (M + H) * (N / a * e2 * Sin(B) * Cos(B) * da _ + (NA2/aA2+l) *N* Sin(B) * Cos(B) * de2 / 2 - (dx * Cos(L) + dy * Sin(L)) * Sin(B) + dz * Cos(B)) _ - wx * Sin(L) * (1 + e2 * Cos ,(2 * B) ) _ + wy * Cos(L) * (1 + e2 * Cos(2 * B)) _ - ro * ms * e2 * Sin(B) * Cos(B) End Function Function dL(Bd, Lid, H As Double) As Double Dim B, L, N As Double В = Bd * Pi / 180 L = Ld * Pi / 180 N = a * (1 - e2 * Sin(B) л 2) A -0.5 dL = ro / ((N + H) * Cos(B)) * (-dx * Sin(L) + dy * Cos(L)) + Tan(B) * (1 - e2) * (wx * Cos(L) + wy * Sin(L)) - wz End Function Function WGS84Alt(Bd, Ld, H As Double) As Double Dim B, L, N, dH As Double В = Bd * Pi / 180 L = Ld * Pi / 180 N = a * (1 - e2 * Sin(B) A 2) x -0.5 dH = -a / N * da + N * Sin(B) A 2 * de2 / 2 + (dx * Cos(L) + dy * Sin(L)) * Cos(B) + dz * Sin(B) _ - N * e2 * Sin(B) * Cos(B) * (wx / ro * Sin(L) - wy / ro * Cos(L)) _ + (a A 2 / N + H) * ms WGS84Alt = H + dH End Function |
|||
|
||||
VirtualHouse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.8.2005 Репутация: нет Всего: нет |
ПОПРАВОЧКА
Вместо л и А ставится ^ это в квадрате просто фаин ридер плохо раскидал символы |
|||
|
||||
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Модератор: друзья! Если у вас назрел вопрос по Бэйсику или по Делфи или по этим обоим языкам вместе взятым, то зачем же постить вопрос в раздел Паскаля? В общем, перенесено из Паскаля в Центр помощи. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
VirtualHouse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.8.2005 Репутация: нет Всего: нет |
Спасибо что пернесли туда куда надо. но мне надо решить этот вопрос. с переводом с системы измерения GPS в нашё метровую систему координат
|
|||
|
||||
Mayk |
|
||||||||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Ну и в чем собсно проблема? Инструкции вида
Заменяешь на
на
на
(или как там в пасе консты объявляются?) -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||||||||
|
|||||||||||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 5 Всего: 61 |
Верно.. так... |
|||
|
||||
VirtualHouse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.8.2005 Репутация: нет Всего: нет |
Спасибо но он мне тут даёт ошибку В = Bd * Pi / 180
|
|||
|
||||
Fedor |
|
||||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
-------------------- Мы - Днепряне. Мы всех сильней. |
||||
|
|||||
rsm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: 1 Всего: 62 |
Вроде накатал нечто похожее на этот код. Только перед работой нужно будет вызвать процедуру InitVariables, т.к. Дельфи не понимает объявлений вида "da As Double = aW - aP" ни для констант, ни для переменных.
Это сообщение отредактировал(а) rsm - 20.8.2005, 12:29 |
|||
|
||||
Alex |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 162 |
Не нужно:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
||||
|
|||||
VirtualHouse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.8.2005 Репутация: нет Всего: нет |
Спрасибо большое. Кстати эта нужная прога для всех кто пользуется GPS
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |