加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLSERVER 根据经纬度计算距离差

发布时间:2020-12-12 14:08:01 所属栏目:MsSql教程 来源:网络整理
导读:SQL SERVER 根据地图经纬度计算距离的公式 go --创建经纬度距离计算函数 ?CREATEFUNCTION [dbo].[fnGetDistance]? ?--LatBegin?开始经度 ?--LngBegin?开始维度 (@LatBegin REAL,@LngBegin REAL,@LatEnd REAL,@LngEnd REAL)? ???????RETURNSFLOAT ???????AS B


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的单位为:千米

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读