Параметры пересчёта

Системы координат, проекции, преобразования, привязка
Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Параметры пересчёта

Сообщение Michael2000 » 28 июн 2017, 13:44

Всем доброго времени суток.
Столкнулся со следующей проблемой. Пересчитываю координаты с помощью PROJ используя следующие параметры.
Исходная проекция:
+proj=tmerc +ellps=krass +towgs84=23,-123,-94,-0.02,0.25,0.13,0.13,1.1 +units=m +lon_0=83.73333333333 +lat_0=0 +k_0=1 +x_0=4250000 +y_0=-5912900.566
Конечная проекция:
+proj=tmerc +ellps=krass +towgs84=24,-123,-94,-0.02,0.25,0.13,0.13,1.1 +units=m +lon_0=85 +lat_0=0 +k_1=1 +x_0=8743.04 +y_0=-6252679.927
В моей программе вроде всё красиво получается, но при проверке пересчёта через mapinfo начинается проблемы, координаты не бьют где то на метр. Для примера в mapinfo используются следующие параметры
Исходная проекция:
"МСК-70 зона 4", 8, 1001, 7, 83.7333333333, 0, 1, 4250000,-5912900.566
Конечная проекция:
"Местная СК г. Томск", 1008, 1001, 7, 85, 0, 1, 8743.04, -6252679.927, 7, 1.00001906, 0, 0, 0, 1.00001906, 0
Может кто подскажет, что у меня тут неправильно?

P.S. такая же проблема при пересчёте из
+proj=tmerc +ellps=krass +towgs84=23,-123,-94,-0.02,0.25,0.13,0.13,1.1 +units=m +lon_0=83.73333333333 +lat_0=0 +k_0=1 +x_0=4250000 +y_0=-5912900.566
в
+proj=tmerc +ellps=krass +towgs84=24,-123,-94,-0.02,0.25,0.13,0.13,1.1 +units=m +lon_0=80.73333333333 +lat_0=0 +k_0=1 +x_0=3250000 +y_0=-5912900.566

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Параметры пересчёта

Сообщение Michael2000 » 28 июн 2017, 13:54

Изображение
Вот такое расхождение, синим то что насчитал mapinfo желтым мой пересчёт.

freeExec
Гуру
Сообщения: 832
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 123
Откуда: Ульяновск

Re: Параметры пересчёта

Сообщение freeExec » 28 июн 2017, 14:06

У Вас опять фуфло в +towgs84=, копируйте правильно.

lam
Гуру
Сообщения: 695
Зарегистрирован: 01 авг 2012, 13:55
Репутация: 171

Re: Параметры пересчёта

Сообщение lam » 28 июн 2017, 14:22

Скорее всего, Вы в PROJ не учитываете аффинные коэффициенты.

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Параметры пересчёта

Сообщение Michael2000 » 28 июн 2017, 14:26

freeExec писал(а):У Вас опять фуфло в +towgs84=, копируйте правильно.
Согласен, тут выложил немного не то, но сути это не меняет. При пересчете в mapinfo и у меня разница составляет 3 см, терзают меня смутные сомнения, что это из за округления значения координат в mapinfo до 2 знаков после запятой.

Boris
Гуру
Сообщения: 4095
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 400
Откуда: Париж

Re: Параметры пересчёта

Сообщение Boris » 30 июн 2017, 13:43

А что именно пересчитывает PROJ? И почему, кроме всех прочих вопросов, для этого не используется ogr2ogr.
Из картинки только автору ясно каков размер погрешности - можно было и MIF приложить, тогда сразу же стало бы ясно что и как. Без этого за исключением того, что строка PROJ не содержит средств для задания аффинной трансформации - все остальное гадания.
Судя по записи параметров в "Местная СК г. Томск" - ее аффинные параметры странно симметричны. Может это означает, что не верно задано начало координат?

PS
Mapinfo не округляет до двух знаков, оно огрубляет до 1/2-х миллиардной. Поэтому для точных расчетов в местных СК обязательным является указание границ СК. Для 3-х градусных зон - это протяженность зоны по оси север-юг, если она больше удвоенной ширины зоны по оси восток-запад - иначе +-500 км.

Игорь Белов
Гуру
Сообщения: 1609
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1002
Откуда: Казань

Re: Параметры пересчёта

Сообщение Игорь Белов » 03 июл 2017, 23:09

Для начала небольшое замечание. Если хочется, чтобы датум совпадал с MapInfo #1001, следует изменить знаки параметров вращения. Должны быть такие семь параметров:

Код: Выделить всё

+towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1
Впрочем, это не влияет на результаты пересчётов, поскольку везде используется один и тот же датум.
Michael2000 писал(а):В моей программе вроде всё красиво получается, но при проверке пересчёта через mapinfo начинается проблемы, координаты не бьют где то на метр.
Ошибка было в том, что игнорировались параметры аффинного преобразования. Замечательно, что в данном конкретном случае это преобразование можно исключить. Вот эквивалентная строка для MapInfo без него:

Код: Выделить всё

"Местная СК г. Томск", 8, 1001, 7, 85, 0, 1.00001906, 8743.207, -6252799.103
и соответствующее определение PROJ.4:

Код: Выделить всё

+proj=tmerc +lat_0=0 +lon_0=85 +k=1.00001906 +x_0=8743.207 +y_0=-6252799.103 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs
Michael2000 писал(а):При пересчете в mapinfo и у меня разница составляет 3 см, терзают меня смутные сомнения, что это из за округления значения координат в mapinfo до 2 знаков после запятой.
Это вряд ли: на картинке сдвиг, а не случайные отклонения. И мне не удалось этот сдвиг воспроизвести, MapInfo и PROJ.4 дают практически одни и те же результаты. В общем, без конкретных данных говорить не о чем.
Boris писал(а):для точных расчетов в местных СК обязательным является указание границ СК
В общем Борис прав, однако в данном случае я и без явного указания границ не встретил расхождений более сантиметра.

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Параметры пересчёта

