Я пытаюсь преобразовать координаты ECEF (Earth Centered, Earth Fixed), которые определены в X, Y, Z с центром в (0,0,0) в LLA (Широта, Долгота, Высота). Есть несколько методов, которые я нашел в Интернете (пожалуйста, дайте мне знать, если есть лучшие методы). Оба четко описаны в этом документе на страницах 3-4:
http://www.microem.ru/pages/u_blox/tech/dataconvert/GPS.G1-X-00006.pdf
Один использует итерационный метод, а другой - решение в закрытой форме. Я хотел бы знать, какой метод использовать для моего приложения. Два соответствующих критерия - это скорость (время вычислений) и точность . Алгоритмы не сложны в реализации, но я не думаю, что сравнивать их просто ... Например, я чувствую, что точность будет зависеть от входной координаты ECEF.
Так есть ли у кого-нибудь больше информации о каждом методе? Было бы замечательно, если бы я мог получить, какой из них быстрее (угадывая замкнутую форму) и приблизительную точность, которую я могу ожидать от каждого (то есть, в пределах того, сколько метров реального LLA я могу ожидать, чтобы мой ответ был или что-то в этом роде) ,
Ответы:
Вы можете сравнить два. Я подозреваю, что в большинстве приложений будет выбран второй (прямой) метод.
Точность первого (итеративного) метода зависит от точности, с которой вы выполняете вычисления и когда решаете прекратить итерации. Поэтому его можно сделать так же точно, как и второй метод для всех входных данных, где оба они действительны (первый метод работает только для наземных высот, а не для астрономических).
Что быстрее, зависит от среды программирования, вычислительной архитектуры и степени точности. (В моих тестах с Mathematica второй - прямой - метод на самом деле в два раза быстрее первого, практически независимо от того, сколько неточностей было допущено в итеративном методе.) Поскольку оба метода занимают примерно одинаковое количество вычислений, но сначала нужно повторить хотя бы один раз, это на самом деле может быть медленнее. Если вы выполняете только преобразования на уровне моря (h = 0), итерационный метод может быть немного быстрее, но разница не будет огромной (я был бы удивлен двойным преимуществом).
Кстати, обратите внимание, что «закрытая формула» (для второго метода) немного обманчива: когда вы начинаете вычислять высоту h , вам нужно получить радиус кривизны N в терминах только что вычисленной широты ( фи ) , Для этого используйте формулу для N, найденную в предыдущем разделе.
источник