Sql Server 两个经纬度,计算距离

--计算弧度角
Create function [dbo].[FnRad](@d float)

returns float
as
begin
declare @rad float
set @rad=@d*PI()/180.0
return @rad
end

 

--通过两个经纬度,计算距离,返回以千米为单位
Create function [dbo].[FnNear](
@lat1 float,--用户当前纬度
@lng1 float,--用户当前经度
@lat2 float,--目标纬度
@lng2 float)--目标经度
returns float
as
begin
declare @EARTH_RADIUS float--地球半径
set @EARTH_RADIUS=6378.137

declare @radLat1 float
set @radLat1=dbo.FnRad(@lat1)

declare @radLat2 float
set @radLat2=dbo.FnRad(@lat2)

declare @a float
set @a=@radLat1-@radLat2

declare @b float
set @b=dbo.FnRad(@lng1)-dbo.FnRad(@lng2)

declare @far float
set @far=2*ASIN(SQRT(POWER(SIN(@a/2),2)+COS(@radLat1)*COS(@radLat2)*POWER(SIN(@b/2),2)))
set @far=@far* @EARTH_RADIUS
set @far=ROUND(@far*10000,0)/10000
return @far
end

 

转载于:https://www.cnblogs.com/Lance-Lan/p/3287930.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值