Mysql Group''close''float(lat / long)

时间:2013-02-06 11:23:02

标签: php mysql sql

背景/

目前,我们已经将100张左右的Lat / Lng映射到谷歌地图上。目的是通过从数据库中选择彼此相距几米的La / Lo值来显示这些位置的热点位置。

然后,组值将用于查找中心点并在热点地图上绘制一个圆圈。

当前设置/

目前我们请求的数据只有id(int),La(float),Lo(float)

概念/

我认为需要的是这个

Select * from table
Group by ( 
          ( La + 0.30 && La - 0.30) &&  ( Lo + 0.30 && Lo - 0.30) 
         )

1 个答案:

答案 0 :(得分:0)

首先,地球不是正方形,所以要获得准确的距离,你需要使用半正功能(查找),但是,对于几米的距离,准确度无关紧要。

其次,弧度之间的距离在110.574和111.694km之间变化,经度在111.32和0.0km之间(在极点是0.0km)。在任何情况下,0.3介于0到35,000米之间 - 除非你的热点位于北极和/或南极,否则不是“几个”。

第三,忽略糟糕的地理位置,你正在摸索的SQL语句将需要交叉连接并对计算的距离进行排序,即使对于一个小的数据集也会非常慢 - 你需要查看使用mysql支持的任何支持原生地理类型。我知道SQL Server有它们,我怀疑MySQL也有。

修改

确实如此,请参阅this问题。