Thursday, September 20, 2012

How to find distance between two locations, using latitude and longitude in asp.net with c#

I am posting here how to calculate distance between two location. For this you have to need Latitude and Longitude for both of locations. Than you have to just call my function as like :-

Console.WriteLine(distance(32.9697, -96.80322, 29.46786, -98.53506, "M"));
Console.WriteLine(distance(32.9697, -96.80322, 29.46786, -98.53506, "K"));
Console.WriteLine(distance(32.9697, -96.80322, 29.46786, -98.53506, "N"));

Use 'M' for Mile, 'K' for kilometer in unit parameter.

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//::  This function calculating the distace between 2 location      :::
//::  Author : Sandeep Kumar Tawaniya                               :::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
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);
}

No comments:

Post a Comment