Сбой преобразования точки Geotools

Я разрабатываю приложение с java, позволяющее преобразовать точку EPSG: 4326 в EPSG: 2972.

Мой код работает:

// Захватите преобразование между двумя системами отсчета координат

MathTransform mathTransform = CRS.findMathTransform(EPSG:4326,EPSG:2972, true);

//Указатель для преобразования

DirectPosition2D srcDirectPosition2D = new DirectPosition2D();

srcDirectPosition2D.setCoordinateReferenceSystem(CoordSysINT);

srcDirectPosition2D.setLocation(4.4665424,-52.4648442);

DirectPosition2D destDirectPosition2D = new DirectPosition2D();

//Преобразование

mathTransform.transform(srcDirectPosition2D, destDirectPosition2D);

//проецируемая точка

ProjectedPoint=новая точка (destDirectPosition2D.getX(), destDirectPosition2D.getY(), null);

Результат: X: 337473.6430296206 Y :493858.9919024287, но это неправильно.
Если я использую веб-сайт как http://cs2cs.mygeodata.eu/ и я делаю то же преобразование, истинный результат 337470.842698;493860.962631

Результат моего кода соответствует преобразованию между EPSG: 4326 и EPSG: 32622, но я не понимаю, почему?

Что не так в моем коде?

Большое спасибо

С уважением

Николя


person n.faget    schedule 03.07.2015    source источник


Ответы (1)


Текст Proj.4 для EPSG:2972:

+proj=utm +zone=22 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs

База данных EPSG v8.6 в Geotool показывает WKT для EPSG:2972 как

2972=PROJCS["RGFG95 / UTM зона 22N", GEOGCS["RGFG95", DATUM["Reseau Geodesique Francais Guyane 1995", SPHEROID["GRS 1980", 6378137.0, 298.257222101, AUTHORITY["EPSG","7019"]] , TOWGS84[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], AUTHORITY["EPSG","6624"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG" ,"8901"]], UNIT["градус", 0,017453292519943295], AXIS["Геодезическая долгота", ВОСТОК], AXIS["Геодезическая широта", СЕВЕР], AUTHORITY["EPSG","4624"]], PROJECTION[ "поперечный_меркатор", АВТОРИЗАЦИЯ["EPSG","9807"]], ПАРАМЕТР["центральный_меридиан", -51.0], ПАРАМЕТР["широта_начала", 0.0], ПАРАМЕТР["масштабный_коэффициент", 0.9996], ПАРАМЕТР["false_easting", 500000.0], ПАРАМЕТР["false_northing", 0.0], UNIT["m", 1.0], AXIS["Easting", EAST], AXIS["Neverthing", NORTH], AUTHORITY["EPSG","2972"]]

Обратите внимание, что выделенное преобразование в WGS84 отличается. Это объясняет разницу, которую вы видите. Я не знаю, что правильно, но мне кажется, что EPSG WKT неверен.

Это отличие изменяет поведение EPSG:2972 на поведение EPSG:32622. Более технический ответ заключается в том, что сфероид данных (GRS80) EPSG:2972 ведет себя так, как если бы он был сфероидом данных (WGS84) EPSG:32622.

person Brett Walker    schedule 03.07.2015