Формула пересчёта между зонами в Пулково 42 (+)
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Формула пересчёта между зонами в Пулково 42 (+)
очень. и давно.
судя по числу параметров это полиномиальное преобразование, а не сдвиг осей начала координат. Это так?
судя по числу параметров это полиномиальное преобразование, а не сдвиг осей начала координат. Это так?
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Формула пересчёта между зонами в Пулково 42 (+)
Не обязательно. В программу заложены алгоритмы поиска параметров как 2D, так и 3D-преобразований. Результаты я проверял на основе статей G.A. Watson - Computing Helmert Transformations. Совпадение полное.
Этот проект имеет название KoordTrans3D. Исходный код написан на Java и его можно скачать вместе с исполняемым файлом.
Для ознакомления прошу сюда.
Этот проект имеет название KoordTrans3D. Исходный код написан на Java и его можно скачать вместе с исполняемым файлом.
Для ознакомления прошу сюда.
-
- Новоприбывший
- Сообщения: 1
- Зарегистрирован: 15 мар 2010, 17:07
- Репутация: 0
Re: Формула пересчёта между зонами в Пулково 42 (+)
Здесь собственноручные утилиты на AutoLispе
При пересчете следует учитывать (отбрасывать) номер зоны и сдвиг осевого меридиана 500000 для 6-тиградусных зон или 250000 для 3-хградусных. Номер зоны 11 - это примерно Сибирь в 6-градусной зоне, или Европейская территория в 3-хградусной зоне прямоугольных координат.
Код: Выделить всё
RG 57.29577951308232
;;;------------------------------ (BL_xy 57.22559515555 -0.1296765916666)
;;;ГЕОДЕЗИЧЕСКИЕ -> ПРЯМОУГОЛЬНЫЕ (strcat (rtos X_new)" "(rtos Y_new))
;;;------------------------------ ответ = "6345155.1106 -7833.1096"
(defun BL_xy (B_old L_old / COS2_B Nx A0 A3 A4 A5 A6)
(setq B_old (/ B_old RG) L_old (/ L_old RG))
(setq COS2_B (expt(cos B_old)2))
(setq Nx (- 6399698.9018(*(- 21562.267(*(- 108.973(* 0.612 COS2_B))COS2_B))COS2_B)))
(setq A0 (- 32140.404(*(- 135.3302(*(- 0.7092(* 0.0040 COS2_B))COS2_B))COS2_B)))
(setq A3 (- (*(+ 0.3333333(* 0.001123 COS2_B))COS2_B)0.1666667))
(setq A4 (- (*(+ 0.25(* 0.00252 COS2_B))COS2_B)0.04166))
(setq A5 (- 0.0083(*(- 0.1667(*(+ 0.1968(* 0.0040 COS2_B))COS2_B))COS2_B)))
(setq A6 (* (-(* 0.166 COS2_B)0.084)COS2_B))
(setq X_new (-(* 6367558.4969 B_old)(*(- A0 (*(+ 0.5(*(+ A4(* A6(expt L_old 2)))(expt L_old 2)))
(expt L_old 2)Nx))(sin B_old)(cos B_old))))
(setq Y_new (*(+ 1.0(*(+ A3(* A5(expt L_old 2)))(expt L_old 2))) L_old Nx (cos B_old)))
(setq Gamma_gp (*(+ 1.0(*(+ 0.33333 (* 0.00647 COS2_B) (* 0.2 (expt L_old 2) COS2_B)
(- 0.0 (* 0.067(expt L_old 2)))) (expt L_old 2)COS2_B)) L_old (SIN B_old)RG)))
;;;------------------------------ (xy_BL 6345155.11 -7833.11)
;;;ПРЯМОУГОЛЬНЫЕ -> ГЕОДЕЗИЧЕСКИЕ (strcat (Deg->Str B_new 5)" "(Deg->Str L_new 5))
;;;------------------------------ ответ = "057°13'32.14256 -000°07'46.83576"
(defun xy_BL (x_old y_old / Bet COS2_Bet Bx COS2_Bx Nx Zet Zet2 B2 B3 B4 B5)
(setq Bet (/ x_old 6367558.4969))
(setq COS2_Bet (expt(cos Bet)2))
(setq Bx(+ Bet(*(+ 50221746.0 (*(+ 293622.0(*(+ 2350.0(* 22 COS2_Bet))COS2_Bet))COS2_Bet))
0.0000000001 (sqrt(- COS2_Bet (expt COS2_Bet 2))))))
(setq COS2_Bx(expt(cos Bx)2))
(setq Nx (- 6399698.9018(* (- 21562.267(*(- 108.973(* 0.612 COS2_Bx))COS2_Bx))COS2_Bx)))
(setq Zet (/ y_old (* Nx(cos Bx))))
(setq Zet2 (expt Zet 2))
(setq B2 (*(+ 0.5(* 0.0033692 COS2_Bx))(sin Bx)(cos Bx)))
(setq B3 (- 0.333333(*(- 0.166667 (* 0.001123 COS2_Bx))COS2_Bx)))
(setq B4 (+ 0.25(* 0.16161 (expt(cos Bx)2))(* 0.00562 (expt(cos Bx)4))))
(setq B5 (- 0.2(*(- 0.1667(* 0.0088 COS2_Bx)) COS2_Bx)))
(setq B_new (- (RAD->DEG Bx)(*(- 1.0(*(- B4(* 0.12 Zet2))Zet2))Zet2 B2 RG)))
(setq L_new (*(- 1.0(*(- B3(* B5 Zet2))Zet2)) Zet RG))
(setq Gamma_pg (*(*(- 1.0 (*(- 0.33333 (* 0.00225 COS2_Bx COS2_Bx)
(* (- 0.2(* 0.067 COS2_Bx))Zet2))Zet2)) Zet (sin Bx))RG)))
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
Re: Формула пересчёта между зонами в Пулково 42 (+)
Jey:
Интересует программа, а ещё больше интересует её листинг
Нескромно, да?
Shev:
Я такое писал для эллипсоида с задаваемыми пользователем параметрами. А не только именно для Красовского. В результате применяю для расчётов по WGS84, Бесселю и Кларку.
Интересует программа, а ещё больше интересует её листинг
Нескромно, да?
Shev:
Я такое писал для эллипсоида с задаваемыми пользователем параметрами. А не только именно для Красовского. В результате применяю для расчётов по WGS84, Бесселю и Кларку.
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Формула пересчёта между зонами в Пулково 42 (+)
Ну почему же? Очень даже скромно! Листинг внутри архива. Если Вы основательно исследуете содержимое файла с расширением *.jar (который у меня легко открывается даже в Total Commander), то сразу же найдете все, что Вам нужно!
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Формула пересчёта между зонами в Пулково 42 (+)
Очень было любезно с Вашей стороны опубликовать листинг на AutoLisp. Я бы посоветовал Вам (на будущее) крепить такие данные в виде файлов к сообщению. Очень практично. Прочитавший сможет легко найти ему применение.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 22 гостя