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的单位为:千米
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|