К работе приступил недавно, опыт работы тоже весьма ничтожен, но от работодателя получил задание на поиск программы (способа) перевода координат из СК-42 в СК-63 и наоборот. Работодатель в свою очередь предоставил мне уже известные координаты 8-ми точек в обеих системах. Где бы я не искал и какие способы трансформации не пробовал, у меня получались отклонения от "эталонных" координат в СК-63, которые встречаются в каждой координате: по X - -0.69, по Y - 0.17. это данные только из одного конвертера. Остальные способы также дают подобные погрешности, которые стабильные для каждой точки. Почему возникают такие отклонения от "эталона" и как это можно исправить. Возможно, кто-то поможет подсказав алгоритм нахождения параметров перехода по уже известным точкам.
http://geodesist.ru/forum/resources...lja-perescheta-koordinat-i-poiska-kljuchej.3/ --- Сообщения объединены, , Оригинальное время сообщения: --- http://geodesist.ru/forum/resources...pereschjota-koordinat-po-obschim-tochkam.147/
Учтите, что какой бы алгоритм Вы не получили, он будет подходить только для небольшого участка. Именно это было заложено в СК63 для введения в заблуждение тогдашнего наиболее вероятного противника и сегодняшнего геодезиста, т.к. тогдашние геодезисты, при наличии допуска, всегда имели на необходимый участок ключи перевода СК42 <> СК63.
Сгенерировал с регулярным шагом сетку на восточном краю 6° зоны в проекции Гаусса-Крюгера (для определённости пусть это будет 7 зона), перевел координаты в соседнюю восточную зону. Эти координаты принял за опорные. В названии точки закодированы её координаты относительно центра (N+000E+000) Так, N-100E-100 означает на смещение на 100 км на юг и 100 км на запад. Принял 9 координат за опорные (базовые). Ниже на рисунке отмечены галочками. Посчитал коэффициенты преобразования, получил Код: FORMULA: ================================================== I^2 = -1; Zout = (Xout+I*Yout); Z = [(X+I*Y)-(XSo+I*YSo)]*scale; G[k] = (C[2*k+1]+I*C[2*k+2]); Zout = sum(G[k]*Z^k,k=0..Degree)/scale + (XTo+I*YTo) CODE: ===================================================== U := (X - XSo)*scale; V := (Y - YSo)*scale; P[0] := 1; Q[0] := 0; P[1] := U; Q[1] := V; for j := 2 to Degree do begin P[j] := U*P[j - 1] - V*Q[j - 1]; Q[j] := U*Q[j - 1] + V*P[j - 1]; end; Xout := 0; Yout := 0; for k := Degree downto 0 do begin Xout := Xout + (C[2*k + 1]*P[k] - C[2*k + 2]*Q[k]); Yout := Yout + (C[2*k + 1]*Q[k] + C[2*k + 2]*P[k]); end; Xout := Xout/scale + XTo; Yout := Yout/scale + YTo; =========================================================== XSo = 6 211 715.262871000 YSo = 281 490.122246000 XTo = 6 209 000.000000000 YTo = 656 000.000000000 scale = 3.07714280984456E-005 CurrentOrder = 4 C[ 1] = -4.99552992964485E-012 C[ 2] = -5.42786965001477E-012 C[ 3] = 9.95947643859761E-001 C[ 4] = -8.66868963285015E-002 C[ 5] = -1.82642855298373E-005 C[ 6] = -1.47840019397034E-004 C[ 7] = 4.44002111523613E-008 C[ 8] = 3.74803366678066E-007 C[ 9] = 2.06269777890296E-010 C[10] = 2.73784072619332E-010 Отсортировал по последнему столбцу (расстояние в метрах вычисленных координат от контрольных(опорных)). Нетрудно заметить, что для точки, находящейся на расстоянии в 3.33 раза дальше от центра (141.42 км), чем самая удалённая базовая(опорная) точка, ошибка составляет 0.08 мм. Кстати, вот вам и опровержение, что для локализации/калибровки опорные точки должны располагаться снаружи (или на границе) района работ. Но такая высокая точность возможна только потому, что мы можем точно пересчитать (не отнаблюдать!). Если уменьшить точность исходных координат до 1 мм, то результат получаем намного хуже. Но если в качестве базовых точек включить крайние, то результат получается вполне сносным, а диаметр района составляет ≅283 км. Это много или мало? Полученные ключи (коэффициенты) C[1]÷C[10] связаны строгой математической зависимостью с параметрами проекции, котоhую можно определить, зная параметры исходной. По большому счёту, получили значения, описывающие 7 зону проекции Гаусса-Крюгера. С этими параметрами проекции невязки на контрольных точках меньше, чем с использованием коэффициентов гармонического полинома C[1]÷C[10].
Насколько я помню, когда даже калькуляторы были за счастье, ключ был в виде формул для X и Y с синусами и косинусами. По-видимому, уважаемому antohahaha92 нужен именно такой, простой ключ, а не программа, которых, "как собак нерезаных".
Синусы и косинусы – это вопрос интерпретации. Тот же результат и ту же точность можно получить, если обозначить И никаких синусов, косинусов не будет. Правда, в этом случае действительно район будет очень маленьким. Где-то был пример здесь на форуме, что для 20×20 км невязка может быть метровая. --- Сообщения объединены, , Оригинальное время сообщения: --- О, формулы в формате латеха глючат.