【问题标题】:Sort MySQL records according to co-ordinates根据坐标对 MySQL 记录进行排序
【发布时间】:2017-10-12 07:26:12
【问题描述】:

我有一个 MySQL 表,其中包含三列:latlonID

现在作为输入 我希望用户提供一对纬度和经度。作为回报,我想显示 从最近到最远的排序行

现在,这个问题的一个解决方案是,获取数组中的所有条目,制作一个临时数组,使用havesine计算每个项目的距离strong> 公式,推送到临时数组,最后对该数组执行任何排序算法。

但是,这个操作很繁重,我想要一个更好的解决方案。有吗?

P.S:我正在使用 PHP 脚本。

【问题讨论】:

  • 现有的解决方案对我来说看起来不错。您可能希望提供一个边界框作为 WHERE 子句的一部分,以过滤掉明显超出计算范围的坐标
  • 您可以直接在sql中使用haversine公式并对结果值进行排序..

标签: php mysql algorithm sorting


【解决方案1】:

简短回答:否。

长答案:也许。如果您在给定且非常有限的半径内工作,您可以通过 y 为 lat 和 lng 的每十分之一度建立一个固定值并应用对角线([delta lat squared + delta lng squared] )。

但这仅适用于非常接近您的中心点的点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2020-04-16
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多