最近在工作中遇到这么一个需求:根据事件发生地点由近至远展示符合筛选条件的数据。我觉得这个需求挺有意思的,所以记录一下,有需要的兄弟萌可以参考。
根据上述需求,最后提取出来的工作项是:根据经纬度计算两点间的距离。
计算公式:基于球面距离公式(Haversine formula)来计算两点之间的距离。
参数说明:
序号 | 字段名称 | 说明 |
1 | ext1 | 经度(数据库中字段值) |
2 | ext2 | 纬度(数据库中字段值) |
3 | lon_c | 经度(参数) |
4 | lat_c | 纬度(参数) |
5 | distance | 计算后的距离,单位:千米 |
SELECT goods_id , ext2, ext1,
6371 * ACOS(
COS(RADIANS(lat_c)) * COS(RADIANS(ext2)) * COS(RADIANS(ext1) - RADIANS(lon_c)) +
SIN(RADIANS(lat_c)) * SIN(RADIANS(ext2))
) AS distance
FROM t_event
ORDER BY distance ASC;
查询结果如下:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务