TSQL 根据经纬度计算两点间的距离;返回米(m)

本文介绍了一个SQL函数,用于根据两点的经纬度计算它们之间的地理距离,并返回以米为单位的距离值。该函数考虑了地球曲率,使用了复杂的数学公式进行精确计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- =============================================
-- Author:Forrest
-- Create date: 2013-07-16
-- Description:    根据经纬度计算两点间的距离;返回米(m)
-- =============================================
ALTER FUNCTION [dbo].[Fun_MathRange] 
(
    @in_Lat1 decimal(18,6),
    @in_Lng1 decimal(18,6),
    @in_Lat2 decimal(18,6),
    @in_Lng2 decimal(18,6)
)
RETURNS int
AS
BEGIN
    set @in_Lat1 = @in_Lat1 * PI() / 180.0;
    set @in_Lat2 = @in_Lat2 * PI() / 180.0;
    set @in_Lng1 = @in_Lng1 * PI() / 180.0;
    set @in_Lng2 = @in_Lng2 * PI() / 180.0;
    declare @a decimal(18,6),@b decimal(18,6),@c decimal(18,6)
    set @a = @in_Lat1 - @in_Lat2;
    set @b = @in_Lng1 - @in_Lng2;
    set @c = 2 * Asin(Sqrt(Power(Sin(@a/2),2) + Cos(@in_Lat1)*Cos(@in_Lat2)*Power(Sin(@b/2),2)))
    set @c = @c * 6378.137 --地球半径,单位:千米
    set @c = Round(@c * 10000,3) / 10000
    set @c = @c*1000
    return @c
END

 

转载于:https://www.cnblogs.com/wuxinjian/p/3192885.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值