查找具有n英里现有位置的位置

时间:2013-12-08 15:29:14

标签: python mysql latitude-longitude

问题

我有一个约5000个位置的列表,其纬度和经度坐标称为A,此列表的单独子集称为B.我想找到A中距离B中任何位置n英里内的所有位置。

结构

所有这些数据都存储在mysql数据库中,并通过python脚本请求。

方法

我目前的方法是遍历B中的所有位置,并请求每个位置n英里内的位置,如果它们尚不存在则将它们添加到列表中。

这样可行,但在最坏的情况下,需要花费大量时间,并且效率很低。我觉得必须有一个更好的方法,但我不知道如何做到这一点。

  1. 将所有位置加载到python中的列表中,并计算距离。这将减少mysql查询的数量,并可能加快操作。但它仍然会很慢。

1 个答案:

答案 0 :(得分:1)

将B加载到python列表中,并且对于每个计算maxlat,minlat,maxlong,minlong,如果你的半径是海里数和纬度/长度数,那么盒子外面的所有东西肯定都在你的半径之外。然后,您可以针对满足minlat<的标准的点提出SQL查询。 lat< maxlat和minlong<长< MAXLONG。然后可以检查结果点的精确距离,如果它们在范围内,则将其添加到范围内列表中。

我建议在多个过程中执行此操作。