Php 找到顶部“n”附近的坐标

Php 找到顶部“n”附近的坐标,php,mysql,gps,coordinates,zipcode,Php,Mysql,Gps,Coordinates,Zipcode,我有座标。我想找出top n是一个变量值,它是MySQL数据库中存储的几千行中最接近坐标的一行。我还希望能够定义相关坐标与数据库中坐标之间的最大和最小距离 我该怎么做才好?如果我比MySQL更了解PHP的语法,那么使用PHP会是疯狂的吗 如果我使用MySQL函数,如果我选择切换服务器,如何在数据库之间移动它?它是如何储存的 最后,准确通过所有这些坐标的最有效方法是什么?这些坐标彼此都相对接近 谢谢你抽出时间 John。在PHP中这样做会让人发疯,而不是。如果您坚持使用双精度浮点数,那么您的精度应

我有座标。我想找出top n是一个变量值,它是MySQL数据库中存储的几千行中最接近坐标的一行。我还希望能够定义相关坐标与数据库中坐标之间的最大和最小距离

我该怎么做才好?如果我比MySQL更了解PHP的语法,那么使用PHP会是疯狂的吗

如果我使用MySQL函数,如果我选择切换服务器,如何在数据库之间移动它?它是如何储存的

最后,准确通过所有这些坐标的最有效方法是什么?这些坐标彼此都相对接近

谢谢你抽出时间


John。

在PHP中这样做会让人发疯,而不是。如果您坚持使用双精度浮点数,那么您的精度应该比可用精度高,即民用GPS最多精确到5m左右,但您的计算将给出几厘米的精度

此链接对我很有帮助:,另一个stackoverflow问题:这个问题在这个网站上以前就已经解决了。见@Billiam的评论。我能给出的唯一建议是,通过缓存流行区域或其他内容,尽可能避免重击数据库。这将为您提供最有效的解决方案。不久前,我遇到了一个类似的问题:一个满是位置的表,并且给定了一个位置X(最常见的是用户的位置),我想找出与我的表最近的N个位置是什么,可能同时通过其他条件进行过滤。我意识到继续查询数据库会非常糟糕,而且缓存每个查询也会太多,所以我最终做了一些事情,比如根据与X的距离计算位置的有序列表,memcaching一段时间并对其应用额外的显示过滤器。@aduric:减少数据库负载的一个好方法是应用WHERE子句,该子句将限制要在其上进行进一步计算的点数。例如,X是纬度,Y是经度,其中经度在X-3和X+3之间,纬度在Y-3和Y+3之间。当然,3的变化取决于点的密度和/或指定纬度/经度处最大线性距离所跨越的度数。