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

百度GIS 算距离函数 SqlServer上扒的

发布时间:2020-12-12 13:48:52 所属栏目:MsSql教程 来源:网络整理
导读:ALTER FUNCTION [dbo].[fnGetDistanceBaidu](@LatBegin REAL,@LngBegin REAL,@LatEnd REAL,@LngEnd REAL) RETURNS FLOAT ASBEGIN--距离(米) DECLARE @Distance FLOAT DECLARE @b INT SET @b = -180 DECLARE @c INT SET @c = 180 DECLARE @d INT SET @d = -74
ALTER FUNCTION [dbo].[fnGetDistanceBaidu](@LatBegin REAL,@LngBegin REAL,@LatEnd REAL,@LngEnd REAL) RETURNS FLOAT
  AS
BEGIN
--距离(米)
  DECLARE @Distance FLOAT
  DECLARE @b INT SET @b = -180
  DECLARE @c INT SET @c = 180
  DECLARE @d INT SET @d = -74
  DECLARE @e INT SET @e = 74
  DECLARE @X_PI REAL SET @X_PI = 3.14159265358979323846
  if(@LngBegin > @c)
  begin
  set @LngBegin = @LngBegin-(@c - @b)
  end
  if(@LngBegin < @b)
  begin 
  set @LngBegin = @LngBegin+(@c - @b)
  end

  if(@LngEnd > @c)
  begin
  set @LngEnd = @LngEnd-(@c - @b)
  end
  if(@LngEnd < @b)
  begin 
  set @LngEnd = @LngEnd+(@c - @b)
  end
  
  if(@LatBegin < @d)
  begin
  set @LatBegin = @d
  end
  if(@LatBegin > @e)
  begin 
  set @LatBegin = @e
  end
  
  if(@LatEnd < @d)
  begin
  set @LatEnd = @d
  end
  if(@LatEnd > @e)
  begin 
  set @LatEnd = @e
  end
  
  DECLARE @aX REAL SET @aX = @X_PI*@LngBegin/180
  DECLARE @aY REAL SET @aY = @X_PI*@LatBegin/180
  DECLARE @bX REAL SET @bX = @X_PI*@LngEnd/180
  DECLARE @bY REAL SET @bY = @X_PI*@LatEnd/180
  
  set @Distance = 6370996.81*ACOS(SIN(@aY)*SIN(@bY)+ COS(@aY) * COS(@bY) * COS(@bX - @aX))
  RETURN @Distance
END

(编辑:李大同)

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

    推荐文章
      热点阅读