Ошибка в формуле вычисления координат для проекции Меркатора
Добавлено: 05 ноя 2019, 11:30
Уважаемые участники форума, имеется проблема с давно и хорошо известной картографической эллиптической проекцией Меркатора, которая возникла при попытке программно реализовать известные для нее численные методы расчетов.
На странице :
https://blog.foxylab.com/prakticheskaya-kartografiya/
в разделе "Эллиптическая проекция Меркатора" приведена итерационная формула для вычисления
широты методом последовательных приближений ( итерационным ) по известным координатам в метрах
( последняя формула в этом разделе на этой странице. Хотел вставить скриншот этого места страницы,
но рисунки не вставляются ).
При программной реализации в Delphi 7 этот метод прекрасно работает без каких-либо замечаний
и выдает результат с требуемой точностью.
На странице :
https://ru.wikipedia.org/wiki/Проекция_Меркатора
для того же самого ( вычисление широты ) приведена другая итерационная формула
( последняя формула на этой странице ),
при программной реализации метода по этой формуле итерационный процесс демонстрирует
крайнюю неустойчивость и, фактически, является расходящимся ( или очень плохо сходится,
в отличие от первой формулы ). Хотя в отдельных случаях и выдается правильный результат, совпадающий с результатом по первой формуле, но чаще происходит следующее :
итерационный процесс либо вылетает по причине превышения допустимого числа итераций, либо выдает значение с недопустимо большой погрешностью, либо выдает откровенно неверный результат. Для южного полушария ( отрицательные исходные значения метров пареметра "y" ) в качестве значений выдается откровенная белиберда или вылетает по причине недопустимых значений аргументов в используемых тригонометрических функциях.
Обе формулы работают со следующими параметрами земного эллипсоида :
радиус идеальной земной сферы - 6 371 000 метров;
большая полуось - a = 6 378 245 метров;
малая полуось - b = 6 356 863 метров.
Понятно, что в приведенной формуле ошибка. Но вот какая ?
Может, просто опечатка, а может, она неверно выведена ?
Может, кто-нибудь владеет какой-либо информацией на этот счет и может ею поделиться ?
Каким образом были выведены формулы по обоим вариантам ?
Имеются ли другие формулы расчетов широты для известных метров ?
Я состряпал простейший проект в Delphi 7, который демонстрирует все перечисленные выше эффекты и
который я использовал для отладки. Если он кому-то интересен, то выложу его здесь.
На странице :
https://blog.foxylab.com/prakticheskaya-kartografiya/
в разделе "Эллиптическая проекция Меркатора" приведена итерационная формула для вычисления
широты методом последовательных приближений ( итерационным ) по известным координатам в метрах
( последняя формула в этом разделе на этой странице. Хотел вставить скриншот этого места страницы,
но рисунки не вставляются ).
При программной реализации в Delphi 7 этот метод прекрасно работает без каких-либо замечаний
и выдает результат с требуемой точностью.
На странице :
https://ru.wikipedia.org/wiki/Проекция_Меркатора
для того же самого ( вычисление широты ) приведена другая итерационная формула
( последняя формула на этой странице ),
при программной реализации метода по этой формуле итерационный процесс демонстрирует
крайнюю неустойчивость и, фактически, является расходящимся ( или очень плохо сходится,
в отличие от первой формулы ). Хотя в отдельных случаях и выдается правильный результат, совпадающий с результатом по первой формуле, но чаще происходит следующее :
итерационный процесс либо вылетает по причине превышения допустимого числа итераций, либо выдает значение с недопустимо большой погрешностью, либо выдает откровенно неверный результат. Для южного полушария ( отрицательные исходные значения метров пареметра "y" ) в качестве значений выдается откровенная белиберда или вылетает по причине недопустимых значений аргументов в используемых тригонометрических функциях.
Обе формулы работают со следующими параметрами земного эллипсоида :
радиус идеальной земной сферы - 6 371 000 метров;
большая полуось - a = 6 378 245 метров;
малая полуось - b = 6 356 863 метров.
Понятно, что в приведенной формуле ошибка. Но вот какая ?
Может, просто опечатка, а может, она неверно выведена ?
Может, кто-нибудь владеет какой-либо информацией на этот счет и может ею поделиться ?
Каким образом были выведены формулы по обоим вариантам ?
Имеются ли другие формулы расчетов широты для известных метров ?
Я состряпал простейший проект в Delphi 7, который демонстрирует все перечисленные выше эффекты и
который я использовал для отладки. Если он кому-то интересен, то выложу его здесь.