问题
我有一个约5000个位置的列表,其纬度和经度坐标称为A,此列表的单独子集称为B.我想找到A中距离B中任何位置n英里内的所有位置。
结构的
所有这些数据都存储在mysql数据库中,并通过python脚本请求。
方法
我目前的方法是遍历B中的所有位置,并请求每个位置n英里内的位置,如果它们尚不存在则将它们添加到列表中。
这样可行,但在最坏的情况下,需要花费大量时间,并且效率很低。我觉得必须有一个更好的方法,但我不知道如何做到这一点。
观
答案 0 :(得分:1)
将B加载到python列表中,并且对于每个计算maxlat,minlat,maxlong,minlong,如果你的半径是海里数和纬度/长度数,那么盒子外面的所有东西肯定都在你的半径之外。然后,您可以针对满足minlat<的标准的点提出SQL查询。 lat< maxlat和minlong<长< MAXLONG。然后可以检查结果点的精确距离,如果它们在范围内,则将其添加到范围内列表中。
我建议在多个过程中执行此操作。