[LBS]查询离某个经纬附近的数据SQL语句

//地球半径,平均半径为6371km
 /**
 *计算某个经纬度的周围某段距离的正方形的四个点
 *
 *@param lon float 经度
 *@param lat float 纬度
 *@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
 *@return array 正方形的四个点的经纬度坐标
 */
//对于经度和纬度大于或小于该用户1度(111公里)范围内的用户进行距离计算,同时对数据表中的经度和纬度两个列增加了索引来优化where语句执行时的速度.
 
select * from tablename where lat>34.23414-1 and lat<34.23414+1 and lon>117.180734-1 and lon<117.180734+1 
order by ACOS(SIN((34.23414 * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS((34.23414 * 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) * COS((117.180734 * 3.1415) / 180 - (lon * 3.1415) / 180 ) ) * 6380  desc  limit 10

 

 
posted @ 2013-03-06 13:18  yaokoowp  阅读(294)  评论(0编辑  收藏  举报