Conversión de coordenadas Gauss-Krüger a geográficas usando los elipsoides Hayford o WGS 84: caso Argentina

La proyección UTM está basada en Gauss-Krüger y presenta muy pocas diferencias con respecto a ésta última proyección. Las diferencias que se tienen que tener en cuenta son tres. La primera es el factor de escala (en UTM k=0.9996 y en Gauss-Krüger k=1) el cual debe ser cambiado en tres de las expresiones de Coticchia-Surace. La segunda diferencia es la composición y denominación de los husos UTM que difiere de la forma en que se hace para Gauss-Krüger. En la transformación UTM-geográfica el huso permitía la determinación de la coordenada geográfica del meridiano central. En Gauss-Kruger introducimos directamente el valor del meridiano central el cual nos permitirá seleccionar el factor adecuado de retranqueo para las X que en el caso de UTM era fijo (500.000). Por último, hay que tomar en cuenta una variación en el factor de retranqueo (falso Norte) en las Y, el cual depende del tipo de elipsoide, y que en el el caso de UTM era fijo (10.000.000) para el hemisferio Sur.

Con base en lo anterior, se modificó el programa que aquí se presenta:

Conversión de coordenadas UTM a geográficas usando los elipsoides Hayford o WGS 84

para adaptarlo al caso Argentino de las 7 fajas (meridianos centrales 72, 69, 66, 63, 60, 57, 54 para las fajas 1 a 7; respectivamente). Se probó con el siguiente ejemplo (faja 2, elipsoide WGS 84):

X = 2379996.69 
Y = 6625759.55
meridiano central = -69
origen de latitudes = -90
falso Este = 2.500.000
falso Norte = 0
longitud 70º 15' 0''
latitud 30º 30' 0''

el cual fue verificado con la calculadora geodésica que se encuentra en:

http://www.gabrielortiz.com/conversor_coordenadas2/conversor.asp

La salida del programa aquí propuesto fue la siguiente:

Programa para convertir coordenadas Gauss-Kruger en geograficas

Escoja un numero para seleccionar el elipsoide de referencia

Hayford = 1            WGS 84 = 2

Su eleccion es = ? 2
(WGS 84)

meridiano central = ? 69

Hemisferio Norte o Sur (introduzca una "N" o "S"; pueden ser minusculas)

Hemisferio = ? s

UTM X = ? 2379996.69
UTM Y = ? 6625759.55

long(grados decimales) = -70.249999993; lat(grados decimales) = -30.500000081

