Foro XOne
Solucionado Calculo de distancias entre coordenadas GPS - Versión para impresión

+- Foro XOne (http://www.xoneisp.com/foro)
+-- Foro: Foro Técnico (/forumdisplay.php?fid=6)
+--- Foro: Programación (/forumdisplay.php?fid=7)
+--- Tema: Solucionado Calculo de distancias entre coordenadas GPS (/showthread.php?tid=294)



Calculo de distancias entre coordenadas GPS - Cardama - 20-07-2012 08:34 AM

Tengo una funcion que en teoria calcula la distancia entre dos coordenadas GPS, es la siguiente:
Function Metros (lat1,long1,lat2,long2)
'Funcion que devuelve la distancia en metros entre dos posiciones GPS
dim x1,y1,x2,y2,DAVLAT,DAVLON
E18=6378.3888
E19=297
E14=749.671
E20=1/E19
E21=(2*E20)-(E20*E20)
' Posicion 1
DAVLAT=(Cdbl(lat1)/180)*3.1416
DAVLON=(Cdbl(long1)/180)*3.1416
E22=E18/(sqr(1-(E21*Sin(DAVLAT)*Sin(DAVLAT))))
x1=(E22+E14)*Cos(DAVLAT)*Cos(DAVLON)
y1=(E22+E14)*Cos(DAVLAT)*Sin(DAVLON)
' Posicion 2
DAVLAT=(Cdbl(lat2)/180)*3.1416
DAVLON=(Cdbl(long2)/180)*3.1416
E22=E18/(sqr(1-(E21*Sin(DAVLAT)*Sin(DAVLAT))))
x2=(E22+E14)*Cos(DAVLAT)*Cos(DAVLON)
y2=(E22+E14)*Cos(DAVLAT)*Sin(DAVLON)
Metros=sqr(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)))
End Function

dando los siguientes valores:
1 punto: latitud 43,25748 longitud: -8,25241
2 punto: latitud 43,26365 longitud: -8,24959

devuelve: 1930,009398
no sé si son metros o kilometros, para kilometros me parece excesivo porque la lectura entre los dos puntos fue en un periodo de 1 minuto y si son metros me parece muy rapido el desplazamiento.


RE: Calculo de distancias entre coordenadas GPS - David - 20-07-2012 09:45 AM

Intenta esta fómula, que me da mejores resultados:


Código XOne:
Distancia 6371 ACOS(COS(Lat1) * COS(Lat2) * COS(Long2 Long1) + SIN(Lat1) * SIN(Lat2)) 

Siendo:

Código XOne:
Lat1=(LATITUD1*3.141592654)/180
Lat2
=(LATITUD2*3.141592654)/180

Long1
=(LONGITUD1*3.141592654)/180
Long2
=(LONGITUD2*3.141592654)/180 


El resultado lo da en kilometros, y SIEMPRE es la distancia en línea recta entre los 2 puntos.

Saludos


RE: Calculo de distancias entre coordenadas GPS - David - 24-07-2012 12:11 PM

Me comenta el compañero Cardama que en VBScript no existe el ACOS, así que vamos a usar el ATN, que sí existe.

El Script quedaría de la siguiente forma, lo dejo en forma de función para usarlo directamente en cualquier funciones.vbs:


Código XOne:
Function DistanciaEnKM(latitud1,longitud1,latitud2,longitud2)

dim PI,lat1,lat2,long1,long2,val

PI
=4*ATN(1)

lat1=(latitud1*PI)/180
lat2
=(latitud2*PI)/180

long1
=(longitud1*PI)/180
long2
=(longitud2*PI)/180 

val 
COS(lat1) * COS(lat2) * COS(long2 long1) + SIN(lat1) * SIN(lat2)

DistanciaEnKM 6371 * (PI - (ATN(val / (Sqr(- (val val))))))

End Function 


Saludos