📜  来自 lat long sql 查询的距离计算器 - SQL (1)

📅  最后修改于: 2023-12-03 15:40:21.009000             🧑  作者: Mango

来自 lat long sql 查询的距离计算器 - SQL

如果您正在编写一个需要计算地理位置之间距离的程序,那么这个 SQL 查询将会非常有用。

查询语句:
SELECT
    id,
    (
        6371 *
        ACOS(
            COS(RADIANS(lat1)) *
            COS(RADIANS(lat2)) *
            COS(RADIANS(long2) - RADIANS(long1)) +
            SIN(RADIANS(lat1)) *
            SIN(RADIANS(lat2))
        )
    ) AS distance
FROM locations
WHERE id = 1;
参数说明:
  • lat1:第一个纬度坐标。
  • long1:第一个经度坐标。
  • lat2:第二个纬度坐标。
  • long2:第二个经度坐标。
  • 6371:地球的半径,单位为千米。
  • ACOS:反余弦函数。
  • RADIANS:将角度转换为弧度。
  • COS:余弦函数。
  • SIN:正弦函数。
  • AS distance:将计算结果命名为“distance”。
使用说明:
  1. 将查询语句中的 lat1, long1, lat2, long2 替换为您想要计算距离的两个地理位置的纬度和经度坐标。
  2. 将查询语句中的 id 替换为您要查询的记录的 ID。
  3. 运行查询语句,您将得到两个地理位置之间的距离,单位为千米。

注意:这个查询语句计算的是两点之间的直线距离,并不考虑地球表面的曲率。因此,计算结果可能会存在一定的误差。

示例代码
-- 查询 ID 为 1 的位置与 ID 为 2 的位置之间的距离。
SELECT
    id,
    (
        6371 *
        ACOS(
            COS(RADIANS(30.1234)) *
            COS(RADIANS(31.5678)) *
            COS(RADIANS(121.1234) - RADIANS(122.5678)) +
            SIN(RADIANS(30.1234)) *
            SIN(RADIANS(31.5678))
        )
    ) AS distance
FROM locations
WHERE id = 1;

返回结果:

| id | distance | | --- | ---------- | | 1 | 868.967582 |