我现在做的东西需要实时存储用户的经纬度,然后要求能快速得到某个指定经纬度附近的用户的列表。

我的问题是:

  1. 以什么形式存储经纬度比较好?

  2. 怎么找出数据库里距离某经纬度比较近的其它用户?

  3. 需要用redis之类的nosql db么?

PS: 我现在的后台用django写的,数据库用的mysql。


万千封印
浏览 113回答 2
2回答

猛跑小猪

mongoDB实现空间数据库该有的东西.. 原生就支持地理范围检索...无需各种用不着的东西...4sq就是用它的

一只名叫tom的猫

其实算出中心点以距离为半径的外切正方形内的经纬度范围效率比较高 SQL代码 {{{ declare @EARTH_RADIUS float set @EARTH_RADIUS = 6371000.00 ---地球的半径 declare @lat float declare @lng float declare @dlng float declare @dlat float declare @distance int ------距离 set @distance = 300 ----300米 set @lat =xx.xxxxx &nbsp;---这个是中心地点 set @lng = xxx.xxxx ---中心地点 set @dlng &nbsp;= 2 * asin(sin( @distance / (2 * @EARTH_RADIUS)) / cos(@lat)) set @dlng = degrees(@dlng)&nbsp; set @dlat = &nbsp;300/@EARTH_RADIUS set @dlng = degrees(@dlat)&nbsp; declare @lng1 float declare @lng2 float declare @lat1 float declare @lat2 &nbsp;float set @lat1 = @lat-@dlat set @lat2 = @lat+@dlat set @lng1 = @lng-@dlng set @lng2 = @lng+@dlng select @lat1,@lat2,@lng1,@lng2 SELECT lat,lng FROM place WHERE lat > @lat1 AND lat < @lat2 AND lng > @lng1 AND lng < @lng2; }}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python