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

SQL SERVER 根据地图经纬度计算距离函数

发布时间:2020-12-30 18:18:51 所属栏目:编程 来源:网络整理
导读:本日PHP站长网 52php.cn把网络自互联网的代码分享给各人,仅供参考。 --计较地球上两个坐标点(经度,纬度)之间间隔sql函数 --作者:lordbaby --清算:www.aspbc.com CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin R

以下代码由PHP站长网 52php.cn网络自互联网

此刻PHP站长网小编把它分享给各人,仅供参考

    --计较地球上两个坐标点(经度,纬度)之间间隔sql函数  
    --作者:lordbaby  
    --清算:www.aspbc.com   
    CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL,@LngBegin REAL,@LatEnd REAL,@LngEnd REAL) RETURNS FLOAT  
      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  

    --跟坐标间隔小于5公里的数据  
    SELECT * FROM 商家表名 WHERE dbo.fnGetDistance(121.4625,31.220937,longitude,latitude) < 5  

这里的longitude,latitude别离是旅馆的经度和纬度字段,而121.4625,31.220937是手机获得的当前客户地址的经度,后头的5暗示5公里范畴之内。

以上内容由PHP站长网【52php.cn】网络清算供各人参考研究

假如以上内容对您有辅佐,接待保藏、点赞、保举、分享。

(编辑:湖南网)

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

    热点阅读