Distance between two gps coordinates?
private static double Radians(double x)
{
return x * Math.PI / 180d;
}
public static DistanceContainer DistanceBetweenPlaces(decimal lat1, decimal lon1, decimal lat2, decimal lon2)
{
return DistanceBetweenPlaces((double)lat1, (double)lon1, (double)lat2, (double)lon2);
}
public static DistanceContainer DistanceBetweenPlaces(double lat1, double lon1, double lat2, double lon2)
{
double dlat = Radians(lat2 - lat1);
double dlon = Radians(lon2 - lon1);
lat1 = Radians(lat1);
lat2 = Radians(lat2);
var a = Math.Sin(dlat / 2d) * Math.Sin(dlat / 2d)
+ Math.Sin(dlon / 2d) * Math.Sin(dlon / 2d) * Math.Cos(lat1) * Math.Cos(lat2);
var c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1d - a));
return new DistanceContainer(c);
}
Comments
Post a Comment