如何利用经纬度计算直线距离 SQL

如何利用经纬度计算直线距离 SQL

Source: https://blog.csdn.net/weixin_42382211/article/details/80852786

SELECT c.province_name, c.city_name, c.address, d.station_name, d.train_station
    , CAST(d.distance AS BIGINT)
FROM (
    SELECT DISTINCT a.station_name, b.station_name AS train_station
        , MIN(6378137 * 2 * ASIN(SQRT(POWER(SIN((a.coordinate_y - b.latitude) * ACOS(-1) / 360), 2) + COS(a.coordinate_y * ACOS(-1) / 180) * COS(b.latitude * ACOS(-1) / 180) * POWER(SIN((a.coordinate_x - b.longitude) * ACOS(-1) / 360), 2)))) AS distance
    FROM dw_busdb.tbl_dc_station a
        JOIN tmp_busdb.tmp_train_station_info b
    WHERE a.coordinate_x <> '' and a.coordinate_y <> '' and a.d = '2020-03-18'
    GROUP BY a.station_name, b.station_name
) d
    JOIN dw_busdb.tbl_dc_station c ON d.station_name = c.station_name and d = '2020-03-18'
WHERE distance < 3000
ORDER BY c.province_name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值