long(gºmm'ss.s'') = -70º -14' -59.999974168''; lat(gºmm'ss.s'') = -30º -30' -0.000290795''

El ejecutable para Windows, en formato comprimido, se puede bajar del siguiente enlace:

kruger_geo.zip

Se agradece comentar si se producen resultados no deseados (porque sólo lo probé para la faja 2 y con un sólo elipsoide) o alguna sugerencia.

Nota: La aplicación en el sentido contrario también ha sido resuelta en:

Conversión de coordenadas geográficas a Gauss-Krüger usando los elipsoides Hayford o WGS 84: caso Argentina

About these ads
Esta entrada fue publicada en Código C++, SIG, Transformar Coordenadas y etiquetada , . Guarda el enlace permanente.

38 respuestas a Conversión de coordenadas Gauss-Krüger a geográficas usando los elipsoides Hayford o WGS 84: caso Argentina

  1. Pingback: Articulo Indexado en la Blogosfera de Sysmaya

  2. Leandro dijo:

    Quría consultarte como se realiza paso de un sistema de coordenadas a otro. Basicamente tengo que hacer lo mismo que hace el programa C++ que publicaste pero en java y no encuentro ningun codigo que me pueda dar una mano por eso acudo a tus conocimientos. Donde trabajo tenemos que pasar unas coordenadas que se encuentran en Gauss-Krüger WGS 84 a geogràficas para poder dibujarlas sobre google maps. Agradecería si me puedes ayudar.
    Leo.

    • Esta fue la referencia inicial:

      http://www.gabrielortiz.com/index.asp?Info=058b

      sobre la cual me basé para hacer el código C/C++. Gauss-Krüger es un tipo especial de UTM. Cuando tengas listo ese código en Java después te señalo que tienes que hacer para pasar de Gauss-Krüger a geográficas. Son como tres ligeras modificaciones al código anterior.

      Saludos

      • enrique luengo dijo:

        Hola José,
        Primeramente decirte que me encantan los post que publicas en tu página. Enhorabuena, cada dos por tres caigo en tu blog para alguna consulta.

        Ya en el asunto, hace un tiempo implementé la formulación de las dos páginas de Gabriel referidas a estas conversiones (geográficas-geodésicas/UTM) a un módulo VBA, para hacer transformaciones DXF/KML. No soy topógrafo ni informático, pero en lo primero tengo nociones por la carrera -ing. civil-, y de lo segundo me defiendo holgadamente en VB(A).

        Mi módulo funciona a satisfacción para mis requisitos en España. Pero me estoy encontrando con problemas en Colombia. No dispongo de mucha información al respecto de los sistemas de referencia utilizados, aunque desde luego que no es UTM con los husos habituales, ya que la conversión me deja las coordenadas en otro sitio. Dispongo de alguna información sobre husos de GK en Colombia y no sé si tendré que profundizar con ese sistema.

        No obstante lo anterior, me gustaría entender la relación Gauss-Kruger/UTM o con sistemas de coordenadas geográficas-geodésicas, por lo que si fueses tan amable de indicarme esas tres modificaciones puntuales sobre la formulación de Gabriel, o ampliarme la información sobre esta formulación te estaría muy agradecido.

        En principio voy a probar con la información obtenida de: http://www.earg.gov.ar/transf.pdf (a la fecha no está accesible, pero sí está guardada en los registros de http://web.archive.org/)

        Puedo remitir el módulo VBA, aunque tengo implementadas otras funciones auxiliares que habría que filtrar para evitar fallos en la ejecución.

        Aprovecho para felicitarte las fiestas, y nuevamente por el esfuerzo que haces con tu blog.

        Recibe un cordial saludo

  3. Leandro dijo:

    Este es código en java, siguiendo por la planilla excel que baje del sitio. Algunas cosas a tener en cuenta es que el calculo es para la faja 2 ya que las coordenas Gauss Krugger estan calculadas sobre la Provincia de Mendoza. El elipsoide es WGS84. Lo que necesito saber es que debo modificar para que el pasaje sea de Gauus Krugger y no de UTM. Por lo que lei una de las modificaciones es el factor escala k, el cual debe ser 1.

    public static double [] pasarCoordenadasGaussKruggerAGeodesicas (double puntoX, double puntoY){
    
            double coordenadaGeodesicas [] = new double [2];
            double latitudHexadecimal= 0.0, longitudHexadecimal= 0.0, fiEnRadianes = 0.0;
            double zeta, alSurDelEcuador, fi, ni, a, a1, a2, j2, j4, j6, alfa, beta, gama, bFi, b, xi, eta, senHXi, deltaLambda, tau = 0.0;
            double factorEscalaK = 0.0;
            int meridianoCentral=0, uso = 0;
    
            //El factor escala k para Gauss Krugger es k=1 y
            //para UTM 0.9996. En nuestro caso es 1.
            factorEscalaK = 1;
    
            //Los valores utilizados son para el elipsoide WGS84
            double semiEjeMayor = 6378137.0;
            double semiEjeMenor = 6356752.315;
            double exentricidad = 0.081819191;
            double exentricidadPrima = 0.082094438;
            double exentricidadPrimaALaDos = 0.006739497;
            double radioPolarDeCurvatura = 6399593.626;
    
            //Se utiliza como meridiano centra 69 que es el que corresponde
            //a la faja 2 en Argentina donde esta Mendoza.
            meridianoCentral = 69;
            uso= 42;
            
            //Se utiliza el Hemisferio Sur
            alSurDelEcuador = puntoY - 10000000;
            //System.out.println("alSurDelEcuador: " + alSurDelEcuador);
    
            //Realizamos los calculos correspondientes
            fi = (alSurDelEcuador) / (6366197.724 * factorEscalaK);
            //System.out.println("fi: " + fi);
            ni = (radioPolarDeCurvatura/(1 + exentricidadPrimaALaDos * (Math.pow(Math.pow(Math.cos(fi), 2), (1 / 2))) )) * factorEscalaK;
            //System.out.println("ni: " + ni);
            a  = (puntoX - 500000) / ni;
            //System.out.println("a: " + a);
            a1 = Math.sin(2 * fi);
            //System.out.println("a1: " + a1);
            a2 = a1 * (Math.pow(Math.cos(fi), 2));
            //System.out.println("a2: " + a2);
            j2 = fi + (a1 / 2);
            //System.out.println("j2: " + j2);
            j4 = (3 * j2 + a2) / 4;
            //System.out.println("j4: " + j4);
            j6 = (5* j4 + a2 * Math.pow(Math.cos(fi),2)) /3;
            //System.out.println("j6: " + j6);
            alfa = (3.0/4.0) * exentricidadPrimaALaDos;
            //System.out.println("alfa: " + alfa);
            beta = (5.0/3.0) * Math.pow(alfa,2);
            //System.out.println("beta: " + beta);
            gama = (35.0/27.0) * Math.pow(alfa, 3);
            //System.out.println("gama: " + gama);
            bFi = factorEscalaK * radioPolarDeCurvatura * (fi - (alfa * j2) + (beta * j4) - (gama * j6));
            //System.out.println("bFi: " + bFi);
            b   = (alSurDelEcuador - bFi) / ni;
            //System.out.println("b: " + b);
            zeta =((exentricidadPrimaALaDos * Math.pow(a, 2)) / 2.0) * Math.pow(Math.cos(fi), 2);
            //System.out.println("zeta: " + zeta);
            xi = a * (1.0-(zeta / 3.0));
            //System.out.println("xi: " + xi);
            eta = b * (1.0 - zeta) + fi;
            //System.out.println("eta: " + eta);
            senHXi = (Math.exp(xi)-Math.exp((-1.0 * xi))) / 2.0;
            //System.out.println("senHXi: " + senHXi);
            deltaLambda = Math.atan( senHXi / Math.cos(eta));
            //System.out.println("deltaLambda: " + deltaLambda);
            tau = Math.atan(Math.cos(deltaLambda) * Math.tan(eta));
            //System.out.println("tau: " + tau);
    
            //Calculo fi en radianes para poder obtener la latitud
            //en Hexadecimales.
            fiEnRadianes = fi + (1 + exentricidadPrimaALaDos * Math.pow(Math.cos(fi), 2) - (2/3) * exentricidadPrimaALaDos * Math.sin(fi) * Math.cos(fi) * (a - fi)) * (tau - fi);
            //System.out.println("fiEnRadianes: " + fiEnRadianes);
            latitudHexadecimal = (fiEnRadianes / Math.PI) * 180;
            //System.out.println("latitudHexadecimal: " + latitudHexadecimal);
    
            //Obtengo la longitud
            longitudHexadecimal = (deltaLambda / Math.PI) * 180 + meridianoCentral;
            //System.out.println("longitudHexadecimal: " + longitudHexadecimal);
    
            //Guardamos en el arreglo la latitud y longitud, en Hexadecimal,
            //en la primer posición y segunda posición segun corresponda.
            coordenadaGeodesicas [0] = latitudHexadecimal;
            coordenadaGeodesicas [1] = longitudHexadecimal;
    
            return coordenadaGeodesicas;
        }
    
  4. Leandro dijo:

    Te comento, las modificaciones que realice y me da igual que a vos, las diferencias son mìnimas con respecto al desarrollo en C++ supongo que debe ser por una cuestion de redondeo. Las modificaciones que realice son:
    Factor Escala k = 1
    Meridiano Central = -69
    Falso este = 2500000 (que es en la linea) a = (puntoX – 500000) / ni;
    Lo que si tengo un problema, segun el programa GEOCAL par las coordenadas Gauss Este = 2514100 y Norte = 6361410, debería dar latitud = -32.891831 longitud = -68.850183. (Es la direcciòn de donde trabajo) y me esta dando tanto a vos como a mi latitud = -32.889972 longitud = -68.849202.

    • Con respecto a esto te puedo decir: utiliza la calculadora geodésica que está en el sitio de Gabriel Ortiz y si da lo mismo que lo que nos está dando a nosotros entonces el problema estaría en GEOCAL. Yo revise lo cálculos pormenorizadamente y los mios coinciden con los de Gabriel. El también señala que los cálculos basados en la ecuaciones de Coticchia-Surace no son tan “exactos” como los de otro procedimiento que el refiere pero cuyo nombre no recuerdo. Sin embargo, todo lo que está aquí en este Blog está basado en Coticchia-Surace y las diferencias están, en muchos casos, por debajo del metro. Cuando comparo, en algunos casos, con las transformaciones internas que da mi GPS Colorado 300; este último produce resultados que difieren hasta en 20 metros.

    • José dijo:

      Leandro, viendo el código que pusiste arriba, creo que el Falso Norte que tenés que usar no es 10.000.000 (este valor es válido para UTM) sino 10.001.965,7293148 , y el retranqueo de las X deberia ser 2.500.000 en vez de 500.000; creo que con estas modificaciones te va a dar el resultado esperado.
      Saludos

      • Emanuel dijo:

        José, muchas gracias por este post. Pude reproducir tus cálculos. Ahora bien ¿de dónde se saca el falso norte de cada elipsoide? Estoy buscando a morir y no puedo dar con una tabla que tenga esos datos. Muchas gracias, saludos

  5. Leandro dijo:

    Te mando los valores que me dan los calculos del programa para las coordenadas Gauss Este = 2514100 y Norte = 6361410.

    factorEscalaK = 1;
    //Los valores utilizados son para el elipsoide WGS84
    double semiEjeMayor = 6378137.0;
    double semiEjeMenor = 6356752.315;
    double exentricidad = 0.081819191;
    double exentricidadPrima = 0.082094438;
    double exentricidadPrimaALaDos = 0.006739497;
    double radioPolarDeCurvatura = 6399593.626;
    meridianoCentral = -69;

    alSurDelEcuador: -3638590.0
    fi: -0.5715483806421592
    ni: 6356752.312857752
    a: 0.0022196869258945037
    a1: -0.9099223276788169
    a2: -0.6436693571363711
    j2: -1.0265095444815677
    j4: -0.9307994976452686
    j6: -1.7031074438607317
    alfa: 0.0050546227499999995
    beta: 4.258201857469593E-5
    gama: 1.6740580875556268E-7
    bFi: -3624724.1492115925
    b: -0.002181279072390653
    zeta: 1.1744632968819022E-8
    xi: 0.002219686917204701
    eta: -0.5737296596889315
    senHXi: 0.002219688739941772
    deltaLambda: 0.002642850189063538
    tau: -0.5737280676698059
    fiEnRadianes: -0.5737384592151334

    latitudHexadecimal: -32.87279225736586
    longitudHexadecimal: -68.8485758382813

  6. Leandro dijo:

    Lo que te puedo aportar que en GEOCALC se utiliza Gauss Krugger con DATUM = Campo Inchauspe y se debe convertir a geograficas con DATUM = 186 WGS 184. Quizas las diferencias sean por los DATUM. En la pagina que me diste sale un articulo que habla gustamente de esto quizas sea ese el problema.

    Conversión de datum con el modelo de 7 parámetros Bursa-Wolf
    —————————————————————–
    Uno de los temas que más dudas genera es sin duda el proceso de cambio de datum, que por cierto, está muy de actualidad con el uso masivo de los sistemas GPS. Cada vez es más necesario convertir información geográfica a datums locales. En este artículo se detalla en profundidad el proceso de conversión de datum con el modelo de 7 parámetros de Bursa-Wolf. El texto acompaña a los conceptos introducidos con un ejercicio completo y una implementación de las ecuaciones en hoja de cálculo.

    • Ahi están las diferencias. Las transformaciones con cambio de datum son “delicadas” y válidas para las regiones para las cuales fueron desarrolladas. Por eso es que tienes que validar con puntos expresados en ambos datums. Si mal no recuerdo, todo lo que refiero en este Blog con cambio de datum (lamentablemente nada que involucre Gauss-Krüger) concuerda, en su mayoría, con una precisión mejor que el metro. Por otra parte, para que tus resultados concuerden para el cambio de datum tienes que desarrollar también la aplicación en sentido inverso: de geográficas a Gauss-Krüger. Allí he tenido problemas con una de las coordenadas y por eso es que no he desarrollado la aplicación completa para Gauss Krugger con DATUM Campo Inchauspe.

  7. catriel dijo:

    necesito ubicar en un plano de autocad 5 puntos, yo tengo la ubicacion por GPS de los 5 puntos estas ubicaciones son Fe1 34°14’32”/58°45’28” fe2 34°14’47”-58°45’28” fe3 34°14’49” 58°45’31” fe434°14’57”-58°45’38” fe5 34°14’50”-58°46’03”. el tema es que me piden que las pase a Gauss-Krüger Datum´84 en el marco del Posgar 94”.
    la verdad que no puedo encontrar la forma de realizarlo.

    • Si te esperas un momento, veré si te las puedo convertir con ArcGis. Ayudaría si me dices a que país te refieres porque no indicas si la latitud es N, S, etc (aunque imagino que es Argentina). El Posgar 94 usa el elipsoide WGS 84. Sólo me faltaría ver si es lo contrario de la transformación aquí expresada. No haría falta ArcGis sino un conversor (la aplicación en sentido contrario no la he desarrollado por problenas de cálculo en una coordenada).

      Ya con esto:

      http://www.ign.gob.ar/descargas/postgar/red_posgar94.pdf

      puedo verificarlo.

  8. Alex dijo:

    Toma ya!!!, me han encantado estos post… Pa´flipar.
    Siento no poder aportar nada :-)

    Saludos :-)

  9. Jess dijo:

    que genial!! gracias por el programita!! buenisimo!!!

  10. Hernan dijo:

    Estimados,
    alguien realizo la funcion java inversa (PasarCoordenadasGaussKruggerAGeodesicas)??? yo dispongo de las coordenadas geodesicas (originadas por un GPS, y necesito convertirlas a una variante de Gauss Krugger.
    Si alguien reescribio el algoritmo para hacer la operacion inversa se lo agradecere
    Muchas Gracias

  11. Pingback: Conversor de coordenadas (C/C++) |

  12. Andrea dijo:

    Ulilicé las formulas para Santa Fe, faja 5 y dio igual que la transformación que realiza AutoCad.
    Muchas gracias.

    • Gracias por probarlo y verificar que da igual. En el sentido contrario, de geográficas a Gauss-Krüger, me ha dado problemas pero para una sola de las coordenadas. Por eso no lo he publicado. Algún día de estos lo rescato y veo donde está el error. Es fundamental para el cambio de datum (por ejemplo Campo Inchauspe a POSGAR o viceversa). Si encuentro el error no me sería difícil programarlo porque he creado una Clase Coordenadas.

      Saludos

    • Gracias a tu respuesta, revisé el programa y encontré el error. Próximamente lo posteo.

      Saludos

    • Ruben dijo:

      Hola Andrea:

      Modificaste algún valor para faja 5?

  13. Pingback: Conversión de coordenadas geográficas a Gauss-Krüger usando los elipsoides Hayford o WGS 84: caso Argentina |

  14. Juan Carlos Pucci dijo:

    Tengo un mapa del noroeste argentino con areas de exploracion pero tengo que plotear en un mapa que por ejemplo tiene los valores X (m North) 7469999,7800 y 4567169,2700 y no se como transformar otras areas que tienen los valores X (m North) 7363977,4312 y Y (m East) 3072202,1270 digamos que me desconcierta es Y , que pasa de 4 a 3, el dato es Posgar 94 los otras areas varian el datum.
    Desde ya muy agradecido
    carlos Pucci

  15. Maximiliano G dijo:

    Hola quisiera saber como pasar Latitud y Longitud Decimales o Hexadecimal a coordenadas XY Posgar94 desde ya muchas gracias.

  16. CARLA dijo:

    Hola necesito ayuda en el cambio de coordenadas geográficas a Gauss Kruger. Mi problema es el siguiente, tengo inconvenientes al cambiar los parámetros en las ecuaciones que publicas en tu blog, mas que nada donde bebo colocar el valor del meridiano central.
    >>>>En Gauss-Kruger introducimos directamente el valor del meridiano central el cual nos permitirá seleccionar el factor adecuado de retranqueo para las X que en el caso de UTM era fijo (500.000).
    Y por ultimo como y donde modifico lo siguiente:
    >>>> hay que tomar en cuenta una variación en el factor de retranqueo (falso Norte) en las Y, el cual depende del tipo de elipsoide, y que en el el caso de UTM era fijo (10.000.000) para el hemisferio Sur.
    Desde ya muchas gracias!!!!

  17. CARLA dijo:

    hola chicos necesito su ayuda. Necesito realizar un cambio de coordenadas, de geográfica a Gauss Kruger utilizando el elipsoide de Hayford. Yo utilice las ecuaciones dadas por Gabriel Ortiz, el problema se me presenta cuando hago las modificaciones para el caso de Argentina, donde el factor de escala 1, en otras palabras necesito saber que modificaciones hacer en la ecuación.
    ¿Como interviene el meridiano central?
    Agradecería la ayuda!!!.
    Desde ya muchas gracias.

  18. enrique luengo dijo:

    Hola,

    Después de convertir a VB(A) el código del compañero Leandro, y revisarlo, he detectado dos errores en su formulación (comparada con la de referencia de Gabriel Ortiz, y ampliando posteriormente la búsqueda para descartar errores).

    Es imposible que le dé, ni por asomo, los valores que espera, al menos con ese código

    El valor del parámetro “ni” (línea de código 33) no consigo sus valores… este error se propaga. En parte deriva de que en esa línea el divisor debe ser: Sqr(1 + ExcentricidadSegunda2 * (VBA.Cos(fi) ^ 2))

    Otro error lo he encontrado en la línea 72, donde el factor que multiplica el tercer componente es (3/2) y no (2/3) como figura en su código.

    Finalmente he encontrado un documento que me ha clarificado algo más las cosas para Colombia: “TIPOS DE COORDENADAS MANEJADOS EN COLOMBIA” (http://www2.igac.gov.co:8080/igac_web/UserFiles/File/MAGNAWEB_final/documentos/tipos%20de%20coordenadas.pdf)
    En cuanto consiga hacer la conversión de coordenadas de forma correcta, volveré para postear el código aquí, para provecho de quien le sea de utilidad.

    De todas formas, el código de Leandro, una vez corregido y pasado a VB(A), vendría a ser algo así como (comprobado con la formulación de Gabriel Ortiz, que es la que vengo usando hasta la fecha y que clava los resultados):

    Option Explicit
    
    Public Const PI = 3.14159265
    
    Public Type ePunto
        X As Double
        Y As Double
    End Type
    
    Public Sub TestGK2Geodesicas()
        Dim Punto As ePunto
        Dim bHemisferioN As Boolean
        
        With Punto
            .X = 2514100
            .Y = 6361410
            bHemisferioN = True 'Indica que el punto está en el hemisferio norte
        End With
        
        Call fCoordenadasGaussKrugger2Geodesicas(Punto, bHemisferioN)
        
    End Sub
    
    Public Function fCoordenadasGaussKrugger2Geodesicas(ByRef Punto As ePunto, Optional ByRef bHemisferioN As Boolean = True) As ePunto
        Dim PuntoHuso As ePunto
    
        Dim coordenadaGeodesicas As ePunto
        Dim latitud As Double
        Dim longitud As Double
        Dim fiEnRadianes As Double
    
        Dim zeta As Double
        Dim fi As Double
        Dim ni As Double
        Dim a As Double
        Dim a1 As Double
        Dim a2 As Double
        Dim j2 As Double
        Dim j4 As Double
        Dim j6 As Double
        Dim alfa As Double
        Dim beta As Double
        Dim gamma As Double
        Dim bFi As Double
        Dim b As Double
        Dim xi As Double
        Dim eta As Double
        Dim senHXi As Double
        Dim deltaLambda As Double
        Dim tau As Double
        Dim factorEscalaK As Double
        Dim meridianoCentral As Integer
        Dim intHuso As Integer
        Dim lgFalsoEste as long
    
        'Factor escala K (Gauss Krugger k=1 / UTM 0.9996)
        factorEscalaK = 1
    
        'Los valores utilizados son para el elipsoide WGS84
        Dim semiEjeMayor As Double
        Dim semiEjeMenor As Double
        Dim ExcentricidadPrimera As Double
        Dim ExcentricidadSegunda As Double
        Dim ExcentricidadSegunda2 As Double
        Dim radioPolarDeCurvatura As Double
        
        semiEjeMayor = 6378137
        semiEjeMenor = 6356752.315
        ExcentricidadPrimera = 0.081819191
        ExcentricidadSegunda = 0.082094438
        ExcentricidadSegunda2 = 0.006739497
        radioPolarDeCurvatura = 6399593.626
    
        'Meridiano central 69 corresponde a la faja 2 en Argentina (Mendoza).
        meridianoCentral = -69
        intHuso = 42
        lgFalsoEste = 500000
    
        'Si el punto corresponde al Hemisferio Sur hay que mover -10000000 el origen
        PuntoHuso.Y = VBA.IIf(bHemisferioN, Punto.Y, Punto.Y - 10000000)
    Debug.Print ("PuntoHuso.Y: " & PuntoHuso.Y)
    
        'Realizamos los calculos correspondientes
        fi = (PuntoHuso.Y) / (6366197.724 * factorEscalaK)
    Debug.Print ("fi: " & fi)
    
        ni = factorEscalaK * radioPolarDeCurvatura / VBA.Sqr(1 + ExcentricidadSegunda2 * (VBA.Cos(fi) ^ 2))
    Debug.Print ("ni: " & ni)
        
        a = (Punto.X - lgFalsoEste) / ni
    Debug.Print ("a: " & a)
    
        a1 = VBA.Sin(2 * fi)
    Debug.Print ("a1: " & a1)
    
        a2 = a1 * ((VBA.Cos(fi) ^ 2))
    Debug.Print ("a2: " & a2)
    
        j2 = fi + (a1 / 2)
    Debug.Print ("j2: " & j2)
    
        j4 = (3 * j2 + a2) / 4
    Debug.Print ("j4: " & j4)
    
        j6 = (5 * j4 + a2 * (VBA.Cos(fi) ^ 2)) / 3
    Debug.Print ("j6: " & j6)
    
        alfa = (3 / 4) * ExcentricidadSegunda2
    Debug.Print ("alfa: " & alfa)
    
        beta = (5 / 3) * (alfa ^ 2)
    Debug.Print ("beta: " & beta)
    
        gamma = (35 / 27) * (alfa ^ 3)
    Debug.Print ("gamma: " & gamma)
    
        bFi = factorEscalaK * radioPolarDeCurvatura * (fi - (alfa * j2) + (beta * j4) - (gamma * j6))
    Debug.Print ("bFi: " & bFi)
    
        b = (PuntoHuso.Y - bFi) / ni
    Debug.Print ("b: " & b)
    
        zeta = (ExcentricidadSegunda2 * (a ^ 2)) * (VBA.Cos(fi) ^ 2) / 2
    Debug.Print ("zeta: " & zeta)
    
        xi = a * (1 - (zeta / 3))
    Debug.Print ("xi: " & xi)
    
        eta = (b * (1 - zeta)) + fi
    Debug.Print ("eta: " & eta)
    
        senHXi = (VBA.Exp(xi) - VBA.Exp((-xi))) / 2
    Debug.Print ("senHXi: " & senHXi)
    
        deltaLambda = VBA.Atn(senHXi / VBA.Cos(eta))
    Debug.Print ("deltaLambda: " & deltaLambda)
    
        tau = VBA.Atn(VBA.Cos(deltaLambda) * VBA.Tan(eta))
    Debug.Print ("tau: " & tau)
    
        'fi en radianes para poder obtener la latitud en Hexadecimales.
    
        fiEnRadianes = fi + (1 + (ExcentricidadSegunda2 * (VBA.Cos(fi) ^ 2)) - _
                             ((3 / 2) * ExcentricidadSegunda2 * VBA.Sin(fi) * VBA.Cos(fi) * (tau - fi))) * _
                            (tau - fi)
    Debug.Print ("fiEnRadianes: " & fiEnRadianes)
    
        latitud = (fiEnRadianes / PI) * 180
    Debug.Print ("latitud: " & latitud)
    
        'Longitud
        longitud = (deltaLambda * 180 / PI) + meridianoCentral
    Debug.Print ("longitud: " & longitud)
    
        coordenadaGeodesicas.X = latitud
        coordenadaGeodesicas.Y = longitud
    
        fCoordenadasGaussKrugger2Geodesicas = coordenadaGeodesicas
    End Function
    
  19. CARLA dijo:

    Estimados,
    alguien realizo la funcion java inversa (PasarCoordenadasGaussKruggerAGeodesicas)??? yo dispongo de las coordenadas geodesicas (originadas por un GPS, y necesito convertirlas a una variante de Gauss Krugger.
    MUCHAS GRACIAS!!!!

  20. OK. Pero lo que necesito es por lo menos un par de valores X,Y en coordenadas geográficas y su valor exacto en coordenadas Gauss-Krüger faja 6 para comparar si trabaja bien. Yo vivo entre Venezuela y España y para ti es más fácil darme ese ejemplo De todas maneras voy a producir ese código para ver que pasa.

    • CARLA dijo:

      Hola José, disculpa la demora. Te paso las coordenadas:
      Lat: S 31.39684
      Lon: W 58.01764 (el Google Earth me las da con signo negativo).
      Utilizando el elipsoide WGS 84, campo Inchauspe, faja 6, las coordenadas Gauss Kruger que tendrían que darme son:
      6403263, y
      6526754.
      Gracias por tu ayuda!!!

  21. luis dijo:

    hola, quiero convertir coordenadas X 5485485 Y 4470767 Gauss Kruger faja 4 meridiano 63º con el programa Kruger_geo y me tira error.¿Y si quiero pasar coordenadas S40º49´21.7´´ W63º00´00´´ a coordenadas gaus kruger X e Y, como tengo que hacer?
    Desde ya muchas gracias.

Deja un comentario

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s