Data Browser - Viewing Site  Sector 23 Code Bank Logged in as:  Guest  




           


SQL - distance between two coordinates
Haversine Formula in SQL (as approximate Miles between coordinates) - note the cast to decimal(8,5) and then back to real is required or you get math errors using trigonometric functions on high-precision reals.

-- =============================================
CREATE FUNCTION [dbo].[udf_DistanceByHaversine]
(
@FromLat decimal(8,5)
,@FromLon decimal(8,5)
,@ToLat decimal(8,5)
,@ToLon decimal(8,5)
-- can not use real or float; causes rounding errors leading to
-- exception at acos(1.000...01)


)
RETURNS real AS
BEGIN

RETURN
( 3960 * acos( cos( radians( @FromLat ) ) *
cos( radians( @ToLat ) ) * cos( radians( @ToLon ) - radians( @FromLon ) ) +
sin( radians( @FromLat ) ) * sin( radians( @ToLat ) ) ) )


END


GO

Created By: amos 4/2/2015 5:12:05 PM
Updated: 4/2/2015 5:12:51 PM