0

背景 /

目前,我们有一个 100 左右的纬度/经度被映射到谷歌地图上。目的是通过从数据库中选择彼此相距几米的 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) 
         )
4

1 回答 1

0

首先,地球不是正方形,因此要获得准确的距离,您需要使用半正弦函数(查找),但是,对于几米的距离,精度可能无关紧要。

其次,纬度之间的距离在 110.574 和 111.694 公里之间变化,经度在 111.32 和 0.0 公里之间变化(是的,两极是 0.0 公里)。无论如何,0.3 介于 0 到 35,000 m 之间 - 不完全是“少数”,除非您的热点位于北极和/或南极。

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

编辑

确实如此,看这个问题。

于 2013-02-06T11:55:30.043 回答