【发布时间】:2018-06-11 20:47:24
【问题描述】:
我在 sqlite3 数据库中有两个表,其中包含不同对象的坐标。结构类似于 id-longtitude-latitude。让我们将它们命名为 object1_coor 和 object2_coor。
我只需要找到object1_coor 表和object2_coor 表中每个对象之间的距离。
如何在 Python 3 中做到这一点?到目前为止,我已经阅读了很多,但没有找到这种迭代的解决方案。
我将在下面使用距离算法:
obj1_lat = radians(float(obj1_lat)))
obj1_lon = radians(float(obj1_lon)))
obj2_lat = radians(float(obj2_lat)))
obj2_lon = radians(float(obj2_lon)))
dist = 6371.01 * acos(sin(obj1_lat)*sin(obj2_lat) + cos(obj1_lat)*cos(obj2_lat)*cos(obj1_lon - obj2_lon))
print("The distance is " % dist)
【问题讨论】:
-
如果您的坐标位于两个列表中,您将采用相同的方式:创建列表的所有唯一组合并生成每个组合的距离。
-
但是我想在迭代过程中检查距离对我来说是否合适,如果是的话,把它放在另一个表中。你的观点听起来不错,但请你帮忙写代码,我不明白如何并行读取和迭代两个表。 sql 请求和游标中的难点
-
你不会遍历这两个表;您将遍历单个选择查询。您可以在两个表之间进行交叉连接并只获取不同的结果;这应该会给你所有可能的组合。
-
如果您需要将结果放入一个单独的表格中,那么您很可能需要一个本地函数来计算距离,因此您只需使用距离函数输出填充一个表格。你也可以用 Python 来做,但是有点往返。
-
谢谢,我明白你的意思,将尝试 snd 分享结果
标签: python python-3.x sqlite iteration