您的位置:首页 > 其它

根据经纬度(lat,lng)查找附近的地点(续)

2016-09-20 12:17 525 查看
原文出处:http://blog.163.com/ezy_dk/blog/static/166651492201221445753585/

参考网文:附近地点搜索初探  

下面给出自己总结的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				--这个是中心地点
set @lng = xxx.xxxx				--中心地点

set @dlng  = 2 * asin(sin( @distance / (2 * @EARTH_RADIUS)) / cos(@lat))
set @dlng = degrees(@dlng)
set @dlat =  300/@EARTH_RADIUS
set @dlat = degrees(@dlat)

declare @lng1 float
declare @lng2 float
declare @lat1 float
declare @lat2  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)	-- 纬度范围
常识:

1、经度(Latitude), 东经为正数,西经为负数;

2、纬度(Longitude), 北纬为正数,南纬为负数; 

附图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