【问题标题】:Spatial index on a sorted set排序集上的空间索引
【发布时间】:2014-12-09 18:02:31
【问题描述】:

我有一大组要以 2D 形式渲染的对象,我从下到上对它们进行了排序。我目前正在使用 R-tree 来获取当前视口中的一部分。但是,在将它们从空间索引中取出后,我必须按它们的 Z 顺序对它们进行重新排序。与在空间索引中查找它们的列表(其中数百个项目与我的查询匹配)相比,这种排序需要大约 6 倍的时间。

有没有一种二维空间索引,可以通过矩形边界框快速查找,并按排序顺序返回元素?

【问题讨论】:

  • 基于octree 的东西可能是一个不错的起点...
  • 您是否考虑过简单地使用 3D R-tree?它可能需要重新排序坐标(例如(z,x,y)而不是(x,y,z)),但似乎应该可以按z排序的顺序获得结果。如果不是,那么应该使用 3D k-d 树。另外,你有多少个Z?使用基数排序或其他东西可能会更好。
  • Z 值是不同的——每个存储的对象都有一个唯一值。

标签: data-structures spatial-index


【解决方案1】:

您可以直接在 Z 顺序上构建 R 树。

通常,Hilbert 顺序是首选,这称为 Hilbert-R-tree。

但您也可以对 Z 顺序执行相同操作。

但是,您也可以考虑立即将数据完全按 Z 顺序存储;例如在 B+-树中。

不要使用矩形进行查询,而是将查询转换为 Z 顺序间隔,然后查询 Z 索引。这是一种早于 R-trees 的非常经典方法:

Morton, G. M. (1966)
面向计算机的大地测量数据库;以及文件排序的新技术
技术报告,加拿大渥太华:IBM Ltd.

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2021-11-24
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2020-11-02
    相关资源
    最近更新 更多