-- -- 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 -- -- Calculate distance between two points lat1,lon1 and lat2,lon2 -- Uses radius of earth in kilometers or miles as an argurments -- -- Typical radius: 3963.0 (miles) (Default if no value specified) -- 6387.7 (km) -- -- Note: NVL function is used on all variables to replace NULL values with 0 (zero). -- -- For enquiries, please contact sales@geodatasource.com -- Official Web site: https://www.geodatasource.com -- -- Thanks to Bill Dykstra for contributing the source code. -- -- GeoDataSource.com (C) All Rights Reserved 2022 -- CREATE OR REPLACE FUNCTION distance (Lat1 IN NUMBER, Lon1 IN NUMBER, Lat2 IN NUMBER, Lon2 IN NUMBER, Radius IN NUMBER DEFAULT 3963) RETURN NUMBER IS -- Convert degrees to radians DegToRad NUMBER := 57.29577951; BEGIN RETURN(NVL(Radius,0) * ACOS((sin(NVL(Lat1,0) / DegToRad) * SIN(NVL(Lat2,0) / DegToRad)) + (COS(NVL(Lat1,0) / DegToRad) * COS(NVL(Lat2,0) / DegToRad) * COS(NVL(Lon2,0) / DegToRad - NVL(Lon1,0)/ DegToRad)))); END; . RUN
The sample code is licensed under LGPLv3.