从数据库表中删除彼此接近的位置的记录

时间:2017-02-22 12:08:22

标签: database sqlite duplicates

我需要做一些数据库管理。

我有一个数据库表,其中包含位置(包含纬度和经度等)。它被用来生成Geofences(如果你感兴趣的话)。

作为内务管理的一部分,我想从数据库中删除“接近”其他记录的位置记录(即如果表中的2条记录彼此相距250米,我将删除创建的第一条记录并离开第二个)。

我实现这个的算法是循环遍历每个记录(我将其称为根记录),并通过表中的每个其他记录循环每个根记录循环(我将其称为检查记录),计算两个位置之间的距离,如果< 250,则删除根记录。

[这是伪代码]

while (rootLoop.moveToNext) {
    while (checkLoop.moveToNext) {
        distance = getDistanceBetween(rootLocation, checkLocation);
        if (distance < 250) delete(rootRecord);
    }
}

如果我有一个包含几百个位置的数据库表,这可能需要一些处理工作(我显然会在后台服务中运行它)。

所以我的问题是 - 有没有比这些嵌套循环更有效的方法来实现我想要的东西?

如果有的话,我想不到它,但我想我会把它扔到地板上。你有多有创意?

0 个答案:

没有答案