Сфероидическая геодезия

Тема в разделе "Помощь студентам", создана пользователем Malevaje, 17 май 2020.

  1. Malevaje

    Malevaje Форумчанин

    Вообщем допилил скрипт.
    Содержит в себе 6 функций:
    2 функции перевод из градусов в секунды и обратно;
    2 функции перевод секунд в радианы и обратно;
    1 функции считает по формулам ((5.16) пособия см. топик.) калибровал по таблице (5.1)
    1 функция считает по формулам ((5.20) пособия см. топик.) калибровал по таблице (5.2)

    По сравнению с таблицами 5.1, 5.2 значения коэффициентов совпадают до 8-9 разряда (кроме этого: ( l + (a3 + а5 * l^2) * l^2 * l * cosB) таблицы 5.1 у меня вообще другое получилось).

    Значения вычисляемых величин совпали в целой части:
    Мои | В таблицах
    x = 5728374.55 | x = 5728374,726
    y = 210198.2 | y = 210198.193
    |
    B = [51, 38, 43.9081] | 51° 38' 43,9024"
    l = [3, 2, 13.1366] | 3° 02' 13,1362'
    L = [24, 2, 13.1366] | 24° 02' 13,1362"

    Запустить проще всего под оболочкой Spyder (Anaconda), под PyCharm может понадобиться подгрузить модуль numpy.
     

    Вложения:

  2. Deleted member 122005

    Deleted member 122005 Только чтение

    Я прошу прощения, перепутал разряд. Это не 0.17 мм, а 0.17 м будет здесь. Это видно по расхождениям в координате Х, кстати. И вот 0.17 м - это не есть гут. Конечно, пункты ГГС по факту бывало определялись и с дециметровой точностью, но когда такие погрешности вносят вычисления - это, в общем, не допустимо.
    --- Сообщения объединены, 1 июн 2020, Оригинальное время сообщения: 1 июн 2020 ---
    При вычислениях хотя бы в разряде сантиметров всё должно сходиться. А один сантиметр в угловой мере соответствует 4 разряду после запятой в геодезических координатах, как и указано в таблицах.
    В общем... Могу задать вам новый критерий правильности расчётов - геодезические координаты должны совпадать с учебником.
     
  3. Malevaje

    Malevaje Форумчанин

    Проверить, точность вычислений по этому скрипту можно только по большому объёму данных, одной таблички мало, к тому же в пособии есть ошибки.
     
  4. Deleted member 122005

    Deleted member 122005 Только чтение

    Ошибки возможны, особенно если учесть то, какой объём данных там изложен. Но обычно во избежание таких ошибок вычисления выполнялись в две руки (если они выполнены вручную). Если у обоих вычислителей результаты сходились, их принимали. Другое дело - возможные опечатки, которые могли быть не обнаружены при создании учебника. Но здесь расхождения в широте полностью соответствуют расхождениям в координате Х, так что здесь речь не об опечатке. В общем, ошибка в учебнике лично мне кажется менее вероятной, чем ошибка в скрипте.
     
  5. Malevaje

    Malevaje Форумчанин

    Что ж, займусь этим пожалуй когда тему из раздела "помощь студентам" перенесут в раздел "геодезия как наука" :Cool:
     
  6. stout

    stout Форумчанин

    Пока пишу комменты, чтобы вы не теряли время, начну с главного
    PyGeodesy вам в помощь. Конкретно – Module etm.
    Учебник Евгения Григорьевича неплохой. У него только одна проблема – он устарел уже в момент своего выхода лет на 30.
    Проверьте sek_r_grad(s) для s = -203986.99999::biggrin24.gif:: Не то чтобы совсем неправильно, но как-то неаккуратненько.
    IMHO, разряд округления надо добавить в параметры.
     
  7. Malevaje

    Malevaje Форумчанин

    Обязательно посмотрю, но позже, а то в сентябре сессия, в октябре госы. Нужно еще с небес на землю вернуться, в смысле по прикладной много работы есть.
    В.П. Морозов тот так вообще 1979 г., тож на то и выходит. Но это я как понял проблема не авторов пособий, а ВУЗа кодить мне например было предложено на Delphi ::rofl::
    Хм, ::huh.gif::
    sek_r_grad(-203986.99999)
    Out[2]: [-57, 20, 13.0]
    sek_r_grad(203986.99999)
    Out[3]: [56, 39, 47.0]
    Здесь уже да моя проблема, я весьма поверхностно коснулся организации точных вычислений на ЭВМ, по этому даже не представляю от чего такая лажа :(. Буду работать в этом направлении.
    Тут уже проблема в том, что скрипт на скорую руку, на "коленке писал", от того округлял первым, что под руку попалось, то есть '{:.n}'.format. Как в кавычки переменную засунуть я х.з., а городить огород из if, elif желания что то нет. А вообще полностью с вами согласен, и даже думал об этом когда писал.
     
  8. stout

    stout Форумчанин

    180×60×60/π = 206 264.80624709635515647335733078
    Ещё cо времён раннего фортрана, если не определена величина π, то её вычисляют как π = 4×atan(1).
    Все современные процессоры, интерпретаторы и и.д. поддерживают стандарт IEEE 754 вычислений с плавающей точкой. А в нем предусмотрено 5 видов округлений. По умолчанию стоит, так называемое банковское округление, которое мы называем округлением по Гауссу.
    Геодезическую астрономию Василий Иванович Суслин проверяет, а ТФП – Юзефович?
    Это вы зря, перемудрили. Вместо
    z = float('{:.8f}'.format(y / (Nx * np.cos(Bx))))
    надо просто z = y / (Nx * np.cos(Bx)) и т.д.
    Нормальное предложение, приятный во всех отношениях язык, есть немного приличных библиотек по численным методам. Конечно, с Python не сравнить в этом плане.
    У меня есть простенькие формулы такого вида
    param_lat.gif
    где всего один член ряда (N=1) даёт такую точность (число верных десятичных знаков после запятой, расстояние в метрах)
    param_lat_N=1.png
    Т.е. чем больше широта, тем выше точность.
    Это к тому, что формулы разные бывают.

    Найдите Хемминг Р.В. - Численные методы для научных работников и инженеров - 1972
    В основу всей книги положены два тезиса, неоднократно повторяемых. Это «цель расчетов — понимание, а не числа» и «прежде чем решать задачу, подумай, что делать с ее решением».
    В 1954 году на русском языке вышел перевод с немецкого книги 1951 года Математические основы высшей геодезии и картографии Рюдигер Кениг, К. Вейзе. Другой книги такого уровня нет и поныне.
     
    ErnieBoyd, igor kruchkovskiy и Deleted member 122005 нравится это.
  9. Malevaje

    Malevaje Форумчанин

    Снова попытался разобраться sek_r_grad(s), изменил получения остатка от деления с оператора "%" на функцию math.fmod() - значения отрицательных величин с положительными, ровно на градус одну минуту стали отличаться... Вообщем надо копать..
    Да. Буду с этим позже разбираться сейчас реально времени нет.
    Вот тут не могу сказать, я да дистанционном учусь, нам преподавателей перед сессией назначают. Василий Иванович Суслин к сожалению не знаю кто такой, у Юзефовича пару книжек прочитал, было бы интересно послушать.
    Учту, когда буду path_2 пилить :). Везде говорят, что, чем больше операций с плавающей точкой и чем выше разряд, тем больше накапливается ошибка вычислений, это была попытка типа точность повысить.
    Я не в смысле что язык плохой, слышал у нас на нём всё "высокоточное" летает. Я про порог вхождения. Нет если представить, что все студенты в школе с олимпиад по информатике не вылазили, то да можно хоть чистый "СИ" на первом курсе давать. Но в реальности это лучший способ привить стойкое отвращение к программированию у большей части студентов. Так, гораздо лучше дать сначала "простенький" скриптовый язык без компиляторов и прочего хардкора, потом показать сколько времени занимает обработка цикла у Python и сколько тот же цикл обрабатывает "СИ++"...
    Ну и да Delphi морально устарел.
    Ужас :Scare3:
    Нашёл. Изучим.
    [/QUOTE]
    А вот тут фейл. Есть только в библиотеке.
    Как она точно на английском называется? Может на английском её проще найти будет
     
  10. stout

    stout Форумчанин

    Александр Павлович, чьи книги вы читали, умер в прошлом году. Сейчас этот курс ведёт его сын – Павел Александрович.

    Насколько знаю, на английском не издавалась. На родном немецком есть на генезисе.
    Mathematische Grundlagen der Höheren Geodäsie und Kartographie
     
    ErnieBoyd нравится это.
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление