This routine calculates the distance between two points (given the latitude/longitude of those points). It is being used to calculate the distance between two locations.
Definitions
South latitudes are negative, east longitudes are positive
Passed to function
lat1, lon1 = Latitude and Longitude of point 1 (in decimal degrees)
lat2, lon2 = Latitude and Longitude of point 2 (in decimal degrees)
unit = the unit you desire for results
where 'M' is statute miles (default)
'K' is kilometers
'N' is nautical miles
using System;
private double distance(double lat1, double lon1, double lat2, double lon2, char unit) {
double theta = lon1 - lon2;
double dist = Math.Sin(deg2rad(lat1)) * Math.Sin(deg2rad(lat2)) + Math.Cos(deg2rad(lat1)) * Math.Cos(deg2rad(lat2)) * Math.Cos(deg2rad(theta));
dist = Math.Acos(dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
if (unit == 'K') {
dist = dist * 1.609344;
} else if (unit == 'N') {
dist = dist * 0.8684;
}
return (dist);
}
//This function converts decimal degrees to radians
private double deg2rad(double deg) {
return (deg * Math.PI / 180.0);
}
//This function converts radians to decimal degrees
private double rad2deg(double rad) {
return (rad / Math.PI * 180.0);
}
Console.WriteLine(distance(25.0814609,55.1258294,25.0445529,55.1181078, "M"));
Console.WriteLine(distance(25.0814609,55.1258294,25.0445529,55.1181078, "K"));
Console.WriteLine(distance(25.0814609,55.1258294,25.0445529,55.1181078, "N"));
No comments:
Post a Comment