Страница 1 из 1
proj4, lonlat -> XY
Добавлено: 25 мар 2014, 17:47
drug
На форуме нашел как осуществлять преобразование из географической СК в плоскую прямоугольную с помощью 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 разные характеристики. Или в данном случае за датум результата всегда берется датум исходной СК? Можете прояснить немного?
Re: proj4, lonlat -> XY
Добавлено: 25 мар 2014, 18:36
trir
почитай внимательно описание
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]]
Re: proj4, lonlat -> XY
Добавлено: 25 мар 2014, 18:50
drug
Почитал, но ничего нового не обнаружил.
Я исхожу из того, что при пересчете из географических в плоские прямоугольные используются параметры эллипсоида, в частности его оси. Я предпологал, что proj4 в начале переводит из географических WGS84, далее географические на Крассовском и уже потом плоские. А здесь получается, что при данном преобразовании географические координаты всегда берутся на Крассовском? (т.е. результируещем эллипсоиде)
З.Ы. Кажется догадываюсь - epsg:28404 это именно преобразование и есть?
Re: proj4, lonlat -> XY
Добавлено: 25 мар 2014, 18:54
trir
Да... был не прав, действительно странно...
Re: proj4, lonlat -> XY
Добавлено: 25 мар 2014, 19:20
gamm
trir писал(а):Да... был не прав, действительно странно...
ничего странного, это прописано в доках, что при некоторых вызовах используется WGS84, что бы вы ни написали в +proj строке (прямо или косвенно). Внутри библиотеки PROJ4 нужно вызывать разные функции, в rgdal та же особенность (там два варианта вызова, кошерный - spTransform(), некошерный - project(), для командной строки тоже что-то подобное наверняка есть). Скорее всего, это "тяжкое наследие прошлого" тащится ...
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

Re: proj4, lonlat -> XY
Добавлено: 25 мар 2014, 20:55
Александр Мурый
У меня результат как у ErnieBoyd. cs2cs версии 4.8.0. Как именно работает cs2cs и proj.4, можно понять из исходного кода (благо что он открыт). Если уметь бегло читать на Си, конечно

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

Re: proj4, lonlat -> XY
Добавлено: 26 мар 2014, 11:02
Александр Мурый
drug писал(а):а вот про беглое чтение сишного кода это вы не к месту сказали, оно тут никаким боком.

Не соглашусь с вами, т.к. именно чтение исходного кода позволяет лучше всего разобраться с работе программы. Если было не к месту, то пардоньте.
Re: proj4, lonlat -> XY
Добавлено: 26 мар 2014, 11:15
drug
Да я уже кучу кода прочитал и кучу написал - в начале не смог до конца протестить свою реализацию ГОСТа из-за отсутствия эталонных данных. Решил заюзать proj через gdal в качестве эталона, а у него тоже результаты неверные оказались. Все это заставило меня начать немного нервничать, т.к. время идет, а результата нет. Мне нужны всего лишь эталонные данные, чтобы убедится в правильности расчетов, а вы меня послали код читать, вот я в эмоциях и прокомментировал.

Так что это вы меня пардоньте, если что.