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