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 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名