boost源码学习之gemotry4:Spatial Indexes空间索引

Spatial Indexes

4.空间索引

4.1 简介

The Boost.Geometry.Index 旨在收集称为空间索引的数据结构,可用于加速搜索空间中的对象。
通常,空间索引存储几何对象的表示,并允许搜索占用某些空间或接近空间中某个点的对象。
目前,只实现了一个空间索引-R-tree。
R树详解
R树空间索引

4.1.1 R-tree

R-tree是一种用于空间搜索的树型数据结构。它由Antonin Guttman在1984年[1]提出,作为多维数据B树的扩展。它可用于存储点或体积数据,以便执行空间查询。例如,此查询可能返回位于某个区域内或靠近空间中某个点的对象[2]。可以插入新对象或删除已存储的对象。
下图显示了R树结构。每个R-树的节点存储一个框,描述其子节点占用的空间。在结构的底部,有包含值(几何对象表示)的叶节点。

4.1.2 实现细节

R-树的这种实现的关键特征是:

  • 能够存储任意值类型,

  • 三种不同的平衡算法-线性、二次或rstar,

  • 使用打包算法创建,

  • 参数(包括最大和最小元素数)可以作为编译时或运行时参数传递,在编译时版本节点中,元素存储在静态大小容器中,

  • 高级查询,例如,搜索距离某个点最近的5个值,并与某些几何图形相交,但不在另一个几何图形内,

  • 使用迭代器进行迭代查询,

  • 符合C++11的移动语义、有状态分配器、,

  • 能够在没有默认构造函数的情况下存储值类型,

  • 使用默认std::allocator<>进行内存存储,

  • 其他存储选项-使用Boost.Interprocess allocators.共享内存和映射文件。

4.1.3 依赖

R-tree依赖于Boost.Container, Boost.Core, Boost.Move, Boost.MPL, Boost.Range, Boost.Tuple.


[1] Guttman, A. (1984). R-Trees: A Dynamic Index Structure for Spatial Searching

[2] Cheung, K.; Fu, A. (1998). Enhanced Nearest Neighbour Search on the R-tree

[3] Greene, D. (1989). An implementation and performance analysis of spatial data access methods

[4] Beckmann, N.; Kriegel, H. P.; Schneider, R.; Seeger, B. (1990). The R*-tree: an efficient and robust access method for points and rectangles

[5] Leutenegger, Scott T.; Edgington, Jeffrey M.; Lopez, Mario A. (1997). STR: A Simple and Efficient Algorithm for R-Tree Packing

[6] Garcia, Yvan J.; Lopez, Mario A.; Leutenegger, Scott T. (1997). A Greedy Algorithm for Bulk Loading R-trees

4.2 快速入门

4.3 创建与修改

4.4 查询

4.5 例子

4.5.1 快速入门

4.5.2 存储在向量中的多边形索引

4.5.3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值