我有一个名为 Places 的表,该表中的每条记录都有其经度和纬度。
我想在这张桌子上搜索以找到特定经纬度附近的地方(假设附近圆的半径为 25 公里)
我有一个名为 Places 的表,该表中的每条记录都有其经度和纬度。
我想在这张桌子上搜索以找到特定经纬度附近的地方(假设附近圆的半径为 25 公里)
由于您有给定的距离来限制搜索,因此您的问题与那些要求找到最近点的问题(无限制)略有不同。我发明了两个将距离计算简化为度数差异的公式。这些公式只是拟合地球形状而不是任何其他球形:
下图显示了在给定纬度周围 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)
编辑:当我对纬度和经度都使用±时,目标区域将是一个正方形,每边长度为 50 公里。如果你坚持一个圆形区域,你可以用真正的点距离公式对第一个系列的结果进行第二轮计算,并省略那些不在你的圈子里的。