×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: T-SQL
Posted by: Loren Richter
Added: Jul 22, 2013 4:50 PM
Views: 23
Tags: no tags
  1. Create Function [dbo].[fnGetDistance]
  2. (
  3.       @Lat1 Float(18),  
  4.       @Long1 Float(18),
  5.       @Lat2 Float(18),
  6.       @Long2 Float(18),
  7.       @ReturnType VarChar(10)
  8. )
  9. Returns Float(18)
  10. AS
  11. Begin
  12.       Declare @R Float(8);
  13.       Declare @dLat Float(18);
  14.       Declare @dLon Float(18);
  15.       Declare @a Float(18);
  16.       Declare @c Float(18);
  17.       Declare @d Float(18);
  18.       Set @R =  
  19.             Case @ReturnType  
  20.             When 'Miles' Then 3956.55  
  21.             When 'Kilometers' Then 6367.45
  22.             When 'Feet' Then 20890584
  23.             When 'Meters' Then 6367450
  24.             Else 20890584 -- Default feet (Garmin rel elev)
  25.             End
  26.       Set @dLat = Radians(@lat2 - @lat1);
  27.       Set @dLon = Radians(@long2 - @long1);
  28.       Set @a = Sin(@dLat / 2)  
  29.                  * Sin(@dLat / 2)  
  30.                  + Cos(Radians(@lat1))
  31.                  * Cos(Radians(@lat2))  
  32.                  * Sin(@dLon / 2)  
  33.                  * Sin(@dLon / 2);
  34.       Set @c = 2 * Asin(Min(Sqrt(@a)));
  35.  
  36.       Set @d = @R * @c;
  37.       Return @d;
  38.  
  39. End