Geolocation 地理位置计算:如果点在半径范围内,则计算点

Geolocation 地理位置计算:如果点在半径范围内,则计算点,geolocation,Geolocation,好的,问题是: 我想向我的用户展示他附近最近的地质点 我已经找到了大约55000个可以显示的固定地质点。(我对所有这些都有长期/长期) 根据用户位置(长/纬度),我想显示最近的20个地质点 因此,我当然可以计算所有55.000个地质点,看看在用户lang/lat的某个半径内是否有20个,然后对它们进行排序,但这会以某种方式增加计算55tsd地质点的开销 是否有可能将5英里/公里的范围“添加”到用户的long和lat中,并仅计算该半径范围内的距离 我希望你明白我的意思。:) Merci如果计算所有

好的,问题是: 我想向我的用户展示他附近最近的地质点

我已经找到了大约55000个可以显示的固定地质点。(我对所有这些都有长期/长期) 根据用户位置(长/纬度),我想显示最近的20个地质点

因此,我当然可以计算所有55.000个地质点,看看在用户lang/lat的某个半径内是否有20个,然后对它们进行排序,但这会以某种方式增加计算55tsd地质点的开销

是否有可能将5英里/公里的范围“添加”到用户的long和lat中,并仅计算该半径范围内的距离

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

如果计算所有点之间的距离花费太多时间,您可以仅通过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)

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

这些数据存储在什么数据结构中?它们是在数据库中还是仅仅在数组中,一个平面文件中…?在任何情况下,你都应该研究你可以计算(使用一些有趣的数学)一个long/lat,以便你只需要对你的项目的子集进行排序。我没有时间写一个完整的答案,尤其是在不知道你计划使用哪种技术的情况下,但这应该会让你开始。你能提供一个更详细的解释,说明这个公式到底是怎么回事吗。什么是
60*1.1515