Сообщение Michael2000 » 04 июл 2017, 11:55

Игорь, большое вам спасибо за разъяснения по теме. И я попробую задать вам вопрос по преобразованиям из WGS84 в мой любимый МСК-70.
На просторах инета нашел файл с описанием проекций для PROJ.4
res2proj.txt
(64.05 КБ) 39 скачиваний
, и все проекции беру от сюда. И вот наткнулся я на проблему пересчёта из WGS84 в МСК-70 зона 4.
И так, дано:
1,56.4471057111111,85.0439083,109.280
2,56.4470676416667,85.0439088777778,109.496
3,56.4470968861111,85.044180975,109.805
4,56.4468876638889,85.0442500972222,110.986
5,56.4468706277778,85.043938675,110.194
6,56.4468751611111,85.0439466972222,110.186
исходная проекция:
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
Конечная проекция:
+proj=tmerc +ellps=krass +towgs84=24,-123,-94,-0.02,0.25,0.13,0.13,1.1 +units=m +lon_0=83.73333333333 +lat_0=0 +k_0=1 +x_0=4250000 +y_0=-5912900.566
На выходе получаем:
1 346276.93 4330862.07
2 346276.26 4330878.91
3 346253.05 4330883.61
4 346250.79 4330864.45
5 346251.30 4330864.93
6 346272.69 4330862.19
У меня получаются расхождения 18 с лишним метров.
Традиционный вопрос, что я делаю неправильно?

trir
Гуру
Сообщения: 3702
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 619
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Параметры пересчёта

Сообщение trir » 04 июл 2017, 12:15

там всё сложно
На просторах инета нашел файл с описанием проекций для PROJ.4
забавно, не помню что бы я его выкладывал с таким названием

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Параметры пересчёта

Сообщение Michael2000 » 04 июл 2017, 12:23

trir писал(а):забавно, не помню что бы я его выкладывал с таким названием
Ну, как говорится, за что купил за то и продал :D

trir
Гуру
Сообщения: 3702
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 619
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Параметры пересчёта

Сообщение trir » 04 июл 2017, 12:24

вспомнил, это была первая, неправильная версия
0.13,0.13,1.1

freeExec
Гуру
Сообщения: 832
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 123
Откуда: Ульяновск

Re: Параметры пересчёта

Сообщение freeExec » 04 июл 2017, 12:38

Нынешняя тенденция копи-паста без понятия происходящего в действии. То что там лишний параметр выяснили ещё 2 недели назад, но он упорно продолжает биться головой об стену.

trir
Гуру
Сообщения: 3702
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 619
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Параметры пересчёта

Сообщение trir » 04 июл 2017, 12:43

Нынешняя тенденция копи-паста без понятия происходящего в действии.
явно нужно прочитать мою статью

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Параметры пересчёта

Сообщение Michael2000 » 04 июл 2017, 13:11

trir писал(а): явно нужно прочитать мою статью
Читаю, самообразовываюсь...

Игорь Белов
Гуру
Сообщения: 1609
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1002
Откуда: Казань

Re: Параметры пересчёта

Сообщение Игорь Белов » 04 июл 2017, 13:16

Ладно, сделаем это.

Перечитаем внимательно и сконструируем определение PROJ.4 для МСК-70 зона 4:

Код: Выделить всё

+proj=tmerc +lat_0=0 +lon_0=83.7333333333 +k=1 +x_0=4250000 +y_0=-5912900.566 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs
и для WGS 84:

Код: Выделить всё

+proj=longlat +datum=WGS84 +no_defs
Заметьте, ellps не нужен, поскольку datum включает его помимо прочего. Кроме того, WGS 84 в базе PROJ.4, так что можно задать определение попроще:

Код: Выделить всё

+init=epsg:4326
Получены координаты:

Код: Выделить всё

346274.22,4330853.89
346269.98,4330854.00
346273.55,4330870.72
346250.34,4330875.43
346248.08,4330856.26
346248.59,4330856.74
Перейдём к MapInfo. Создадим проекцию

Код: Выделить всё

"МСК-70 зона 4", 8, 1001, 7, 83.7333333333, 0, 1, 4250000, -5912900.566
Импортируем CSV и построим точки в "Широта / Долгота (WGS 84)". Вычислим координаты в МСК-70 зона 4:

Код: Выделить всё

1,346274.25,4330853.86
2,346270.01,4330854.01
3,346273.57,4330870.72
4,346250.38,4330875.42
5,346248.12,4330856.28
6,346248.58,4330856.76
Как видите, расхождение не превышает четырёх сантиметров, как и должно быть.

А теперь послушаемся Бориса и ограничим исходную систему координат. Добавим географическую систему координат

Код: Выделить всё

"Longitude / Latitude (WGS 84 Bounds)", 2001, 104, 84, 56, 86, 57
Следовало бы ограничить и выходную проекцию, но это не критично для сантиметровой точности. Ещё раз построим точки в новой СК и повторим пересчёт:

Код: Выделить всё

1,346274.22,4330853.89
2,346269.97,4330854.00
3,346273.56,4330870.72
4,346250.34,4330875.43
5,346248.08,4330856.26
6,346248.59,4330856.74
Теперь расхождения в пределах 0,01 м, что и требовалось.

Ответить

Вернуться в «Координаты и привязка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя