侧边栏壁纸
  • 累计撰写 100 篇文章
  • 累计创建 55 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Mysql 计算两点之间的距离

Malson
2022-06-25 / 0 评论 / 0 点赞 / 77 阅读 / 220 字

百度

CREATE FUNCTION [dbo].[ToDistance]
(
    @Lng1 FLOAT,
    @Lat1 FLOAT,
    @Lng2 FLOAT,
    @Lat2 FLOAT
)
RETURNS FLOAT
AS
BEGIN
    -- Declare the return variable here
    DECLARE
        @Distance FLOAT

    SET @Lng1 = PI() * @Lng1 / 180
    SET @Lat1 = PI() * @Lat1 / 180
    SET @Lng2 = PI() * @Lng2 / 180
    SET @Lat2 = PI() * @Lat2 / 180

    -- Add the T-SQL statements to compute the return value here
    SET @Distance = 6370996.81 * ACOS((SIN(@Lat1) * SIN(@Lat2) + COS(@Lat1) * COS(@Lat2) * COS(@Lng2 - @Lng1))) / 1000

    -- Return the result of the function
    RETURN @Distance

END

高德

CREATE FUNCTION [dbo].[ToDistance]
(
    -- Add the parameters for the function here
    @Lng1 FLOAT,@Lat1 FLOAT,@Lng2 FLOAT,@Lat2 FLOAT
)
RETURNS FLOAT
AS
BEGIN
    -- Declare the return variable here
    DECLARE
        @Distance FLOAT,
        @Sin FLOAT,
        @SIN2 FLOAT,
        @SIN3 FLOAT,
        @SIN4 FLOAT

    SET @Lng1 = PI() * @Lng1 / 180
    SET @Lat1 = PI() * @Lat1 / 180
    SET @Lng2 = PI() * @Lng2 / 180
    SET @Lat2 = PI() * @Lat2 / 180

    SET @Sin = Sin(@Lng1);
    SET @Sin2 = Sin(@Lat1);
    SET @Sin3 = Sin(@Lng2);
    SET @Sin4 = Sin(@Lat2);

    SET @Lng1 = Cos(@Lng1);
    SET @Lat1 = Cos(@Lat1);
    SET @Lng2 = Cos(@Lng2);
    SET @Lat2 = Cos(@Lat2);

    -- Add the T-SQL statements to compute the return value here
    SET @Distance = Asin(Sqrt(((POWER((@Lng1 * @Lat1 - @Lng2 * @Lat2), 2)) + (POWER((@Lat1 * @Sin - @Lat2 * @Sin3), 2))) + (POWER((@Sin2 - @Sin4), 2))) / 2) * 1.27420015798544E7 / 1000

    -- Return the result of the function
    RETURN @Distance
END
0
博主关闭了所有页面的评论