T-SQL 计算2个经纬度之间的距离

-- =============================================
-- Author:		Lee
-- Create date: 2013-4-4
-- Description:	计算2个经纬度之间的距离(单位千米)
-- =============================================
ALTER FUNCTION [dbo].[GetDistance]
( 
	@LngBegin REAL,	--经度1
	@LatBegin REAL,	--纬度1
	@LngEnd REAL,   --经度2
	@LatEnd REAL	--纬度2
) 
RETURNS FLOAT
       AS
BEGIN
       --距离(千米)  www.2cto.com  
       DECLARE @Distance      REAL
       DECLARE @EARTH_RADIUS  REAL
       SET @EARTH_RADIUS = 6378.137 
       
       DECLARE @RadLatBegin  REAL,
               @RadLatEnd    REAL,
               @RadLatDiff   REAL,
               @RadLngDiff   REAL
       
       SET @RadLatBegin = @LatBegin *PI()/ 180.0 
       SET @RadLatEnd = @LatEnd *PI()/ 180.0 
       SET @RadLatDiff = @RadLatBegin - @RadLatEnd 
       SET @RadLngDiff = @LngBegin *PI()/ 180.0 - @LngEnd *PI()/ 180.0 
       
       SET @Distance = 2 *ASIN(
               SQRT(
                   POWER(SIN(@RadLatDiff / 2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd) 
                   *POWER(SIN(@RadLngDiff / 2), 2)
               )
           )
       
       SET @Distance = @Distance * @EARTH_RADIUS 
       --SET @Distance = Round(@Distance * 10000) / 10000 
       
       RETURN @Distance
END

 

posted on 2013-04-04 17:06  woshilee  阅读(256)  评论(0)    收藏  举报

导航