作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More
【场景】
有一个当前位置经纬度值A,然后以坐标点A为中心点,数据库表里查询半径为10公里范围的经纬度坐标点记录值
【数据值】
地球半径值:6371.004
中心点值:(113.41339,23.05262)
查询范围:10公里
【计算公式】
温馨提示:这里计算出来的值是指默认大小时的直线距离,即圆的半径范围
(6371.004ACOS(SIN(23.05262/180PI())SIN(LAT/180PI())+COS(23.05262/180PI())COS(LAT/180PI())COS((113.41339-LONG)/180*PI())))
(地球半径ACOS(SIN(中心点纬度/180PI())SIN(数据库表的纬度/180PI())+COS(中心点纬度/180PI())COS(数据库表的纬度/180PI())COS((中心点经度-数据库表的经度)/180*PI())))
【Sql代码】
select * from (
SELECT (
6371.004*ACOS(SIN(23.05262/180*PI())*SIN(LAT/180*PI())+
COS(23.05262/180*PI())*COS(LAT/180*PI())*COS((113.41339-LONG)/180*PI())))AS dis
FROM CENTER
) B
where dis<10
order by dis asc;