当前位置: 代码迷 >> SQL >> SQLSERVER 依据经纬度计算距离差
  详细解决方案

SQLSERVER 依据经纬度计算距离差

热度:31   发布时间:2016-05-05 12:23:37.0
SQLSERVER 根据经纬度计算距离差


SQL SERVER 根据地图经纬度计算距离的公式

go

--创建经纬度距离计算函数

 CREATEFUNCTION [dbo].[fnGetDistance] 

 --LatBegin 开始经度

 --LngBegin 开始维度

(@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) 

       RETURNSFLOAT

       AS

BEGIN

       --距离(千米)

       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

 

@Distance的单位为:千米


1楼wwwwenhuan3天前 08:33
SQL SERVER创建函数,学习了
  相关解决方案