在ms sql select命令中计算2点lat和lon的距离

时间:2013-01-09 18:00:06

标签: asp.net sql sql-server

我有地方的桌子,每个都有拉特和长点 我有拉特lon点,想要KM的距离, 我需要使用select命令

在db中找到与此距离匹配的行

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

感谢

3 个答案:

答案 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;