библиотека Proj4 неправльно считает?
-
- Участник
- Сообщения: 91
- Зарегистрирован: 17 июл 2008, 11:27
- Репутация: 3
- Откуда: Омск
библиотека Proj4 неправльно считает?
Разбирался с библиотекой Proj4 (http://trac.osgeo.org/proj/).
На примере преобразования WGS84 в СК42 (перевод: градусы в градусы).
Вот что я сделал:
Используя геокалькулятор GeoCalc(http://gis-lab.info/qa/geocalc.html) вводим 10d 10d получаем 10d 0' 2.904" 10d 0' 3.895"
Я пробовал реализовать вычисления самостоятельно результат тотже.
Используя http://gis-lab.info/qa/wgs84-sk42-wgs84-formula.html тоже сходится.
А используя программу cs2cs(идет с Proj4) какой-то глюк. Пробывал использовать dll напрямую из своей программы - тот же глюк.
Вот в чем выражается:
cs2cs.exe +proj=longlat +ellps=WGS84 +datum=WGS84 +to +proj=longlat +ellps=krass +towgs84=23.92,-141.27,-80.9,0,-0.35,-0.82,-0.12
Вводим 10d 10d получаем 10d 0' 5.514"E 10d 0' 2.211"N -92.318
Что вообщем не совсем похоже. Разница на 2.61 и 1.68 секунды, при том что параметры абсолютно одинаковы! По моим прикидкам разница в 50 метров, никак нельзя это отнести к погрешности округления какойнибудь.
Получается библиотека Proj4 которую используют все кому только не лень, начиная от qGIS заканчивая DNR Garmin (с этого же сайта) считает не правильно?
На примере преобразования WGS84 в СК42 (перевод: градусы в градусы).
Вот что я сделал:
Используя геокалькулятор GeoCalc(http://gis-lab.info/qa/geocalc.html) вводим 10d 10d получаем 10d 0' 2.904" 10d 0' 3.895"
Я пробовал реализовать вычисления самостоятельно результат тотже.
Используя http://gis-lab.info/qa/wgs84-sk42-wgs84-formula.html тоже сходится.
А используя программу cs2cs(идет с Proj4) какой-то глюк. Пробывал использовать dll напрямую из своей программы - тот же глюк.
Вот в чем выражается:
cs2cs.exe +proj=longlat +ellps=WGS84 +datum=WGS84 +to +proj=longlat +ellps=krass +towgs84=23.92,-141.27,-80.9,0,-0.35,-0.82,-0.12
Вводим 10d 10d получаем 10d 0' 5.514"E 10d 0' 2.211"N -92.318
Что вообщем не совсем похоже. Разница на 2.61 и 1.68 секунды, при том что параметры абсолютно одинаковы! По моим прикидкам разница в 50 метров, никак нельзя это отнести к погрешности округления какойнибудь.
Получается библиотека Proj4 которую используют все кому только не лень, начиная от qGIS заканчивая DNR Garmin (с этого же сайта) считает не правильно?
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
отличная тема, я некоторое время назад начал писать статью
http://gis-lab.info/qa/coord-transforms.html
но так и не закончил все расчеты, предлагаю их добить и сделать матрицу расстояний между результатами, было бы интересно, появился бы классный репер и надеюсь картина бы прояснилась.
http://gis-lab.info/qa/coord-transforms.html
но так и не закончил все расчеты, предлагаю их добить и сделать матрицу расстояний между результатами, было бы интересно, появился бы классный репер и надеюсь картина бы прояснилась.
пристегивайтесь, турбулентность прямо по курсу
-
- Участник
- Сообщения: 91
- Зарегистрирован: 17 июл 2008, 11:27
- Репутация: 3
- Откуда: Омск
Я вроде разобрался. Хотя как сказать... Какая-то кутерьма со знаками параметров происходит.
На счет вашей статьи (http://gis-lab.info/qa/coord-transforms.html): у вас не получился расчет с программой GeoCalc. Ошибка ваша в чем: во-первых по умолчанию параметры эллипсоида в ней выставляются СК42 -> WGS84, а надо WGS84 -> СК-42. Во-вторых знаки параметров при вводе надо поменять dX=-28, dY=130, dZ=95. И вуаля, получаем 49.9999631301 50.0014646551 (15.6339), точность с cs2cs III также как у всех до 7 знака после запятой. Можете статью подправить.
Теперь на счет моих расчетов. Для случая вроде как честного 7-параметрового пересчета, кому интересно. Если брать результат GeoCalc вроде как за истину. В ней для пересчета WGS84 -> СК42 применяются параметры:
-23.92, +141.27, +80.9, 0, +0.35, +0.82, +0.12.
Для (50;50) получаем 49.9998665277 50.0013824879 (12.8546)
Чтобы получить такой же ответ для cs2cs нужно воткнуть
+23.92, -141.27, -80.9, 0, +0.35, +0.82, +0.12
Заметьте изменение знаков.
Вводим: cs2cs +proj=latlong +ellps=WGS84 +datum=WGS84 +to +proj=latlong +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,0.12 -f '%.10f'
Получаем 50.0013824844 49.9998666102 (11.332). Точность почти 7-8 знаков.
Все это получил методом перебора. Получается все считают правильно, надо только знать что как подставлять. Вообщем если нашел где-то параметры еще надо попариться кому с каким знаком подставлять. Кстати, если читать ГОСТ, то правильно -23.92, +141.27,... и прав GeoCalk в написании. Видать стандартная формула у буржуев отличается где-то знаком от стандартной нашей!!!
На счет вашей статьи (http://gis-lab.info/qa/coord-transforms.html): у вас не получился расчет с программой GeoCalc. Ошибка ваша в чем: во-первых по умолчанию параметры эллипсоида в ней выставляются СК42 -> WGS84, а надо WGS84 -> СК-42. Во-вторых знаки параметров при вводе надо поменять dX=-28, dY=130, dZ=95. И вуаля, получаем 49.9999631301 50.0014646551 (15.6339), точность с cs2cs III также как у всех до 7 знака после запятой. Можете статью подправить.
Теперь на счет моих расчетов. Для случая вроде как честного 7-параметрового пересчета, кому интересно. Если брать результат GeoCalc вроде как за истину. В ней для пересчета WGS84 -> СК42 применяются параметры:
-23.92, +141.27, +80.9, 0, +0.35, +0.82, +0.12.
Для (50;50) получаем 49.9998665277 50.0013824879 (12.8546)
Чтобы получить такой же ответ для cs2cs нужно воткнуть
+23.92, -141.27, -80.9, 0, +0.35, +0.82, +0.12
Заметьте изменение знаков.
Вводим: cs2cs +proj=latlong +ellps=WGS84 +datum=WGS84 +to +proj=latlong +ellps=krass +towgs84=23.92,-141.27,-80.9,0,0.35,0.82,0.12 -f '%.10f'
Получаем 50.0013824844 49.9998666102 (11.332). Точность почти 7-8 знаков.
Все это получил методом перебора. Получается все считают правильно, надо только знать что как подставлять. Вообщем если нашел где-то параметры еще надо попариться кому с каким знаком подставлять. Кстати, если читать ГОСТ, то правильно -23.92, +141.27,... и прав GeoCalk в написании. Видать стандартная формула у буржуев отличается где-то знаком от стандартной нашей!!!
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
очень полезная информация, спасибо! с geocalc все точно, не обратил внимания сразу
вот еще трюк, есть такая вещь - инверсия, в cs2cs используется -I:
geocalc (такие же настройки как тогда когда я ошибся):
49.9985353112 50.0000368528 (-15.6322)
вот еще трюк, есть такая вещь - инверсия, в cs2cs используется -I:
Код: Выделить всё
cs2cs +proj=latlong +ellps=WGS84 +datum=WGS84 +to +proj=latlong +ellps=krass +towgs84=28,-130,-95,0,0,0,0 -f '%.10f'
50.0014646551 49.9999631298 15.6339351721
Код: Выделить всё
cs2cs +proj=latlong +ellps=WGS84 +datum=WGS84 +to +proj=latlong +ellps=krass +towgs84=28,-130,-95,0,0,0,0 -f '%.10f' -I
49.9985353112 50.0000368525 -15.6322070053
49.9985353112 50.0000368528 (-15.6322)
пристегивайтесь, турбулентность прямо по курсу
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
А если внимательно прочитать ГОСТ Р 51794-2001 "Приложение А", то можно заметить некоторые расхождения в параметрах трансформации...
При пересчете из CК-42 в WGS-84 использованы следующие параметры:
+23.92, -141.27, -80.9, 0, -0.35, -0.82, -0.12E-06
Но тут же, указывается пример пересчета координат с применением трансформации Гельмерта, где углы поворота координатных осей указаны в радианах.
Переводим радианы в градусы и получаем следующие параметры:
+23.92, -141.27, -80.9, 0, -0.371, -0.849, -0.124Е-06
После подстановки таких параметров трансформации пересчет получается наиболее точным.
Остается только вопрос. Какие из параметров, указанные в ГОСТ Р 51794-2001 наиболее верны? Ведь -0.35'' это далеко не -0.371''. И -0.82'' не равен -0.849''... Хотя лично я остановился на втором варианте!
При пересчете из CК-42 в WGS-84 использованы следующие параметры:
+23.92, -141.27, -80.9, 0, -0.35, -0.82, -0.12E-06
Но тут же, указывается пример пересчета координат с применением трансформации Гельмерта, где углы поворота координатных осей указаны в радианах.
Переводим радианы в градусы и получаем следующие параметры:
+23.92, -141.27, -80.9, 0, -0.371, -0.849, -0.124Е-06
После подстановки таких параметров трансформации пересчет получается наиболее точным.
Остается только вопрос. Какие из параметров, указанные в ГОСТ Р 51794-2001 наиболее верны? Ведь -0.35'' это далеко не -0.371''. И -0.82'' не равен -0.849''... Хотя лично я остановился на втором варианте!
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 24 окт 2009, 17:31
- Репутация: 0
Re: библиотека Proj4 неправльно считает?
в ГОСТ Р 51794-2008 параметры перехода из СК42 в WGS84 указаны уже однозначно смотреть Приложение А + Приложение В.
Судя по точке N42°30' E130°45' на листе К52-058 и соответствующей ей в WGS84 точке N42.50017412 E130.75074968
на googlemaps эти параметры довольно точные. Но лучше конечно если кто-нибудь с Дальнего Востока (там ошибка должна быть наибольшей из-за удалённости от Пулково) проведёт реальные замеры.
Код: Выделить всё
+ellps=krass +towgs84=23.57,-140.95,-79.80,0,-0.35,-0.79,-0.22
Судя по точке N42°30' E130°45' на листе К52-058 и соответствующей ей в WGS84 точке N42.50017412 E130.75074968
Код: Выделить всё
$ echo 42d30\'00\"N 130d45\'00\"E|cs2cs +proj=latlong +ellps=krass \ +towgs84=23.57,-140.95,-79.80,0,-0.35,-0.79,-0.22 +to +init=epsg:4326 -r -s -f "%.8f"
$ 42.50017412 130.75074968 -36.17342327
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: библиотека Proj4 неправльно считает?
Пропустил этот ГОСТ, хорошо, что упомянули, теперь знаю что он существует. Интересно, что приведенные вами цифры для СК42->WGS84 через ПЗ90.02 не бьются с СК42->WGS84 через ПЗ90. Например для DX:m4j писал(а):в ГОСТ Р 51794-2008 параметры перехода из СК42 в WGS84 указаны уже однозначно
СК42->WGS84 через ПЗ90.02
23.93-0.36=23.57 (Приложение А + Приложение В)
СК42->WGS84 через ПЗ90
25-1.10=23.90 (Приложение Б + Приложение Г)
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 24 окт 2009, 17:31
- Репутация: 0
Re: библиотека Proj4 неправльно считает?
так как при СК42<->ПЗ-90 и ПЗ-90<->WSG-84 используются неединичные матрицы, то нельзя просто так вычитать "25-1.10=23.90". Ошибка небольшая (так как матрицы близки к еденице), но она есть. Наверно отсюда и набегает 33см разницы. При СК42<->ПЗ-90.02<->WSG-84 я вообще никаких огрублений не делал.sim писал(а):Например для DX:
СК42->WGS84 через ПЗ90.02
23.93-0.36=23.57 (Приложение А + Приложение В)
СК42->WGS84 через ПЗ90
25-1.10=23.90 (Приложение Б + Приложение Г)
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: библиотека Proj4 неправльно считает?
ДОбры люди подведите какой-то итог своей беседы. Выходит, что дециметровая точность перехода СК-42 -> WGS84 достижима и без наземных точек? А на фига тогда нам СК-95?
-
- Новоприбывший
- Сообщения: 1
- Зарегистрирован: 16 фев 2011, 11:27
- Репутация: 0
Re: библиотека Proj4 неправльно считает?
m4j
А у вас какая версия geocalc? В моей (0.97) только ПЗ90.01 доступно. Не поделитесь ссылкой на новую версию (сайт разработчика)?
А у вас какая версия geocalc? В моей (0.97) только ПЗ90.01 доступно. Не поделитесь ссылкой на новую версию (сайт разработчика)?
-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: библиотека Proj4 неправльно считает?
Так существует версия новее 0.97?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 38 гостей