/// <summary> /// Calcule la distance entre 2 coordonées géographique /// </summary> /// <param name="latitude1">Latitude du point 1</param> /// <param name="longitude1">Longitude du point 1</param> /// <param name="latitude2">Latitude du point 2</param> /// <param name="longitude2">Longitude du point 2</param> /// <param name="units">Unité de conversion de retrour</param> /// <returns>Distance</returns> public static double distanceBetweenTwoGeoCodes(double latitude1, double longitude1, double latitude2, double longitude2, GeoMetrics units) { double distance = rad2deg(Math.Acos(Math.Sin(deg2rad(latitude1)) * Math.Sin(deg2rad(latitude2)) + Math.Cos(deg2rad(latitude1)) * Math.Cos(deg2rad(latitude2)) * Math.Cos(deg2rad(longitude1 - longitude2)))); distance = distance * 60 * 1.1515; switch(units) { case GeoMetrics.kilometers: return (distance * 1.609344); case GeoMetrics.nautical_miles: return (distance * 0.8684); default: return distance; } }
/// <summary> /// Calcule la distance entre 2 coordonées géographique /// </summary> /// <param name="latitude1">Latitude du point 1</param> /// <param name="longitude1">Longitude du point 1</param> /// <param name="latitude2">Latitude du point 2</param> /// <param name="longitude2">Longitude du point 2</param> /// <param name="units">Unité de conversion de retrour</param> /// <returns>Distance</returns> public static double distanceBetweenTwoGeoCodes(double latitude1, double longitude1, double latitude2, double longitude2, GeoMetrics units) { double distance = rad2deg(Math.Acos(Math.Sin(deg2rad(latitude1)) * Math.Sin(deg2rad(latitude2)) + Math.Cos(deg2rad(latitude1)) * Math.Cos(deg2rad(latitude2)) * Math.Cos(deg2rad(longitude1 - longitude2)))); distance = distance * 60 * 1.1515; switch (units) { case GeoMetrics.kilometers: return(distance * 1.609344); case GeoMetrics.nautical_miles: return(distance * 0.8684); default: return(distance); } }