sql server 根据经纬度求任意两点的距离

根据经纬度求任意两点距离是上课的时候老师布置的作业
写一下自己在看了网上的代码后改的代码叭
计算方法是看的百度
运行的测试结果和在网上看到的其他代码相同,所以程序应该是没有问题的

CREATE FUNCTION dbo.getEarthDistance
--Lat为纬度,Lng为经度,AB为任意两点
(@LatA REAL, @LngA REAL, @LatB REAL, @LngB REAL)
RETURNS FLOAT
  AS
BEGIN
  --所求距离(千米)
  DECLARE @Distance REAL
  --地球半径
  DECLARE @EARTH_RADIUS REAL
  SET @EARTH_RADIUS = 6378.137 
  DECLARE @RadLatA REAL,@RadLatB REAL,@RadLngAB REAL,@RadAB REAL
  SET @RadLatA = @LatA *PI()/180.0 
  SET @RadLatB = @LatB *PI()/180.0
  SET @RadLngAB = ABS(@LngA - @LngB)*PI()/180.0
  SET @RadAB = ACOS(SIN(@RadLatA)*SIN(@RadLatB)+COS(@RadLatA)*COS(@RadLatB)*COS(@RadLngAB))   
  SET @Distance = @EARTH_RADIUS*@RadAB 
  RETURN @Distance
END

引用的话就是在sql里新建一个查询

SELECT dbo.getEarthDistance(116.32793,39.94607,121.42575,31.24063) AS 两点的距离

第一次的记录写完啦,嘻嘻嘻
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值