Sto avendo un problema riguardante la trasformazione delle coordinate molto amata con l'aiuto di GeoTools: vorrei convertire un insieme di coordinate da Gauss-Kruger (zona 5, EPSG 31469) in coordinate WGS84 ordinarie (EPSG 4326).Trasformazione coordinate errata Gauss-Kruger - WGS84 utilizzando GeoTools
Ive costruito un codice con un semplice esempio (solo una coppia di coordinate per provare):
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
Il risultato dopo debugging è il seguente: 48,791886921764345, 17,16525096311777
Quando poi controllare ho ottenuto le coordinate WGS84 (le ho appena scaricate su Google Maps). Finisco da qualche parte nella Repubblica Ceca, vicino all'Austria, anche se questa coppia di coordinate dovrebbe essere da qualche parte nell'est della Germania (di sicuro l'ho controllato con un decodificatore html):
---> dovrebbe essere il risultato: 51.0609167, 13.6900142.
Non riesco a immaginare alcun motivo per cui si verifichi questo errore. GeoTools ottiene entrambi i CRS ricercati (ho allegato un estratto dalla risposta della console java)
Qualcuno è in grado di spiegarlo? Apprezzerei qualsiasi aiuto!
Molti saluta, Sebastian
**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ì, questo mi ha fatto impazzire anche qui. Stranamente 'CRS.decode (" EPSG: 4326 ")' usa in qualche modo un diverso orientamento dell'asse rispetto a 'DefaultGeographicCRS.WGS84', forse un bug? – Karussell
Oh, non ha nulla a che fare con Geotools: "Quindi se vedi alcuni dati in" EPSG: 4326 "non hai idea se è in ordine x/y o in ordine y/x." Vedere la sezione "Ordine degli assi" qui http://docs.geotools.org/latest/userguide/tutorial/geometry/geometrycrs.html – Karussell