PDA

Ver la Versión Completa : Transformar coordenadas utm para google maps


ses27coves
08-05-2010, 18:52:04
Hola.

He esta buscado la forma de convertir el formato de coordenadas UTM a geodesicas, que son las aceptadas en google maps, ya que estoy desarrollando una aplicacion en delphi. Pero no consigo encontrar la forma de hacerlo.

Alguien sabe como hacerlo?

ecfisa
08-05-2010, 20:54:07
Hola ses27coves.

En esta dirección, explican como realizar la conversión:

http://www.forocoches.com/foro/showthread.php?t=390347

Saludos.

ses27coves
08-05-2010, 21:09:55
Gracias por la pagina web. Por lo que veo explica el calculo bastante bien, aunque tendre que desenpolbar los libros de matematicas para desarrollarlo.

ses27coves
09-05-2010, 00:25:44
Despues de varias hora revisando las formulas matematicas que ecfisa me ha facilitado mediante la pagina web, creo que esta es la funcion para realizar la conversion.
Lo he probado y parece que funciona con bastante presicion. Si alguien detecta algun error le agradeceria que lo mencionara para poder corregirlo.

function TForm1.utmtogeo(UtmX, UtmY, zona:integer): string;
var
fi, ni, mc, se, sd, a, a1, a2, j2, j4, j6, alfa, beta, ganma, bfi, b, zeta, xi, eta, sxi, delta, tau, sexas, radiantes:double;
begin
fi:= UtmY / (6366197.724*0.9996);
ni:= (6399593.626/Power((1+0.006739497*sqr(cos(fi))), 0.5))*0.9996;
mc:= (6*zona-183);
se:= UtmY;
a:= (UtmX-500000)/ni;
a1:= sin(2*fi);
a2:= a1*Power((COS(fi)), 2);
j2:= fi+(a1/2);
j4:= (3*j2+a2)/4;
j6:= (5*j4+a2*Power((COS(fi)),2))/3;
alfa:= (3/4)*0.006739497;
beta:= (5/3)*Power(alfa, 2);
ganma:= (35/27)*Power(alfa, 3);
bfi:= 0.9996*6399593.626*(fi-(alfa*j2)+(beta*j4)-(ganma*j6));
b:= (se-bfi)/ni;
zeta:= ((0.006739497*Power(a,2))/2)*Power(COS(fi),2);
xi:= a*(1-(zeta/3));
eta:= b*(1-zeta)+fi;
sxi:= (EXP(xi)-EXP(-xi))/2;
delta:= arcTAN(sxi/COS(eta));
sd:= +(delta/PI)*180+mc;
tau:= ARCTAN(COS(delta)*TAN(eta));
radiantes:= fi+(1+0.006739497*Power(COS(fi),2)-(3/2)*0.006739497*sin(fi)*COS(fi)*(tau-fi))*(tau-fi);
sexas:= +(radiantes/PI)*180;

utmtogeo:= floattostr(sexas)+'&'+floattostr(sd);
end;