Понимаете, у каждого геодезиста, есть программы для обработки наблюдений. В них есть встроенные калькуляторы. Эти программы стоят тысячи $, а калькулятор занимает доли процента от их возможностей, потому Вам не с руки их приобретать. Есть бесплатные калькуляторы. Кто-нибудь знает, в "PHOTOMOD" есть перевод из эллипсоидальной системы координат в картографические проекции?
Здравствуйте! А можно где-нибудь почитать про эти формулы? Интересно как вычисляются массивы коэффициентов pseG, pseH, pseF?
На русском - Математические основы высшей геодезии и картографии Р. Кёниг, К. Вейзе ; пер. с нем. З. Г. Либина ; под ред. А. А. Изотова. - М. : Изд. иностр. лит-ры, 1954г. Возможно, есть у Морозова в "Курс сфероидической геодезии" - точно не помню. Алгоритм есть точно, различаются в деталях реализации. На английском - пройдитесь по ссылкам автора библиотеки http://geographiclib.sourceforge.net/ Автор этой библиотеки в Maxima до 10 порядка нашёл коэффициенты. Там где-то есть ссылка и на оригинальную работу Л. Крюгера. В сети есть статья Karsten Engsager "A HIGHLY ACCURATE WORLD WIDE ALGORITHM FOR THE TRANSVERSE MERCATOR MAPPING" в формате MS Word, у него приведены только готовые разложения до 7-го порядка.
Попробовал сравнить результаты работы этого алгоритма (с параметрами эллипсоида WGS-84) и этого калькулятора http://www.uwgb.edu/dutchs/usefuldata/ConvertUTMNoOZ.HTM - совершенно разные результаты. Что за значения выдает класс TransverseMercator - так и не понял.
Вот результаты сравнения на тестовом массиве библиотеки GeographicLib (порядка 200 000 точек) Также сравнивал с калькулятором Pinnacle и Blue Marble - полёт нормальный. Если бы увидел ваш код, тогда бы можно было что-то подсказать.
Спойлер (Наведите указатель мыши на Спойлер, чтобы раскрыть содержимое) Раскрыть Спойлер Свернуть Спойлер procedure TForm1.FormCreate(Sender: TObject); begin a := 6378137.; recF := 298.257223; f := 1.0 / recF; e := Sqrt(f * (2 - f)); TM := TransverseMercator.Create(a, recF, 0, 0, 7, 0.9996); // UTM end; procedure TForm1.btnCalculate1Click(Sender: TObject); begin B := StrToFloat(edLatitudeWGS84.Text) / 180 * Pi; L := StrToFloat(edLongitudeWGS84.Text) / 180 * Pi; TM.BL2XY(B, L, X, Y); edN.Text := FloatToStr(X); edE.Text := FloatToStr(Y); end; Класс TransverseMercator взят один-в-один из поста #55. Для проверки взял одну лишь точку (56.857847 гр. СШ, 35.919966 гр. ВД). В результате работы этого кода получилось следующее: (X=6889815.34571907, Y=2124685.12654504). Вот этот результат и не понятен. И что является Easting, я что Northing? А тот калькулятор, что я указывал выше, говорит, что Easting= 678026.5, а Northing= 6305362.
Уверен, проблема в том, что второй аргумент процедуры BL2XY(B, L, X, Y) не долгота, а удаление от осевого меридиана. Думаю, что операторы Код: X := Gm*(Beta1 + X) + FNorthing; Y := Gm*(Beta2 + Y) + FEasting; Отвечают на ваш вопрос.
Я взял точку (56.857847 гр. СШ, 35.919966 гр. ВД) для проверки. Не может же значение "35.919966 гр. ВД" (второй аргумент процедуры BL2XY(B, L, X, Y)) быть удалением от осевого меридиана внутри 6-ти градусной зоны?
Класс TransverseMercator - это вычисление координат в проекции ТМ в пределах одной зоны (и пофиг какая её ширина, если только она не больше 2*60°, тогда ошибки начинают быстро нарастать. Правда надо сказать, что ни одному вменяемому человеку и в голову не придет работать в такой зоне, т.к. масштабные искажения-просто обхохочешься). Для того, чтобы считать в картографической системе координат, надо знать правила задания осевых меридианов. Для вашего примера осевой меридиан Lc = 33°. Поэтому аргумент L=(35.919966-33)/180*Pi.
Как найти номер зоны UTM и долготу осевого меридиана (LongOrigin) см. http://www.igorexchange.com/node/927
Этих систем координат даже на одну территорию уйма. Вам какую СК надо? --- Сообщения объединены, 30 окт 2014, Оригинальное время сообщения: 30 окт 2014 --- Вы лучше градусы, минуты и секунды напишите словами после цифр.
Так, для примера И, плюс, источник происхождения этих цифр. З.Ы. Мне вот обратные азимутальные (retroazimuthal) нравятся.
Еще раз. Условно говоря, кто дал? Источник происхождения этих цифр? Это показания навигатора, сняли с карты (с какой?) и т. д. Для чего вам нужны X и Y? Поясняю. Одна и та же точка для разных эллипсоидов (и даже для одного и того же эллипсоида, но в разных отсчётных системах) будет иметь разные координаты. И наоборот. Одни и те же координаты для разных эллипсоидов и отсчётных систем соответствуют физически разным точкам. Поэтому, не зная источника происхождения этих цифр, однозначного ответа не получить. Это же замечание относится и к прямоугольным координатам. Если вы скажете, для каких целей они вам нужны, тогда можно предположить, что делать дальше.
Далее обсуждение данных координат прекращаем, а общие вопросы разбирать продолжаем. --- Сообщения объединены, 30 окт 2014, Оригинальное время сообщения: 30 окт 2014 --- Термин "сдвиг" в геодезии используется, вот только по отношению к картам он не используется. Бывает сдвиг координат. Вы об этом?
Кстати, примером правоты уважаемого stout является перечень координат той точки, которую Вы просили пересчитать (я оставил только последние цифры): x=079.2 y=206.5 x=109.2 y=393.8 x=116.4 y=294.4 x=146.3 y=481.6 И это только в основных системах координат на используемых у нас референц-эллипсоидах. А ещё есть местные системы координат...