Страница 1 из 1
переход от WGS-84 к Гаусса-Крюгера
Добавлено: 07 июл 2014, 18:02
ali
Здравствуйте,
мне надо запрограммировать переход от градусов WGS-84 к метрам в плоской прямоугольной системе Гаусса-Крюгера, Пулково-42.
На этом сайте я нашёл код перехода от WGS-84 к СК42 (в градусах) - статья
http://gis-lab.info/qa/wgs84-sk42-wgs84-formula.html
Контрольный пример из статьи воспроизводится правильно.
Как я понимаю, мне осталось перевести градусы из СК42 в метры. Я запрограммировал формулы (25)-(26) из
ГОСТ Р 51794-2001, но результат получается неверный (взял пример, приведённый на этом сайте: точка в СК42, широта B=53°, долгота L=52° должна перейти в x = 5875191,4058; y = 9567137,4060 - повторить не могу).
Не может ли кто навскидку предположить, что я делаю не так? На всякий случай текст модуля с функцией перевода прилагаю. Может быть, у кого-то есть ссылка на работающий код?
Заранее спасибо за любую помощь.
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 08 июл 2014, 14:27
KolesovDmitry
Вам нужно именно запрограммировать свою процедуру или достаточно получить программу, возвращающую верный результат преобразования (другими словами вам нужно изобрести велосипед или ехать на нем)? Если второе -- возьмите библиотеку proj4, вызовите ее из своей программы и будет вам счастье.
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 08 июл 2014, 20:35
ali
KolesovDmitry писал(а):Вам нужно именно запрограммировать свою процедуру или достаточно получить программу, возвращающую верный результат преобразования (другими словами вам нужно изобрести велосипед или ехать на нем)?
Сейчас я делаю нужный перевод через QGIS: готовлю для него (макросом в Excel) .mif файл с нужными координатами WGS-84, потом пересохраняю в новый *.mif в координатах Гаусса-Крюгера, потом из него вытаскиваю данные и работаю с ними дальше. Требуется исключить этот шаг и делать его своей программой (использую VBA Excel).
Попробовал скачать proj4, но столкнулся с трудностями: как я понял, библиотеку нужно странслировать у себя на компьютере, но транслятора у меня нет. Далее, я готов переписать код на VBA, но не знаю, какая именно процедура (или несколько) мне нужна, так что проблема для меня остаётся.
Посоветуйте, пожалуйста, что мне делать дальше.
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 09 июл 2014, 03:56
trir
А почему ГОСТ 2001, а не 2008?
Если есть QGIS значит уже есть proj
Update: B - геодезическая широта определяемой точки, рад;
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 09 июл 2014, 09:19
KolesovDmitry
Да, если стоит qgis, значит есть и proj (qgis через него перепроецирует). Поэтому ваша задача -- научиться вызывать утилиты преобразования координат (попробуйте сначала, как преобразовывать координаты из командной строки, а уже потом вызывать эти утилиты из вашей программы)
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 09 июл 2014, 23:26
ali
trir писал(а):А почему ГОСТ 2001, а не 2008?
Просто не знал

Уже посмотрел новый. В формулах (25)-(26), которые я использовал, изменений нет.
Подумал, что, возможно, я неверно толкую термины. В Гост-е перед формулами написано, что:
-----
Для получения плоских прямоугольных координат в принятой на территории Российской Федерации проекции Гаусса-Крюгера используют геодезические координаты на эллипсоиде Красовского.
-----
Я полагал, что система координат СК42 (градусы) - это и есть геодезические координаты на эллипсоиде Красовского. Прав ли я ?
Если нет, то как перейти от первой ко второй?
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 09 июл 2014, 23:27
ali
KolesovDmitry писал(а):Да, если стоит qgis, значит есть и proj (qgis через него перепроецирует). Поэтому ваша задача -- научиться вызывать утилиты преобразования координат (попробуйте сначала, как преобразовывать координаты из командной строки, а уже потом вызывать эти утилиты из вашей программы)
Дмитрий,
я не понял ваш ответ, не могли бы вы сказать чуть подробнее. Из просмотра UserGuide для QGIS я не увидел способа запуска утилит преобразования или их перечисления. Может быть, есть известные вам ссылки на примеры?
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 10 июл 2014, 05:16
trir
ali, код поправил? Там только надо B перевести в радианы и всё сходится
Там есть cs2cs.exe в папке bin
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 10 июл 2014, 10:13
ali
trir писал(а):ali, код поправил? Там только надо B перевести в радианы и всё сходится
trir,
большое спасибо - ошибку с вашей помощью исправил, всё получилось!
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 10 июл 2014, 11:47
KolesovDmitry
ali писал(а):
я не понял ваш ответ, не могли бы вы сказать чуть подробнее.
Я имел в виду вот что. Нужно:
1) Понять, как работают утилиты proj (с точки зрения пользователя). Т.е. разобраться, как задаются параметры транформации, системы координат и т.п. Затем научиться формировать командную строку для преобразования координат и вызов утилит (руками). Пример:
http://gis-lab.info/qa/coord-transforms.html#cs
2) Формирование строки параметров программно на вашем любимом языке программирования и вызов утилит proj из вашего языка. Этот пункт зависит от языка, но в (почти) любом языке есть возможность вызывать сторонние программы, передавая им параметры командной строки.
Re: переход от WGS-84 к Гаусса-Крюгера
Добавлено: 11 июл 2014, 10:32
ali
Дмитрий,
спасибо за пояснения. Идею я понял. cs2cs с примером из вашей ссылки запустил:
"C:\Program Files\QGIS\bin\cs2cs" +proj=latlong +ellps=WGS84 +to +proj=latlong +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0,0,0 -f '%.10f'
Но, похоже, что-то уже поменялось - командная строка ждёт ввода вместо вывода результата. Возможно, требуются доп. параметры.
На данный момент свою проблему я решил, а на будущее - понял, откуда начинать.
Благодарю вас за помощь.