How to calculate the distance between 2 locations using .NET

In this tutorial, we will show you how to calculate the distance between two locations geolocated by using latitude and longitude in .NET. This distance calculation uses the Spherical Law of Cosines, which uses trigonometry to measure the curvature of the earth, to accurately measure the distances on the Earth.

<%
const pi = 3.14159265358979323846

Function distance(lat1, lon1, lat2, lon2, unit)
  Dim theta, dist
  If lat1 = lat2 And lon1 = lon2 Then
    distance = 0
  Else
    theta = lon1 - lon2
    dist = sin(deg2rad(lat1)) * sin(deg2rad(lat2)) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(deg2rad(theta))
    dist = acos(dist)
    dist = rad2deg(dist)
    distance = dist * 60 * 1.1515
    Select Case ucase(unit)
      Case "K"
        distance = distance * 1.609344
      Case "N"
        distance = distance * 0.8684
    End Select
  End If
End Function


'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
':::  This function get the arccos function from arctan function    :::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Function acos(rad)
  If Abs(rad) <> 1 Then
    acos = pi/2 - Atn(rad / Sqr(1 - rad * rad))
  ElseIf rad = -1 Then
    acos = pi
  End If
End function


'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
':::  This function converts decimal degrees to radians             :::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Function deg2rad(Deg)
  deg2rad = cdbl(Deg * pi / 180)
End Function

'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
':::  This function converts radians to decimal degrees             :::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Function rad2deg(Rad)
  rad2deg = cdbl(Rad * 180 / pi)
End Function

response.write distance(32.9697, -96.80322, 29.46786, -98.53506, "M") & " Miles<br>"
response.write distance(32.9697, -96.80322, 29.46786, -98.53506, "K") & " Kilometers<br>"
response.write distance(32.9697, -96.80322, 29.46786, -98.53506, "N") & " Nautical Miles<br>"
%>

The code above creates the function named distance to calculate the distance between two locations. It implies the simple spherical law of cosines that gives well-conditioned results down to distances as small as a few meters on the Earth’s surface. The distance function makes use of the spherical law of cosines formula cos c = cos a cos b + sin a sin b cos C and derived into the distance calculation.

Parameters that are passed to the distance function are:
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 the statute miles (default), ‘K’ is kilometers and ‘N’ is nautical miles

Was this article helpful?

Related Articles