Преобразование координат
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 14 окт 2007, 14:26
- Репутация: 0
Преобразование координат
Здравствуйте, сразу замечу, что в данной тематике я не компетентен. Пробовал разобраться сам, просмотрев информацию на данном форуме и др. источниках, но не уверен, что все правильно понял. Хотя задача вроде тривиальная.
По сути вопроса, даны геодезические координаты точки [B; L] в системе СК42, задача перевести их в плоские прямоугольные [x; y] в проекции Гаусса-Крюгера. В ГОСТе 51794-2001 нашел формулы 25-26, служащие по идее именно для этого. При этом значения получаются неверные (выполняя обратное преобразование [x;y] -> [B;L], получаю совсем не то).
Не могли бы вы подсказать, что я делаю не так, привести источники и/или пример такого преобразования (типа есть такие-то BL из них получаем такие-то xy).
Заранее спасибо.
По сути вопроса, даны геодезические координаты точки [B; L] в системе СК42, задача перевести их в плоские прямоугольные [x; y] в проекции Гаусса-Крюгера. В ГОСТе 51794-2001 нашел формулы 25-26, служащие по идее именно для этого. При этом значения получаются неверные (выполняя обратное преобразование [x;y] -> [B;L], получаю совсем не то).
Не могли бы вы подсказать, что я делаю не так, привести источники и/или пример такого преобразования (типа есть такие-то BL из них получаем такие-то xy).
Заранее спасибо.
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
Алгоритмы преобразования B,L <=> x,y сводятся к использованию n-членных рядов Тейлора. Причём в ГОСТе эти ряды даны в таком виде, что сложно вычленить из констант, где же параметры референц-эллипсоида, а где прочие константы перед членами ряда, что делает ГОСТовский алгоритм неуниверсальным. Нужен пример с координатами? Пожалуйста:
Точка в СК42, допустим, B=53°, L=52°. Даю результаты с точностью представления 0,1 мм. Алгоритмы не являются информацией закрытого либо ограниченного пользования.
1) По ГОСТ P51791-2004, декларируемая точность 1 мм.
x = 5875191,4058
y = 9567137,4060
2) По источнику (страницы 216-219, 3-членное преобразование, декларируемая точность не хуже 1 мм).
Справочник геодезиста: В 2-х книгах. Кн. 1/Под ред. В.Д. Большакова и Г.П. Левчука. - 3-е изд., перераб. и доп. - М.: Недра, 1985. -455 с.
x = 5875191,4108
y = 9567137,4061
3) По материалам сайта landmateriet.se (дай бог памяти), 4-рядное преобразование, точность порядка нескольких десятков микрон, точность представления повышена
x = 5875191,409053690
y = 9567137,406074601
4) По результатам пересчёта с помощью Транскора (с максимальной точностью), точность представления повышена, алгоритм неизвестен, предположительно 4-членный.
x = 5875191,40904
y = 9567137,40607
Мораль: все алгоритмы для данной точки, несмотря на ДЕКЛАРИРУЕМУЮ точность 1 мм, дают разнобой в несколько (до 5,0 !!!)миллиметров, хотя "обратный" пересчёт по тому же алгоритму (только уже x,y => B,L) показывает результат с точностью до 1,0 мм. Я после некоторых раздумий склонен доверять шведам (схождение в обратную сторону также очень точное). Наиболее дикие расхождения с результатом, принятым за "якорь", как раз у ГОСТовского алгоритма. Полагаю, за счёт не очень точного определения длины дуги меридиана, на этом этапе часто бывает ненужное упрощенчество.
Удачи!
Точка в СК42, допустим, B=53°, L=52°. Даю результаты с точностью представления 0,1 мм. Алгоритмы не являются информацией закрытого либо ограниченного пользования.
1) По ГОСТ P51791-2004, декларируемая точность 1 мм.
x = 5875191,4058
y = 9567137,4060
2) По источнику (страницы 216-219, 3-членное преобразование, декларируемая точность не хуже 1 мм).
Справочник геодезиста: В 2-х книгах. Кн. 1/Под ред. В.Д. Большакова и Г.П. Левчука. - 3-е изд., перераб. и доп. - М.: Недра, 1985. -455 с.
x = 5875191,4108
y = 9567137,4061
3) По материалам сайта landmateriet.se (дай бог памяти), 4-рядное преобразование, точность порядка нескольких десятков микрон, точность представления повышена
x = 5875191,409053690
y = 9567137,406074601
4) По результатам пересчёта с помощью Транскора (с максимальной точностью), точность представления повышена, алгоритм неизвестен, предположительно 4-членный.
x = 5875191,40904
y = 9567137,40607
Мораль: все алгоритмы для данной точки, несмотря на ДЕКЛАРИРУЕМУЮ точность 1 мм, дают разнобой в несколько (до 5,0 !!!)миллиметров, хотя "обратный" пересчёт по тому же алгоритму (только уже x,y => B,L) показывает результат с точностью до 1,0 мм. Я после некоторых раздумий склонен доверять шведам (схождение в обратную сторону также очень точное). Наиболее дикие расхождения с результатом, принятым за "якорь", как раз у ГОСТовского алгоритма. Полагаю, за счёт не очень точного определения длины дуги меридиана, на этом этапе часто бывает ненужное упрощенчество.
Удачи!
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
Именно это я и имел в виду (сам качал давно). Листинг выкладывать пока не считаю нужным, пусть люди прилагают хотя бы мизерные усилия и вдумываются. Кроме того, считаю в корне неправильной политику, что сообщения форума находятся с помощью стандартных интернет-поисковиков, на радость как халтурщикам, так и для "товарища полковника".
Первичный "непричёсанный" листинг я написал на Delphi (7) и пока остановился. В случае нужды вышлю на мыло. Но для создания полноценной рабочей функции надо ещё работать.
В коэффициенте бета1 четвертый член ряда, я уверен, с минусом, а не с плюсом.
"+" (53°/52°)
x42 = 5875191,40907589
y42 = 9567137,40607447
"-"
x42 = 5875191,409053690
y42 = 9567137,406074601
Первичный "непричёсанный" листинг я написал на Delphi (7) и пока остановился. В случае нужды вышлю на мыло. Но для создания полноценной рабочей функции надо ещё работать.
В коэффициенте бета1 четвертый член ряда, я уверен, с минусом, а не с плюсом.
"+" (53°/52°)
x42 = 5875191,40907589
y42 = 9567137,40607447
"-"
x42 = 5875191,409053690
y42 = 9567137,406074601
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 14 окт 2007, 14:26
- Репутация: 0
Да, по всей видимости работы еще много, как над формулами, так и над пониманием. Для наглядности перекинул все в excel. В результате, вобщем все видно. Думаю, недопонял что-то с FN, FE, а также с k0, хотя, как мне казалось делал все правильно. Явно не хватает теоретической базы(
Последний раз редактировалось serge 18 окт 2007, 20:38, всего редактировалось 1 раз.
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 14 окт 2007, 14:26
- Репутация: 0
Вобщем подход copy-past в данном случае не прошел. В их формулах на местах старших членов стоят троеточия (хотя их порядок наверное все равно слишком мал), подозреваю, что сам ряд наверняка общий для всех подходов перевода. Вобщем в источнике Закатова (из раздела документации) наверняка этот ряд и приводится(стр.174, ф.38.11-12), правда там обозначения для меня совсем неясны. Других источников (Справочник геодезиста, например) в нете не нашел. Так что, пока не получается, буду рад вашим советам.
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 14 окт 2007, 14:26
- Репутация: 0
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 14 окт 2007, 14:26
- Репутация: 0
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 14 окт 2007, 14:26
- Репутация: 0
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
FN - False Northing - константа, добавляемая к полученной абсциссе. Обычно равна нулю, для СК42 = 0.
FE - False Easting - константа, добавляемая к полученной ординате. Обычно равна 500км, для СК42 = 500 км.
k (m) - масшабный коэффициент на центральном меридиане зоны, для проекции Гаусса-Крюгера равен единице, для UTM - 0,9996 (почему так - долго объяснять).
FE - False Easting - константа, добавляемая к полученной ординате. Обычно равна 500км, для СК42 = 500 км.
k (m) - масшабный коэффициент на центральном меридиане зоны, для проекции Гаусса-Крюгера равен единице, для UTM - 0,9996 (почему так - долго объяснять).
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 14 окт 2007, 14:26
- Репутация: 0
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
OK
На уровне предварительной и постобработки данных существует некоторое количество подводжных камней.
Кроме того, есть ещё один поганый фактор. Приведу строку из листинга для 3-членного ряда:
GetS:=VED.aell/(1+n1)*((1+n2/4+n4/64)*B-(1.5*n1-3/16*n3)*sin(2*B)+
(15/16*n2-15/64*n4)*sin(4*B)-(35/43*n3)*sin(6*B));
Строка из листинга для 4-членного ряда (из "шведской" методички):
c:=m*a*(1+n2/4+n4/64)/(1+n);
Здесь разнятся названия переменных и некоторые другие вещи (которые не позволяют просто перекинуть одну формулу на место другой), но суть одна - для менее точного преобразования используется более точная длина меридиана и наоборот. Парадокс. Получается, что наша 20-микронная точность покоится на зыбком фундаменте.
На уровне предварительной и постобработки данных существует некоторое количество подводжных камней.
Кроме того, есть ещё один поганый фактор. Приведу строку из листинга для 3-членного ряда:
GetS:=VED.aell/(1+n1)*((1+n2/4+n4/64)*B-(1.5*n1-3/16*n3)*sin(2*B)+
(15/16*n2-15/64*n4)*sin(4*B)-(35/43*n3)*sin(6*B));
Строка из листинга для 4-членного ряда (из "шведской" методички):
c:=m*a*(1+n2/4+n4/64)/(1+n);
Здесь разнятся названия переменных и некоторые другие вещи (которые не позволяют просто перекинуть одну формулу на место другой), но суть одна - для менее точного преобразования используется более точная длина меридиана и наоборот. Парадокс. Получается, что наша 20-микронная точность покоится на зыбком фундаменте.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя