Home Code Calculate distance between two points (Latitude / Longitude)

# Calculate distance between two points (Latitude / Longitude)

1780
0 This is a useful script for calculating the distance between two points using their coordinates.

Very useful as part of a Lookup function.  I can see many applications for this code.

Note: read the notes in the code carefully so you implement it correctly the first time.  Original code location: here

The code below isn’t perfect by the way.  Check out this page if you want to know more about the math and special cases for calculating distance.

What’s that you say? You need a coordinates database? This one is pretty good: http://download.geonames.org/export/zip/

Here is a site with an ASP function for pulling coordinates via a client browser’s IP address: http://forum.ipinfodb.com/viewtopic.php?f=7&t=269

<%

‘  This routine calculates the distance between two points
‘ (given the  latitude/longitude of those points). It is being
‘used to calculate  distance between two ZIP Codes or Postal
‘Codes using our    ZIPCodeWorld(TM) and PostalCodeWorld(TM)
‘ products.
‘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
”United States ZIP Code/ Canadian Postal Code databases with
‘latitude & longitude are available at
‘http//www.zipcodeworld.com

‘Official Web site http//www.zipcodeworld.com

const pi = 3.14159265358979323846

Function distance(lat1, lon1, lat2, lon2, unit)
Dim theta, dist
theta = lon1 – lon2
dist = acos(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 Function

‘  This function get the arccos function from arctan function

acos = pi
End If
End function

‘  This function converts decimal degrees to radians

deg2rad = cdbl(Deg * pi / 180)
End Function

‘  This function converts radians to decimal degrees