树 索引不再适合,因为 B 树所针对的字符、数字等传统数据类型是在一个良序集之
中,即都是在一个维度上,集合中任给两个元素,都可以在这个维度上确定其关系只可能是大于、小于、等于
三种,若对多个字段进行索引,必须指定各个字段的优先级形成一个组合字段,而地理数据的多维性,在任何
方向上并不存在优先级问题,因此 B 树并不能对地理数据进行有效的索引,所以需要研究特殊的能适应多维特
性的空间索引方式。
1984 年 Guttman 发表了《R 树:一种空间查询的动态索引结构》[1]一种高度平衡树,由中间节点和叶节点
组成,实际数据对象的最小外接矩形存储在叶节点中,中间节点通过聚集其低层节点的外接矩形形成,包含所
有这些外接矩形。其后,人们在此基础上针对不同空间运算提出了不同改进,才形成了一个繁荣的索引树族,
是目前流行的空间索引。
R 树是一种采用对象界定技术的高度平衡树,是 B树在 k维空间上的自然扩展,它将空间对象按范围划分,每
个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子
结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。每
个结点所能拥有的子结点数目有上、下限,下限保证对磁盘空间的有效利用,上限保证每个结点对应一个磁盘
页,当插入新的结点导致某结点要求的空间大于一个磁盘页时,该结点一分为二。R 树是一种动态索引结构,
即:它的查询可与插入或删除同时进行,而且不需要定期地对树结构进行重新组织。
R-Tree 数据结构
(1)R-Tree 是 n 叉树,n 称为 R-Tree 的扇( fan ) 。
(2)每个结点对应一个矩形。
(3)叶子结点上包含了小于等于 n 的对象,其对应的矩为所有对象的外包矩形。
(4)非叶结点的矩形为所有子结点矩形的外包矩形。
R-tree 具有以下性质:
(1)除根节点外,每个节点的项数介于最小项数 m 和最大项数 M 之间;
(2)根节点至少有两个孩子,除非它是叶子节点;
(3)所有叶子节点位于同一层;
(4)同一节点中项,其排列没有顺序要求
R-Tree 的的评价标准为:
(1)位置上相邻的结点尽量在树中聚集为一个父结点。
(2)同一层中各兄弟结点相交部分比例尽量小。
R 树是一种用于处理多维数据的数据结构,用来访问二维或者更高维区域对象组成的空间数据.R 树是一棵平衡
树。树上有两类结点:叶子结点和非叶子结点。每一个结点由若干个索引项构成。对于叶子结点,索引项形如
(Index,Obj_ID)。其中,Index 表示包围空间数据对象的最小外接矩形 MBR,Obj_ID 标识一个空间数据对
象。对于一个非叶子结点,它的索引项形如(Index,Child_Pointer)。 Child_Pointer 指向该结点的子结
点。Index 仍指一个矩形区域,该矩形区域包围了子结点上所有索引项 MBR 的最小矩形区域。一棵 R 树的如
图 1 所示。