0

我有带有地方的表格,每个都有纬度和经度点我有纬度点和想要的公里数,我需要使用 select 命令在 db 中找到匹配的行来获取这个距离

有没有办法做到这一点,无需选择所有行并为每个点运行函数来计算距离?

谢谢

4

3 回答 3

0

您没有说您使用的是什么版本的 SQL Server - 2008 具有地理查询功能,这可能会避免您的“选择所有行”问题。否则,这篇博文可能会有所帮助:http: //johndyer.name/latitudelongitude-distance-calculation-in-sql-server/

于 2013-01-09T18:02:02.403 回答
0

我喜欢为此使用计算列。具体来说,创建一个地理类型的计算列,即您的纬度/经度。如果您拥有它,您可以针对该列使用您想要的所有空间方法。

于 2013-01-20T21:04:11.687 回答
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;
于 2013-01-25T09:13:01.213 回答