mysql计算量经纬度距离

2023年 8月 5日 44.8k 0

MySQL作为一种强大的关系型数据库,具有很多高效的计算功能。其中,计算经纬度距离就是很常见的一种计算方法。下面我们通过pre标签引入一个例子,来了解在MySQL中如何计算经纬度距离。

CREATE FUNCTION distance (lat1 DOUBLE, lon1 DOUBLE, lat2 DOUBLE, lon2 DOUBLE)
RETURNS DOUBLE
DETERMINISTIC
BEGIN
SET @radius = 6371; -- 地球平均半径
SET @latDiff = RADIANS(lat2 - lat1);
SET @lonDiff = RADIANS(lon2 - lon1);
SET @a = SIN(@latDiff/2) * SIN(@latDiff/2) + COS(RADIANS(lat1)) * COS(RADIANS(lat2)) * SIN(@lonDiff/2) * SIN(@lonDiff/2);
SET @c = 2 * ATAN2(SQRT(@a), SQRT(1-@a));
RETURN @radius * @c;
END;

mysql计算量经纬度距离

我们可以看到,这段代码中定义了一个distance函数,用来计算两个经纬度之间的距离。这个函数的参数包括(lat1, lon1)和(lat2, lon2),分别表示两个经纬度的纬度和经度。

在函数内部,我们首先定义了一个地球平均半径radius。接下来,根据两点经纬度的差值计算出对应的弧度值。然后,利用Haversine公式计算两个经纬度之间的角距离。最后,将角距离乘上地球半径,获得两个经纬度之间的实际距离。

在使用这个函数时,我们只需要将需要计算距离的两个经纬度传入函数中,即可得到它们之间的距离。例如:

SELECT distance(31.14, 121.29, 31.22, 121.48);

这段查询语句将会返回两个经纬度之间的距离,单位为公里。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论