Calculating the Distance between 2 places by using Latitudes and Longitudes in DoTNet
Hello guys,
As mentioned in the title we will Discuss how to get the Distance between 2 Locations.
We will do it as a function that can be accessible and peaceable in any class.
Let's define a function with two inputs firstly,
private double HaversineDistance(string loc1str,string loc2str) { //code }
as the input is the string we have to convert that string into a double by using the below,
string[] loc1 = loc1str.Split(", "); string[] loc2 = loc2str.Split(", ");
By Using Math we will get the exact distance. (it may be 0.03meter different)
The function and action goes below,
private double HaversineDistance(string loc1str,string loc2str) { NumberFormatInfo provider = new NumberFormatInfo(); provider.NumberDecimalSeparator = "."; // string loc1str="17.353407649759806, 78.53191718216988"; string[] loc1 = loc1str.Split(", "); // string loc2str="17.34453519500451, 78.53211168200997"; string[] loc2 = loc2str.Split(", "); double dDistance = Double.MinValue; // converting into double. double dLat1InRad = Convert.ToDouble(loc1[0], provider) * (Math.PI / 180.0); double dLong1InRad = Convert.ToDouble(loc1[1], provider) * (Math.PI / 180.0); double dLat2InRad = Convert.ToDouble(loc2[0], provider) * (Math.PI / 180.0); double dLong2InRad = Convert.ToDouble(loc2[1], provider) * (Math.PI / 180.0); // calculating the rad. double dLongitude = dLong2InRad - dLong1InRad; double dLatitude = dLat2InRad - dLat1InRad; // Intermediate result a. double a = Math.Pow(Math.Sin(dLatitude / 2.0), 2.0) + Math.Cos(dLat1InRad) * Math.Cos(dLat2InRad) * Math.Pow(Math.Sin(dLongitude / 2.0), 2.0); // Intermediate result c (great circle distance in Radians). double c = 2.0 * Math.Asin(Math.Sqrt(a)); // Distance. // const Double kEarthRadiusMiles = 3956.0; const Double kEarthRadiusKms = 6376.5; dDistance = kEarthRadiusKms * c; return dDistance; } Output: 0.98
Thank You...