2 votos

La transformación del STC conduce a resultados extraños

Estoy intentando transformar una geometría del STC de EPSG 3035 a 4326 con el código que adjunto a continuación. Sin embargo, cuando sólo estoy leyendo la geometría de un WKT, los resultados son diferentes del valor esperado (debería ser long: 48°16'17.626", lat: 14°16'55.125" según epsg.io , pero es POINT (61.90... -19.77...) ).

Sin embargo, cuando cambio el orden de las coordenadas en el WKT obtengo los resultados esperados. ¿Hay alguna forma de indicar al WKTReader o JTS.transform para cambiar el orden de las coordenadas internamente?

final WKTReader reader = new WKTReader();
final Geometry geom = reader.read("POINT (4638804.944501147 2804557.565404966)");
final CoordinateReferenceSystem crs3035 = CRS.decode("EPSG:3035");
final CoordinateReferenceSystem crs4326 = CRS.decode("EPSG:4326");

final MathTransform metersToDeg = CRS.findMathTransform(crs3035, crs4326);
final Geometry transformed = JTS.transform(geom, metersToDeg);
System.out.println(transformed);

2voto

Adam Ernst Puntos 6939

El orden de los ejes con EPSG:4326 es una pesadilla de tal complejidad que realmente necesita ser retirado por la EPSG y sustituido por 2 códigos distintos para lat/lon y lon/lat.

Para un solución rápida y sucia puedes probar a añadir System.setProperty("org.geotools.referencing.forceXY", "true"); a su programa. Como alternativa, puede utilizar DefaultGeographicCRS.WGS84 en lugar de decodificar un código EPSG que debería dar un orden del eje Este/Norte (que siempre se puede comprobar con CRS.getAxisOrder(crs) .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X