SQL查询将所有位置(lat / lng)与给定位置(lat / lng)保持一定距离

时间:2018-04-18 21:19:58

标签: c# sql math maps

给出具有纬度和经度位置的地点数据库,例如30.706557,76.733588。如何在特定位置的给定距离内找到所有位置?

从DB中选择所有位置然后逐个浏览它们似乎并不是非常有效,从起始位置获取距离以查看它们是否在指定距离内。有没有一种很好的方法可以缩小DB中最初选择的位置?

我刚刚发现了这个问题:

    SELECT * FROM(
    SELECT *,(((acos(sin((@latitude*pi()/180)) * sin((Latitude*pi()/180))+cos((@latitude*pi()/180)) * cos((Latitude*pi()/180)) * cos(((@longitude - Longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance FROM Distances) t
WHERE distance <= @distance

如果这是正确的方法,请帮助我理解并实施它。谢谢。

0 个答案:

没有答案