我有带有地方的表格,每个都有纬度和经度点我有纬度点和想要的公里数,我需要使用 select 命令在 db 中找到匹配的行来获取这个距离
有没有办法做到这一点,无需选择所有行并为每个点运行函数来计算距离?
谢谢
我有带有地方的表格,每个都有纬度和经度点我有纬度点和想要的公里数,我需要使用 select 命令在 db 中找到匹配的行来获取这个距离
有没有办法做到这一点,无需选择所有行并为每个点运行函数来计算距离?
谢谢
您没有说您使用的是什么版本的 SQL Server - 2008 具有地理查询功能,这可能会避免您的“选择所有行”问题。否则,这篇博文可能会有所帮助:http: //johndyer.name/latitudelongitude-distance-calculation-in-sql-server/
我喜欢为此使用计算列。具体来说,创建一个地理类型的计算列,即您的纬度/经度。如果您拥有它,您可以针对该列使用您想要的所有空间方法。
谢谢大家!这是答案:
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;