<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <!-- ::: ::: --> <!-- ::: 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 using GeoDataSource (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) ::: --> <!-- ::: ::: --> <!-- ::: Worldwide cities and other features databases with latitude longitude ::: --> <!-- ::: are available at https://www.geodatasource.com ::: --> <!-- ::: ::: --> <!-- ::: For enquiries, please contact sales@geodatasource.com ::: --> <!-- ::: ::: --> <!-- ::: Official Web site: https://www.geodatasource.com ::: --> <!-- ::: ::: --> <!-- ::: GeoDataSource.com (C) All Rights Reserved 2022 ::: --> <!-- ::: ::: --> <!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <cfscript> function distance(lat1, lon1, lat2, lon2, unit) { if ((lat1 == lat2) && (lon1 == lon2)) { return 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; if (unit == "K") { distance = distance * 1.609344; } elseif (unit == "N") { distance = distance * 0.8684; } return distance; } } function deg2rad(deg) { return (deg * pi() / 180); } function rad2deg(rad) { return (rad * 180 / pi()); } WriteOutput(distance(32.9697, -96.80322, 29.46786, -98.53506, "K") & " Kilometers"); </cfscript>
The sample code is licensed under LGPLv3.