使用Long / Lat SQL Server 2008附近

时间:2012-05-26 11:10:02

标签: sql-server geometry latitude-longitude geo

我有一个名为Places的表,此表中的每个记录都有其经度和纬度。

我想在这张桌子上搜索特定长度和纬度附近的地方(假设附近圆的半径是25公里)

1 个答案:

答案 0 :(得分:0)

由于您有一定的距离来限制搜索,因此您的问题与那些要求找到最近点的问题有所不同(无限制)。我发明了两个公式,将距离计算简化为度差。这些公式仅适合地球形状,而不适合其他球形:

以下显示了在给定纬度下1度经度内包围了多少公里:

LongDistanceFactor = − 0.0114 * (lat)^2 − 0.2396(lat) + 112.57

第二个显示的是在给定纬度下1度纬度内环绕了几公里:

LatDistanceFactor = 0.0139(lat) + 110.51 

因此,对于围绕(lat,lng)的25公里,您只需要查找其纬度在lat ± (25/LatDistanceFactor)之间且在lng ± (25/LongDistanceFactor)之间较长的点上即可。

编辑:当我对纬度和经度都使用±时,目标区域将是一个正方形,每边的长度为50Km。如果您坚持使用圆形区域,则可以使用点距的真实公式对第一个结果系列进行第二次回合计算,并忽略不在圆中的那些。