我有地方的桌子,每个都有拉特和长点 我有拉特lon点,想要KM的距离, 我需要使用select命令
在db中找到与此距离匹配的行有没有办法做到这一点,没有选择所有行并运行每个点的函数来计算距离?
感谢
答案 0 :(得分:0)
您不会说您正在使用的SQL Server版本 - 2008具有地理查询功能,可以避免选择所有行'关心你。否则,此博文可能有所帮助:http://johndyer.name/latitudelongitude-distance-calculation-in-sql-server/
答案 1 :(得分:0)
我喜欢使用计算列。具体来说,创建一个地理类型的计算列,即您的纬度/经度。如果你有这个,你可以使用你想要的所有空间方法。
答案 2 :(得分:0)
谢谢大家! 这是答案:
String SelectString = "SELECT * FROM (SELECT *,(((acos(sin((";
SelectString += userLat;
SelectString += "*pi()/180)) * sin((latPoint*pi()/180))+cos((";
SelectString += userLat;
SelectString += "*pi()/180)) * cos((latPoint*pi()/180)) * cos(((";
SelectString += userLon;
SelectString += "- lonPoint)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance FROM MYTABLE ) t WHERE distance <=";
SelectString += userDistance;