Intento convertir unas coordenadas de "EPSG:31469" a "EPSG:3857" y viceversa.
Con el marco pesado GeoTools parece funcionar con bastante precisión.
"EPSG:31469" - 5439627.33, 5661628.09
"EPSG:3857" - 1573655.6648492748, 6636624.730959651
"EPSG:31469" - 5439627.330626475, 5661628.099510074
Pero me gustaría utilizar la biblioteca ligera Proj4j ( https://github.com/Proj4J/proj4j ) que produce una desviación masiva:
"EPSG:31469" - 5439627.33, 5661628.09
"EPSG:3857" - 1573659.9666159092 6603334.624358153
"EPSG:31469" - 5439626.576916553 5661585.491150079
¿Alguna idea de por qué ocurre esto?
Mi código:
import org.cts.crs.CRSException;
import org.osgeo.proj4j.CRSFactory;
import org.osgeo.proj4j.CoordinateTransform;
import org.osgeo.proj4j.CoordinateTransformFactory;
import org.osgeo.proj4j.ProjCoordinate;
public class Test
{
public static void main(String[] args) throws CRSException
{
ProjCoordinate coord = new ProjCoordinate(5439627.33, 5661628.09);
System.out.println(coord);
ProjCoordinate target = new ProjCoordinate();
CRSFactory crsFactory = new CRSFactory();
CoordinateTransformFactory f = new CoordinateTransformFactory();
CoordinateTransform t;
t = f.createTransform(crsFactory.createFromName("EPSG:31469"),
crsFactory.createFromName("EPSG:3857"));
t.transform(coord, target);
System.out.println(target);
ProjCoordinate coord2 = new ProjCoordinate(target.x, target.y);
t = f.createTransform(crsFactory.createFromName("EPSG:3857"),
crsFactory.createFromName("EPSG:31469"));
t.transform(coord2, target);
System.out.println(target);
System.out.println(target.x - coord.x);
System.out.println(target.y - coord.y);
}
}
0 votos
La biblioteca da la sensación de estar poco cuidada. Tal vez debería probar otra biblioteca java ligera github.com/orbisgis/cts en su lugar.
0 votos
La definición 3857 en la versión java puede ser errónea. Puede que esté obteniendo 3395 en su lugar. Es decir, está utilizando el elipsoide wgs84 en lugar de una esfera wgs84. Eso debería seguir funcionando en el viaje de ida y vuelta, sólo te da coordenadas 3857 malas, así que hay algo más profundo.
1 votos
No estás solo con este problema: github.com/Proj4J/proj4j/issues/5 y github.com/Proj4J/proj4j/issues/3 . Puede intentar github.com/dwins/proj4j en su lugar.
0 votos
@AndreJ: Gracias. Con el github.com/dwins/proj4j ¡implementación funciona con precisión!