Tengo un problema con la transformación de coordenadas querida con la ayuda de GeoTools: me gustaría convertir un conjunto de coordenadas de Gauss-Kruger (zona 5, EPSG 31469) en coordenadas ordinarias WGS84 (EPSG 4326).Transformación de coordenadas incorrecta Gauss-Kruger - WGS84 usando GeoTools
he construido un código con un ejemplo simple (un solo par de coordenadas para tratar):
double coordX = 5408301.53;
double coordY = 5659230.5;
double[] punt = new double[2];
CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:31469");
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326");
MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true);
DirectPosition expPt = new GeneralDirectPosition(coordX, coordY);
expPt = transform.transform(expPt, null);
punt = expPt.getCoordinate();
System.out.println(punt[0] + ", " + punt[1]); //lon, lat
El resultado después de la depuración es el siguiente: 48.791886921764345, 17,16525096311777
Cuando a continuación, comprobar obtuve las coordenadas WGS84 (solo las puse en Google Maps) termino en algún lugar de la República Checa cerca de Austria, aunque este par de coordenadas debería estar en algún lugar del este de Alemania (seguro, lo comprobé con un descodificador html):
---> debería ser el resultado: 51.0609167, 13.6900142.
No puedo imaginar ningún motivo por el que se produzca esta falla. GeoTools obtiene los dos CRS deseados (adjunté un extracto de la respuesta de la consola java)
¿Alguien puede explicar esto? ¡Agradecería cualquier ayuda!
Muchos saluda, Sebastián
**sourceCRS:**
PROJCS["DHDN/3-degree Gauss-Kruger zone 5",
GEOGCS["DHDN",
DATUM["Deutsches Hauptdreiecksnetz",
SPHEROID["Bessel 1841", 6377397.155, 299.1528128, AUTHORITY["EPSG","7004"]],
TOWGS84[612.4, 77.0, 440.2, -0.054, 0.057, -2.797, 2.55],
AUTHORITY["EPSG","6314"]],
PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
UNIT["degree", 0.017453292519943295],
AXIS["Geodetic latitude", NORTH],
AXIS["Geodetic longitude", EAST],
AUTHORITY["EPSG","4314"]],
PROJECTION["Transverse_Mercator", AUTHORITY["EPSG","9807"]],
PARAMETER["central_meridian", 15.0],
PARAMETER["latitude_of_origin", 0.0],
PARAMETER["scale_factor", 1.0],
PARAMETER["false_easting", 5500000.0],
PARAMETER["false_northing", 0.0],
UNIT["m", 1.0],
AXIS["Northing", NORTH],
AXIS["Easting", EAST],
AUTHORITY["EPSG","31469"]]
**targetCRS:**
GEOGCS["WGS 84",
DATUM["World Geodetic System 1984",
SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
UNIT["degree", 0.017453292519943295],
AXIS["Geodetic latitude", NORTH],
AXIS["Geodetic longitude", EAST],
AUTHORITY["EPSG","4326"]]
CONCAT_MT[PARAM_MT["Affine",
PARAMETER["num_row", 3],
PARAMETER["num_col", 3],
PARAMETER["elt_0_0", 0.0],
PARAMETER["elt_0_1", 1.0],
PARAMETER["elt_1_0", 1.0],
PARAMETER["elt_1_1", 0.0]],
INVERSE_MT[PARAM_MT["Transverse_Mercator",
PARAMETER["semi_major", 6377397.155],
PARAMETER["semi_minor", 6356078.962818189],
PARAMETER["central_meridian", 15.0],
PARAMETER["latitude_of_origin", 0.0],
PARAMETER["scale_factor", 1.0],
PARAMETER["false_easting", 5500000.0],
PARAMETER["false_northing", 0.0]]],
PARAM_MT["Ellipsoid_To_Geocentric",
PARAMETER["dim", 2],
PARAMETER["semi_major", 6377397.155],
PARAMETER["semi_minor", 6356078.962818189]],
PARAM_MT["Position Vector transformation (geog2D domain)",
PARAMETER["dx", 612.4],
PARAMETER["dy", 77.0],
PARAMETER["dz", 440.2],
PARAMETER["ex", -0.054],
PARAMETER["ey", 0.057],
PARAMETER["ez", -2.797],
PARAMETER["ppm", 2.5500000000455714]],
PARAM_MT["Geocentric_To_Ellipsoid",
PARAMETER["dim", 2],
PARAMETER["semi_major", 6378137.0],
PARAMETER["semi_minor", 6356752.314245179]],
PARAM_MT["Affine",
PARAMETER["num_row", 3],
PARAMETER["num_col", 3],
PARAMETER["elt_0_0", 0.0],
PARAMETER["elt_0_1", 1.0],
PARAMETER["elt_1_0", 1.0],
PARAMETER["elt_1_1", 0.0]]]
Sí, esto me volvió loco también aquí. Curiosamente, 'CRS.decode (" EPSG: 4326 ")' utiliza de alguna manera una orientación de eje diferente a la de 'DefaultGeographicCRS.WGS84' ¿quizás un error? – Karussell
Oh, no tiene nada que ver con Geotools: "Entonces, si ve algunos datos en" EPSG: 4326 ", no tiene idea de si están en orden x/y o en orden y/x". Consulte la sección "orden de ejes" aquí http://docs.geotools.org/latest/userguide/tutorial/geometry/geometrycrs.html – Karussell