Quiero compartir una rutina de calculo de distanacias con datos del GPS, pueda que le sirva alguien por ahi.. ami me trabaja de maravillas con mis sistemas.
function CalculaDistancias()
// esta vatiables son recogidas de la string GPRMC
Latitud1 := ALLTRIM(STR(Op:GPGGA_cLat))
Longitud1 :="-"+ALLTRIM(STR(Op:GPGGA_cLong))
// dos datos de prueba
Latitud2:="10.203574"
Longitud2:="-83.782274"
try
oP:GpSDistancia := oCon:Query("SELECT (acos(sin(radians('"+Latitud1+"')) * sin(radians('"+Latitud2+"')) + cos(radians('"+Latitud1+"')) * cos(radians('"+Latitud2+"')) *
cos(radians('"+Longitud1+"') - radians('"+Longitud2+"'))) * 6378) as distanciaPunto1Punto2")
CATCH oError
MsgStop( "No se ha podido calcular la distancia error en datos ")
RETURN
END
oP:GpSDistancia :REFRESH()
Op:GpSresultado := oP:GpSDistancia :FieldGet(1)
Alert(Op:GpSresultado )
Return
*********************************************************************************
Veamos la soluciónd e una manera más limpia:
Radio de la Tierra: 6378 km.
PUNTO 1 PUNTO 2
latitud LATITUD_1 LATITUD_2
longitud LONGITUD_1 LONGITUD_2
SELECT (acos(sin(radians(LATITUD_1)) * sin(radians(LATITUD_2)) +
cos(radians(LATITUD_1)) * cos(radians(LATITUD_2)) *
cos(radians(LONGITUD_1) - radians(LONGITUD_2))) * 6378) as
distanciaPunto1Punto2;
*******************************************************************************
S.I.T.U.
Sistemas Inteligentes de transporte urbano
http://www.situcr.com
oscarchacon@Situcr.com
Desarrollos BA4/B4j androide
