Математический форум Math Help Planet
Обсуждение и решение задач по математике, физике, химии, экономике Теоретический раздел |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
новый онлайн-сервис число, сумма и дата прописью |
|
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Страница 1 из 1 |
[ Сообщений: 9 ] |
|
Автор | Сообщение | |
---|---|---|
Uvle4ennii |
|
|
Я заинтересовался вопросом составления калькулятора перевода географических координат в координаты Гаусса Крюгера. Нашёл программный код для я.п. python. (Будет представлен ниже) Его взял за основу, не знаю, что из этого выйдет, но решил попробовать. Возникла трудность в подсчете выражения где необходимо возвести в отрицательную степень. Под корнем получается отрицательное число и соответсвенно не вижу этому решения в обычном виде без комплексных чисел. v = a*F*(1-e2*(sin(Lat)**2))**-0.5 p = a*F*(1-e2)*(1-e2*(sin(Lat)**2))**-1.5 Математикой давно не занимался, не могу вспомнить как правильно решить эти выражения правильно. Буду очень благодарен, если кто то даст какие то разъяснения. # Перевод географических координат (широты и долготы) точки в прямоугольные # координаты проекции Гаусса-Крюгера (на примере координат Москвы). # Географические координаты точки (в градусах) dLon = 37.618 # Долгота (положительная для восточного полушария) dLat = 55.752 # Широта (положительная для северного полушария) # Номер зоны Гаусса-Крюгера (если точка рассматривается в системе # координат соседней зоны, то номер зоны следует присвоить вручную) zone = int(dLon/6.0+1) # Импорт математических функций from math import sin, cos, tan, pi # Параметры эллипсоида Красовского a = 6378245.0 # Большая (экваториальная) полуось b = 6356863.019 # Малая (полярная) полуось e2 = (a**2-b**2)/a**2 # Эксцентриситет n = (a-b)/(a+b) # Приплюснутость # Параметры зоны Гаусса-Крюгера F = 1.0 # Масштабный коэффициент Lat0 = 0.0 # Начальная параллель (в радианах) Lon0 = (zone*6-3)*pi/180 # Центральный меридиан (в радианах) N0 = 0.0 # Условное северное смещение для начальной параллели E0 = zone*1e6+500000.0 # Условное восточное смещение для центрального меридиана # Перевод широты и долготы в радианы Lat = dLat*pi/180.0 Lon = dLon*pi/180.0 # Вычисление переменных для преобразования v = a*F*(1-e2*(sin(Lat)**2))**-0.5 p = a*F*(1-e2)*(1-e2*(sin(Lat)**2))**-1.5 n2 = v/p-1 M1 = (1+n+5.0/4.0*n**2+5.0/4.0*n**3)*(Lat-Lat0) M2 = (3*n+3*n**2+21.0/8.0*n**3)*sin(Lat-Lat0)*cos(Lat+Lat0) M3 = (15.0/8.0*n**2+15.0/8.0*n**3)*sin(2*(Lat-Lat0))*cos(2*(Lat+Lat0)) M4 = 35.0/24.0*n**3*sin(3*(Lat-Lat0))*cos(3*(Lat+Lat0)) M = b*F*(M1-M2+M3-M4) I = M+N0 II = v/2*sin(Lat)*cos(Lat) III = v/24*sin(Lat)*(cos(Lat))**3*(5-(tan(Lat)**2)+9*n2) IIIA = v/720*sin(Lat)*(cos(Lat)**5)*(61-58*(tan(Lat)**2)+(tan(Lat)**4)) IV = v*cos(Lat) V = v/6*(cos(Lat)**3)*(v/p-(tan(Lat)**2)) VI = v/120*(cos(Lat)**5)*(5-18*(tan(Lat)**2)+(tan(Lat)**4)+14*n2-58*(tan(Lat)**2)*n2) # Вычисление северного и восточного смещения (в метрах) N = I+II*(Lon-Lon0)**2+III*(Lon-Lon0)**4+IIIA*(Lon-Lon0)**6 E = E0+IV*(Lon-Lon0)+V*(Lon-Lon0)**3+VI*(Lon-Lon0)**5 print ('Широта: ', dLat) print ('Долгота: ', dLon) print ('Северное смещение: ', N) print ('Восточное смещение:', E) |
||
Вернуться к началу | ||
sergebsl |
|
|
Код я не разбирал.
А каким образом Вы переводдите сферические координаты в прямоугольные? |
||
Вернуться к началу | ||
michel |
|
|
Uvle4ennii писал(а): Под корнем получается отрицательное число и соответсвенно не вижу этому решения в обычном виде без комплексных чисел. v = a*F*(1-e2*(sin(Lat)**2))**-0.5 p = a*F*(1-e2)*(1-e2*(sin(Lat)**2))**-1.5 Этого быть не может, потому что по Вашим данным 0<e2<1. |
||
Вернуться к началу | ||
Uvle4ennii |
|
|
[/math]
michel писал(а): Uvle4ennii писал(а): Под корнем получается отрицательное число и соответсвенно не вижу этому решения в обычном виде без комплексных чисел. v = a*F*(1-e2*(sin(Lat)**2))**-0.5 p = a*F*(1-e2)*(1-e2*(sin(Lat)**2))**-1.5 Этого быть не может, потому что по Вашим данным 0<e2<1. Извиняюсь, что ввёл в заблуждение, так как взял неверные переменные. Вместо e2 взял экспоненту в квадрате. Сейчас принялся исправлять ошибки |
||
Вернуться к началу | ||
Uvle4ennii |
|
|
С учетом исправленных ошибок, конечные значения оказались не верны.
Ошибка в N порядка 2000, ошибка в E порядком 4000. В чем проблема не понимаю. Можете проверить, правильно ли я преобразовал выражения для v и p под Excel Исходное: v = a*F*(1-e2*(sin(Lat)**2))**-0.5 p = a*F*(1-e2)*(1-e2*(sin(Lat)**2))**-1.5 Преобразованное: V=a*F*sqrt(1/(1-e2*sin (Lat)^2)) P=a*F*(1-e2)*sqrt(1/(1-e2*sin (Lat)^2)^3) |
||
Вернуться к началу | ||
Uvle4ennii |
|
|
sergebsl писал(а): Код я не разбирал. А каким образом Вы переводдите сферические координаты в прямоугольные? Не понял к чему Ваш вопрос. У меня нет необходимости переводить сферические координаты в прямоугольные |
||
Вернуться к началу | ||
Booker48 |
|
|
Uvle4ennii писал(а): v = a*F*(1-e2*(sin(Lat)**2))**-0.5 p = a*F*(1-e2)*(1-e2*(sin(Lat)**2))**-1.5 Преобразованное: V=a*F*sqrt(1/(1-e2*sin (Lat)^2)) P=a*F*(1-e2)*sqrt(1/(1-e2*sin (Lat)^2)^3) Суть формул не разбирал. Советую освоить редактор. Только для переменной [math]v[/math]: Исходное выглядит так: [math]v=\frac{ aF }{ \sqrt{1-e_2\sin^2{(Lat)}} }[/math] А преобразованное так: [math]v=\frac{ aF }{ \sqrt{1-e_2\sin{(Lat)^2}} }[/math] Проверьте, возможно вы берёте квадрат не от синуса, а от его аргумента. Вторую переменную не смотрел. |
||
Вернуться к началу | ||
За это сообщение пользователю Booker48 "Спасибо" сказали: Uvle4ennii |
||
Uvle4ennii |
|
|
Спасибо за помощь.
Но мои сомнения были в своих знаниях преобразования отрицательной степени в положительную с соответствующими изменениями. Проверив себя сам, я убедился, что сделал всё верно. Оказывается необходимости в этом не было, excel без проблем понимает функцию возведения числа в отрицательную степень. Что касаемо квадрата синуса. В обоих случаях там нужен квадрат аргумента. |
||
Вернуться к началу | ||
Uvle4ennii |
|
|
Прошу всех меня извинить. Что заставил обратить внимание на тему которую я поднял.
Моя ошибка заключалась в переменной. Zona. Чтобы результаты подсчетов были верны, необходимо воспользоваться функцией int(), которая округляет число до ближайшего наименьшего целого. Что в свою очередь необходимо для решения этой задачи только потому что номер зоны Гаусса-Крюгера в необходимых координатах не может быть дробным. Спасибо всем за внимание. Зачастую мне просто нужно с кем то поделиться, чтобы самому в чем то разобраться и найти свои ошибки |
||
Вернуться к началу | ||
[ Сообщений: 9 ] |
Похожие темы | Автор | Ответы | Просмотры | Последнее сообщение |
---|---|---|---|---|
Построить Машину Тьюринга для перевода в конфигурацию | 1 |
545 |
20 ноя 2016, 18:32 |
|
Калькулятор
в форуме Информатика и Компьютерные науки |
3 |
125 |
25 июн 2023, 12:40 |
|
Новый калькулятор
в форуме Информатика и Компьютерные науки |
2 |
288 |
21 май 2020, 13:03 |
|
Калькулятор уравнений
в форуме Алгебра |
14 |
528 |
02 апр 2022, 12:31 |
|
Математический калькулятор
в форуме Объявления участников Форума |
2 |
274 |
11 ноя 2020, 17:37 |
|
Калькулятор для расчета вероятности
в форуме Теория вероятностей |
2 |
767 |
10 сен 2015, 14:51 |
|
Пошаговый числовой калькулятор
в форуме Объявления участников Форума |
8 |
358 |
29 янв 2021, 17:03 |
|
Продам графический калькулятор TI-84 Plus
в форуме Объявления участников Форума |
1 |
396 |
01 мар 2017, 14:15 |
|
Калькулятор для расчета резонатора Гельмгольца
в форуме Объявления участников Форума |
0 |
2360 |
02 сен 2015, 20:46 |
|
Матричный калькулятор и редактор LaTeX
в форуме Объявления участников Форума |
5 |
806 |
13 янв 2021, 01:27 |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |