2 votos

Ejemplo de GeoTools Oblique Mercator

Me gustaría utilizar la proyección Mercator oblicua en GeoTools.

Actualmente utilizo una proyección WGS84 Mercator como ésta:

        final CoordinateReferenceSystem wgs84CoordSystem = CRS
                .decode(LATLON_EPSG_CODE);
        final CoordinateReferenceSystem worldMercatorCoordSystem = CRS
                .decode(MERCATOR_EPSG_CODE);
        final MathTransform latLonToMercator = CRS.findMathTransform(wgs84CoordSystem,
                worldMercatorCoordSystem);
        final MathTransform mercatorToLatLon = CRS.findMathTransform(worldMercatorCoordSystem,
                wgs84CoordSystem);

El código EPSG de Mercator oblicuo no parece ser compatible (y de todas formas quiero poder especificar la latitud del centro y el acimut).

¿Podría alguien darme un ejemplo de cómo crear una proyección WGS84 Oblique Mercator y MathTransform que me permita convertir a/desde Lat/Lon, por favor?

2voto

Ida Puntos 21

Esta es la solución que he utilizado:

    // Define WGS84 Oblique Mercator WKT
private static final String MERCATOR_WKT = "PROJCS[\"OBLIQUE MERCATOR\","
        + "GEOGCS[\"WGS 84\","
        + "DATUM[\"WGS_1984\","
        + "SPHEROID[\"WGS 84\",6378137,298.257223563]],"
        + "PRIMEM[\"Greenwich\",0],"
        + "UNIT[\"degree\",0.01745329251994328]],"
        + "PROJECTION[\"Hotine_Oblique_Mercator\"],"
        // Centre location tags added to be replaced
        + "PARAMETER[\"latitude_of_center\",LATITUDE_OF_CENTRE],"
        + "PARAMETER[\"longitude_of_center\",LONGITUDE_OF_CENTRE],"
        // Azimuth and rectified grid angle set slightly below 90 to avoid
        // precision errors
        + "PARAMETER[\"azimuth\",89.999999],"
        + "PARAMETER[\"rectified_grid_angle\",89.999999],"
        + "PARAMETER[\"scale_factor\",1],"
        + "PARAMETER[\"false_easting\",0],"
        + "PARAMETER[\"false_northing\",0]," + "UNIT[\"metre\",1]]";

final CoordinateReferenceSystem obliqueMercatorCoordSystem = CRS
                .parseWKT(MERCATOR_WKT.replace("LATITUDE_OF_CENTRE",
                        Double.toString(centre.getLat())).replace(
                        "LONGITUDE_OF_CENTRE",
                        Double.toString(centre.getLon())));

Esto me permite fijar la longitud y la latitud del centro.

1voto

Sutikshan Dubey Puntos 120

¿Ha intentado definir la proyección Mercator mediante una cadena WKT?

http://spatialreference.org/ref/epsg/3395/prettywkt/

y un objeto org.gdal.osr.SpatialReference que llama al método SetWellKnownGeogCS:

String wkt = "PROJCS["WGS 84 / World Mercator",GEOGCS["WGS ...";

CoordinateReferenceSystem worldMercatorCoordSystem = CRS.parseWKT(wkt);

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