Uploaded by Oscar Valdez

CALCULAR DISTANCIA ENTRE 2 COORDENADAS

advertisement
CALCULAR DISTANCIA ENTRE 2 COORDENADAS
La fórmula Haversine se usa para calcular la distancia. La fórmula Haversine cuenta para la
curvatura de la tierra, pero supone una tierra esférica en lugar de un elipsoide. Para largas
distancias, la fórmula Haversine introduce un error inferior al 0,1 por ciento.
La altitud no se utiliza para calcular la distancia.
1.- Método 1: javascript
Esto usa la fórmula 'haversine' para calcular la distancia del círculo máximo entre dos puntos, es
decir, la distancia más corta sobre la superficie de la tierra, dando una distancia en línea recta
entre los puntos
var
var
var
var
lat1
lon1
lat2
lon2
const
const
const
const
φ1
φ2
Δφ
Δλ
=
=
=
=
-17.784092733733377;
-63.172350311790964;
-17.785518788230085;
-63.1888422332491;
=
=
=
=
lat1 * Math.PI / 180; // φ, λ in radians
lat2 * Math.PI / 180;
(lat2 - lat1) * Math.PI / 180;
(lon2 - lon1) * Math.PI / 180;
const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const d = R * c; // in metres
distancia  1753.36 m  1.753 km
2. Método 2: mediante c#
public const double EarthRadius = 6371;
double distance = 0;
double Lat = (point2.Latitude - point1.Latitude) * (Math.PI / 180);
double Lon = (point2.Longitude - point1.Longitude) * (Math.PI / 180);
double a = Math.Sin(Lat / 2) * Math.Sin(Lat / 2) + Math.Cos(point1.Latitude
* (Math.PI / 180)) * Math.Cos(point2.Latitude * (Math.PI / 180)) * Math.Sin(Lon / 2)
* Math.Sin(Lon / 2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
distance = EarthRadius * c;
return distance;
distancia 1.753 km
3. Método 3: mediante la clase GeoCoordinate c#
double lat1 = -17.784092733733377;
double lon1 = -63.172350311790964;
double lat2 = -17.785518788230085;
double lon2 = -63.1888422332491;
GeoCoordinate c1 = new GeoCoordinate(lat1, lon1);
GeoCoordinate c2 = new GeoCoordinate(lat2, lon2);
double distancia = c1.GetDistanceTo(c2);
distancia  1754.87 m
Download