地理定位计算:如果它们在半径范围内,则计算点数

时间:2012-07-25 15:08:07

标签: geolocation

好的,这是问题所在: 我想向我的用户展示他附近最近的地理位置。

我有55,000个可以显示的固定地理位置。 (我所有人都长/拉) 取决于用户位置(长/纬)我想显示最近的20个地理点。

所以我当然可以计算所有55.000个地理位置并查看用户lang / lat的某个半径范围内是否有20个并且之后对它们进行排名,但这在某种程度上是计算总是55tsd地理点的开销。

是否可以向用户长度和纬度“添加”5英里/公里范围,并仅计算此半径范围内的距离?

我希望你明白我的意思。 :) Merci

1 个答案:

答案 0 :(得分:0)

如果计算所有点之间的距离花费太多时间,则可以通过lat / lon(source_lat - target_lat)(source_lon - target_lon)之间的简单差异缩小可能的点,并且仅采用最接近最终计算的点距离。您可以使用公式来计算距离。

D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) +
                   cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi / 180) 
                     )  * 180 / pi)

但计算效率也取决于使用的数据库技术。