<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<!-- ::: ::: -->
<!-- ::: 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.