1 votos

Arc 1960 / Zona UTM 36S a Lat Long para Google Maps

Tengo esta coordenada (778597.3125000001, 9148353). Me han dicho que esta coordenada es Arc 1960 / UTM zona 36S.

Cuando voy aquí: https://epsg.io/21036 y hago clic en "Obtener posición en el mapa" e ingreso las coordenadas UTM anteriores, coloca el punto en el lugar correcto en el mapa (en la esquina de un campo).

¿Qué tipo de transformación/proyección debo hacer para convertirlo a Latitud Longitud, y luego ir al mismo punto en Google Maps?

He intentado varias formas pero siempre termino con un desplazamiento diagonal de 400-200m.

La latitud y longitud correctas deberían ser: Lat: -7.699944 Long: 35.5262575 (esquina del campo, ver enlace a continuación):

https://www.google.com/maps/place/7%C2%B041'59.8%22S+35%C2%B031'34.5%22E/@-7.6999387,35.5240688,1108m/data=!3m2!1e3!4b1!4m5!3m4!1s0x0:0x0!8m2!3d-7.699944!4d35.5262575

Estoy usando DotSpatial.

            var Arc1960UTMZone36S = KnownCoordinateSystems.Projected.UtmOther.Arc1960UTMZone36S; 
            Arc1960UTMZone36S.AuthorityCode = 21036;

            var WGS1984 = KnownCoordinateSystems.Geographic.World.WGS1984;
            //4326 google earth  
            //3857 para google maps
            WGS1984.AuthorityCode = 3857;

            double[] xy = new double[2] { 778597.3125000001, 9148353 };
            double[] z = new double[1] { 0d };

            Reproject.ReprojectPoints(xy, z, Arc1960UTMZone36S, WGS1984, 0, 1);

            var latitude = xy[1];
            var longitude = xy[0];

            Debug.WriteLine($"Lat: {latitude} Long: {longitude}");

¿Alguien sabría por qué está desplazado?

1voto

Kellie Puntos 11

La solución fue utilizar la cadena proj4 en lugar del Sistema de Coordenadas Conocido.

En lugar de

var Arc1960UTMZone36S = KnownCoordinateSystems.Projected.UtmOther.Arc1960UTMZone36S; 
Arc1960UTMZone36S.AuthorityCode = 21036;

Utilice

String proj4_21036_str = "+proj=utm +zone=36 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs";    
ProjectionInfo proj21036 = ProjectionInfo.FromProj4String(proj4_21036_str);

pero no sé por qué.

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