【问题标题】:Find top "n" nearby coordinates查找前“n”个附近坐标
【发布时间】:2010-04-13 19:25:18
【问题描述】:

我有一个坐标。我想从存储在 MySQL 数据库中的数千行中找到最接近的“n”(n 是变量值)坐标。我还希望能够定义相关坐标与数据库中坐标之间的最大和最小距离。

我该怎么做才最好?使用 PHP 会不会很疯狂,因为我比 MySQL 更了解语法?

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

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

感谢您的宝贵时间,

约翰。

【问题讨论】:

  • 这个链接对我很有帮助:scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL 还有另一个 stackoverflow 问题:stackoverflow.com/questions/574691/…
  • 这个问题之前已经解决了(甚至在这个网站上)。请参阅@Billiam 的评论。我能给出的唯一建议是通过缓存“热门区域”或其他东西来尽可能避免重创数据库。这将为您提供最有效的解决方案。
  • 不久前我有一个类似的问题:一张满是位置的桌子,给定一个位置 X(最常见的是用户的位置),我想找出最接近的 N我表中的位置,可能同时通过其他条件进行过滤。我意识到继续查询数据库会非常糟糕,而且缓存每个查询也会太多,所以我最终做了一些事情,比如根据与 X 的距离计算位置的有序列表,(mem)将其缓存一段时间并在其上应用额外的显示过滤器。
  • @aduric:减少数据库负载的一个好技巧是应用“WHERE”子句,该子句将限制进行进一步计算的点数。例如,X 是纬度,Y 是经度 - “X-3 和 X+3 之间的经度和 Y-3 和 Y+3 之间的纬度”。当然,“3”会根据点的密度和/或指定纬度/经度处的最大线性距离所跨越的度数而有所不同。

标签: php mysql gps coordinates zipcode


【解决方案1】:

在 PHP 中而不是 farm this off to MySQL 中这样做会很疯狂。如果您坚持使用双精度浮点数,那么您应该具有比现有精度更好的精度(即民用 GPS 最多可以精确到 5m,但您的计算会给出几厘米的精度)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 2012-06-15
    • 2012-03-09
    • 2016-04-24
    • 2019-07-31
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多