mysql的R树,GIS空间数据库(17)R+树索引
R+树索引的主要特征是在R+树中兄弟节点对应的空间区域没有重叠,这样划分空间可以使空间搜索的效率提高。R+树也是R树的一个变种,在R+树中,兄弟节点对应的空间区域没有重叠,这样划分空间可以使空间搜索的效率提高。R+树对空间的划分及其索引对象的MBR组织如下:
R+树查找
算法Search(R,W)/R:R+树的根结点,W:查找矩形窗口/
S1.[查找中间结点]
If R是非叶结点 then
For R的每一索引项(p,MBR) DO
If MBRW then Search(p,WMBR)
S2.[查找叶子结点]
If R是叶子结点 then
检查R的每一数据项(OI,MBR)
RETURN所有与W相交的数据矩形
由查找算法可知,与R树相比,对于区域查找,查找路径应该可以减少,但依旧可能有多条;对于点查找,则可以通过一条路径得到查找结果。
R+树插入
Algorithm Insert(R,IR){
/*R为R+树的根结点,IR为要插入的数据矩形*/
I1.[查找中间结点]
if (R是非叶结点) then
for (p,MBR) do
if (MBRIR0) Insert(CHILD,IR);
I2.[查找叶子结点]
if (R是叶结点) then
if (R已有M个数据项)then SplitNode(R);
else 插入IR于R;
}
R+树删除
Algorithm Delete (R,IR){
/*R为R+树的根结点,IR为要删除的数据矩形*/
Dl.[查找中间结点]
if (R是非叶结点)then
for R的每一索引项(p,MBR)do
if (MBRIR0) then Delete(CHILD,IR);
D2.[查找叶子结点]
if (R是叶结点) then
从R中删除IR且调整R的父结点中对应的目录矩形;
}
结点分裂
Algorithm SplitNode(R){
SN1[寻找一个划分]
调用Partition;
// 设(p,MBR)为与R相关联的索引项,S1与S2表示划分得到的两个子区域,
// 创建两个新结点n1=(p1,MBR1)与n2=(p2,MBR2),MBRi=MBRSi,i=1,2;〗
SN2[填充新结点]
For (R的每一项(pk,MBRk) do
if (MBRkMBR==MBRk) then // MBR k完全包含于MBRi
put(pk,MBRk) in ni;
else // MBR k与MBR1及MBR2都重叠。
if (R是叶结点) then
put (pk,MBRk) in n1 与n2;
else
〖用划分线继续分裂(pk,MBRk)所指结点,设得到的新结点为:nk1=
(pk1,MBRk1),nk2=(pk2,MBRk2),MBRki完全包含于MBRi,将
nki加入到ni,i=I,2;〗
SN3[向上传播结点分裂操作]
if (R是根结点)
创建一新根结点,n1与n2为其两孩子结点;
else
// 在R的父结点PR中,用n1与n2替换R。
// 如果PR的索引项个数超过M,那么调用SplitNode(PR)。
}
mysql的R树,GIS空间数据库(17)R+树索引相关推荐
- R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理、比较误分类率指标
R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理.比较误分类率指标 目录
- r roc函数_一棵树专栏 | ROC分析时一定要告诉R分析谁
两个知名R包产生的矛盾嗨!大家好,我是一棵树,这是我第一次在解螺旋发文,还是蛮激动的.下面就开始吧!今天的主题是:ROC分析时一定要告诉R分析谁 用到的软件是:R语言 用到的R包是:pROC和ROCi ...
- r语言 col_R语言绘制聚类树示例
R语言绘制聚类树示例层次聚类(hierarchical clustering)常见两种形式,"自底向上"的聚合策略(层次聚合)或"自顶向下"的分拆策略(层次分划 ...
- MySQL的存储引擎InnoDB选择了B+ 树
我们知道数据的存储和检索是两个很重要的功能,当我们的数据量大了,怎么能快速的检索数据呢,答案是使用索引,可索引具体的技术实现有很多,选择哪一种呢,我就以mysql为例记录下它为什么选择了B+树作为索引 ...
- mysql的gis_MySQL的GIS功能
MySQL的GIS(空间信息系统)功能从8.0开始进行了大幅改进,包括支持空间数据参照系统,空间数据索引等等新功能和新特性. MySQL空间扩展支持地理特征的生成.存储和分析,包括: 表示空间值的数据 ...
- R语言心得说:R语言之xlsx包读写Excel数据
R语言心得说:R语言之xlsx包读写Excel数据 感谢Adrian A. Drǎgulescu发布的xlsx包 工具准备 [基础]简单读取excel文件数据 [基础]简单写入数据到excel文件 [ ...
- r语言 读服务器数据,R语言数据实战 | 安装R语言
原标题:R语言数据实战 | 安装R语言 1.R的获取和安装 获取和安装R很容易(这也是它"亲民"的地方),具体步骤如下: Step 1: 登陆R语言官方网站https://www. ...
- R语言swirl教程(R Programming)13——Simulation
R语言swirl教程(R Programming)13--Simulation | One of the great advantages of using a statistical program ...
- R语言swirl教程(R Programming)10——lapply and sapply
R语言swirl教程(R Programming)10--lapply and sapply | In this lesson, you'll learn how to use lapply() an ...
- R语言swirl教程(R Programming)11——vapply and tapply
R语言swirl教程(R Programming)11--vapply and tapply | In the last lesson, you learned about the two most ...
最新文章
- 【组队学习】【30期】时间序列分析
- Hive导出复杂数据到csv文件
- 被忽视但很实用的那部分SQL
- 表单中去掉重置和提交按钮和搜索框
- JPA数据库架构生成
- android wp主题,WP桌面:win10系统的最佳替代安卓应用
- maven 分批打包_IDEA maven 多模块打包问题总结
- Programming in the Mid-Future(转)
- python三本经典书籍-有哪些 Python 经典书籍?
- 记一次easywechat企业付款问题
- Hexo博客优化之Next主题美化
- 阿里巴巴2015实习面试
- 测试工程之测试计划之里程碑计划
- 搭建一个 nodejs 脚手架
- Canal Admin Web-UI 学习
- eclipse项目名旁边一个红xx,解决办法
- 计算机专业学生常用的软件,盘点学生党必备高效实用软件
- Python爬取斗鱼直播网站信息
- 关于arpg以及act游戏中怪物设定的一些思考
- 5分钟玩转Axure之中继器(表格篇)