proj4, lonlat -> XY

Кроме QGIS
Ответить
drug
Участник
Сообщения: 99
Зарегистрирован: 17 июн 2012, 11:11
Репутация: 1
Откуда: Новосибирск
Контактная информация:

proj4, lonlat -> XY

Сообщение drug » 25 мар 2014, 17:47

На форуме нашел как осуществлять преобразование из географической СК в плоскую прямоугольную с помощью proj4:

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

 echo 19.7255859375 50.17515625 | cs2cs -f "%.5f" +init=epsg:4284 +to +init=epsg:28404
4408962.13881   5561205.19867 0.00000
И далее обнаружил, что если изменить географическую СК, то результат остается тем же:

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

 echo 19.7255859375 50.17515625 | cs2cs -f "%.5f" +init=epsg:4326 +to +init=epsg:28404
4408962.13881   5561205.19867 0.00000
Т.е. при пересчете:
а) из географических Гаусса-Крюгера в плоские Гаусса-Крюгера
б) из географических WGS84 в плоские Гаусса-Крюгера
получается один и тот же результат. Но ведь у Крассовского и WGS84 разные характеристики. Или в данном случае за датум результата всегда берется датум исходной СК? Можете прояснить немного?
Последний раз редактировалось drug 26 мар 2014, 10:58, всего редактировалось 1 раз.

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

Re: proj4, lonlat -> XY

Сообщение trir » 25 мар 2014, 18:36

почитай внимательно описание epsg:28404

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

PROJCS["Pulkovo 1942 / Gauss-Kruger zone 4",
GEOGCS["Pulkovo 1942",
DATUM["Pulkovo_1942",
SPHEROID["Krassowsky 1940",6378245,298.3,
AUTHORITY["EPSG","7024"]],
AUTHORITY["EPSG","6284"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4284"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",21],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",4500000],
PARAMETER["false_northing",0],
AUTHORITY["EPSG","28404"],AXIS["Y",EAST],AXIS["X",NORTH]]

drug
Участник
Сообщения: 99
Зарегистрирован: 17 июн 2012, 11:11
Репутация: 1
Откуда: Новосибирск
Контактная информация:

Re: proj4, lonlat -> XY

Сообщение drug » 25 мар 2014, 18:50

Почитал, но ничего нового не обнаружил.
Я исхожу из того, что при пересчете из географических в плоские прямоугольные используются параметры эллипсоида, в частности его оси. Я предпологал, что proj4 в начале переводит из географических WGS84, далее географические на Крассовском и уже потом плоские. А здесь получается, что при данном преобразовании географические координаты всегда берутся на Крассовском? (т.е. результируещем эллипсоиде)

З.Ы. Кажется догадываюсь - epsg:28404 это именно преобразование и есть?

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

Re: proj4, lonlat -> XY

Сообщение trir » 25 мар 2014, 18:54

Да... был не прав, действительно странно...

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: proj4, lonlat -> XY

Сообщение gamm » 25 мар 2014, 19:20

trir писал(а):Да... был не прав, действительно странно...
ничего странного, это прописано в доках, что при некоторых вызовах используется WGS84, что бы вы ни написали в +proj строке (прямо или косвенно). Внутри библиотеки PROJ4 нужно вызывать разные функции, в rgdal та же особенность (там два варианта вызова, кошерный - spTransform(), некошерный - project(), для командной строки тоже что-то подобное наверняка есть). Скорее всего, это "тяжкое наследие прошлого" тащится ...

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2231
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1504
Откуда: Казань

Re: proj4, lonlat -> XY

Сообщение Игорь Белов » 25 мар 2014, 20:49

Забавно. У меня иначе:

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

$ echo 19.7255859375 50.17515625 | cs2cs -f "%.5f" +init=epsg:4284 +to +init=epsg:28404
4408962.13881	5561205.19867 0.00000
$ echo 19.7255859375 50.17515625 | cs2cs -f "%.5f" +init=epsg:4326 +to +init=epsg:28404
4409090.39139	5561243.00529 -30.54567
:?:
The purpose of computing is insight, not numbers

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: proj4, lonlat -> XY

Сообщение Александр Мурый » 25 мар 2014, 20:55

У меня результат как у ErnieBoyd. cs2cs версии 4.8.0. Как именно работает cs2cs и proj.4, можно понять из исходного кода (благо что он открыт). Если уметь бегло читать на Си, конечно :)
Редактор материалов, модератор форума

drug
Участник
Сообщения: 99
Зарегистрирован: 17 июн 2012, 11:11
Репутация: 1
Откуда: Новосибирск
Контактная информация:

Re: proj4, lonlat -> XY

Сообщение drug » 26 мар 2014, 10:58

Проблема была в том, что я собрал proj4 из свежих сходников, однако бинарники из-за динамической линковки тянули proj.so из предустановленного пакета версии 4.7.1 (мы используем астра линукс, которые на дебиане7 основан со всеми вытекающими). Удалил старый пакет и make install решил мою проблему. За подсказку про версию спасибо, Александр, а вот про беглое чтение сишного кода это вы не к месту сказали, оно тут никаким боком. :)

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: proj4, lonlat -> XY

Сообщение Александр Мурый » 26 мар 2014, 11:02

drug писал(а):а вот про беглое чтение сишного кода это вы не к месту сказали, оно тут никаким боком. :)
Не соглашусь с вами, т.к. именно чтение исходного кода позволяет лучше всего разобраться с работе программы. Если было не к месту, то пардоньте.
Редактор материалов, модератор форума

drug
Участник
Сообщения: 99
Зарегистрирован: 17 июн 2012, 11:11
Репутация: 1
Откуда: Новосибирск
Контактная информация:

Re: proj4, lonlat -> XY

Сообщение drug » 26 мар 2014, 11:15

Да я уже кучу кода прочитал и кучу написал - в начале не смог до конца протестить свою реализацию ГОСТа из-за отсутствия эталонных данных. Решил заюзать proj через gdal в качестве эталона, а у него тоже результаты неверные оказались. Все это заставило меня начать немного нервничать, т.к. время идет, а результата нет. Мне нужны всего лишь эталонные данные, чтобы убедится в правильности расчетов, а вы меня послали код читать, вот я в эмоциях и прокомментировал. :) Так что это вы меня пардоньте, если что.

Ответить

Вернуться в «Свободные, бесплатные, открытые ГИС»

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

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