【问题标题】:Insert new leaves in R* Tree在 R* 树中插入新叶子
【发布时间】:2012-12-07 15:15:14
【问题描述】:

R* Tree的插入算法步骤是什么?

注意:我希望能够通过插入来构造树。无论我选择什么条件来选择最佳叶子,它总是给我具有最大重叠和最大面积覆盖的垃圾树(在树的每一级添加后测试最小重叠区域,在树的每一级的最小扩展率等) .

现在这个 R* 树是如何通过插入构建得如此精美的(来自Wikipedia):

【问题讨论】:

  • 愿意分享给您带来问题的代码吗?它可能只是一个意外位置的愚蠢错误。 (这就是在我的编程中吸引我的那种东西……)
  • @Donal Fellows 我喜欢;但是插入代码变大了,现在是一个需要清洗的意大利面(经过 5 天的努力)!而且代码很大;但我会在我清理一下之后尝试发布插入部分。
  • 你解决过这个问题吗?我得出了同样的结论。
  • 是的;虽然那是大约四年前的事了,我不记得细节了。但实际上问题在那个时候发生了变化。我必须创建一次这个 R-Tree(没有动态插入)。这样做要容易得多。实际上,我最终使用了与创建 kd-tree 相同的方法。按 x 排序;做N个分区;然后在每个分区中按 y 排序;做N个分区等等。并且性能非常好(全部在内存中)。但它不是动态树。

标签: c# java gis spatial-index r-tree


【解决方案1】:

R*-Tree 不仅仅是一种不同的插入叶策略。

吐字策略(周边!)同样重要,因为它更喜欢“二次”页面,而不是其他策略(如 Ang-Tan)产生的切片。

此外,这可能是获得更漂亮树的关键,R*-tree 执行一种重新平衡来积极避免坏分裂。当一个节点过满时,它不会分裂,而是删除最少的中心元素(或子树 - 您在所有级别都需要它)并重新插入它们。这并不总能防止溢出,但可能会减少树中的重叠。

当然,你可以在实现中犯各种错误,R-tree 仍然可以工作,只是因为结构不好而表现不佳。你的树有多坏,有截图吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-16
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多