【问题标题】:Nearby using Long/Lat SQL Server 2008附近使用 Long/Lat SQL Server 2008
【发布时间】:2012-06-01 16:52:39
【问题描述】:

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

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

【问题讨论】:

  • 经度和纬度的数据类型有哪些?具体来说,您使用的是geography 数据类型吗?在这个网站和其他地方有很多关于纬度/经度计算和“查找最近”搜索的问题,所以您可能需要进一步研究,然后如果您仍有问题,请返回更具体的问题。
  • 我正在使用地理点(数据类型)

标签: sql-server geometry latitude-longitude geo


【解决方案1】:

由于您有一个给定的距离来限制您的搜索,您的问题与那些要求找到最近点的问题略有不同(没有限制)。我发明了两个将距离计算简化为度数差异的公式。这些公式只是拟合地球形状而不是任何其他球形:

下图显示了在给定纬度周围 1 度经度所包围的公里数:

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

第二个显示在给定纬度周围 1 度纬度所包围的公里数:

LatDistanceFactor = 0.0139(lat) + 110.51 

因此,对于 (lat,lng) 周围的给定 25 公里,您只需要找到它们的 lat 介于 lat ± (25/LatDistanceFactor) 和 long 介于 lng ± (25/LongDistanceFactor) 之间的点

编辑:由于我对 Lat 和 Lng 都使用 ±,因此目标区域将是一个正方形,每边长度为 50 公里。如果你坚持圆形区域,你可以用真正的点距离公式对第一个系列的结果进行第二轮计算,并省略那些不在你的圈子里的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多