weixin_40729743 2017-11-24 09:35 采纳率: 50%
浏览 1484
已采纳

SQLSERVER函数,算两个经纬度间的距离

SQLSERVER函数,算两个经纬度间的距离

CREATE FUNCTION getDistatce (@relat double,@p_lat double,@relng double,@p_lng double)
returns double
AS
BEGIN
DECLARE R double,distance double,dLat double,dLon double,a double;

SET R = 6371.0,distance = 0.0,dLat = (@relat - @p_lat)*PI() /180,dLon = (@relng - @p_lng)*PI() /180;
SET a = SIN(dLat/2)*SIN(dLat/2) + COS(@p_lat*PI()/180) *COS(@relat*PI()/180) *sin(dLon/2)*SIN(dLon/2);

SET distance = floor((2*ATAN(SQRT(a),SQRT(1-a)))*R*1000);

RETURN distance;
END
GO

这段函数是出错的 ,求大神修正或重新写一个函数
感谢各位

  • 写回答

3条回答 默认 最新

  • threenewbee 2017-11-24 15:18
    关注
     CREATE FUNCTION [f_GetDistance]  
    (   
    @GPSLng DECIMAL(12,6),  
    @GPSLat DECIMAL(12,6),  
    @Lng  DECIMAL(12,6),  
    @Lat DECIMAL(12,6)  
    )  
    RETURNS DECIMAL(12,4)  
    AS  
    BEGIN  
       DECLARE @result DECIMAL(12,4)  
       SELECT @result = 6378137.0*ACOS(SIN(@GPSLat/180*PI())*SIN(@Lat/180*PI())+COS(@GPSLat/180*PI())*COS(@Lat/180*PI())*COS((@GPSLng-@Lng)/180*PI()))  
       RETURN @result  
    END  
    GO 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题