mysql 索引 r树_GIS空间数据库(16)R树索引
R树索引是一种高效的空间索引,它是B树在多维空间的扩展,也是平衡树。R树的结构类似于B+树的平衡树。
R树及其特点
对于一棵M阶的R树,R树中每个非叶子结点都由若干个(p,MBR)数据对组成。MBR(Minimal Boundary Rect)为包含其对应孩子的最小边界矩形。这个最小外接矩形是个广义上的概念,二维上是矩形,三维空间上就是长方体MBV(Minimum Bounding Volume),以此类推到高维空间。p是指向其对应该子结点的指针。
叶子结点则是由若干个(OI,MBR)组成,其中MBR为包含对应的空间对象的最小外接矩形。OI是空间对象的标号,通过该标号可以得到对应空间对象的详细的信息。
R树查找
伪代码如下:
Algorithm R_Search(N,W) {
/*在根结点为N的R树中查找所有与W相交的数据矩形*/
if (N.LEVEL==0) //N是叶子结点
// Return all data rectangles that intersect with W;
else //N不是叶子结点
for (i=1;i
if (N.MBRi;Intersect with W)
R_Search (N.pi,W);
}
R树插入
伪代码如下:
Algorithm R_Insert(N,P){
/*向根结点为N的R树中插入数据矩形P*/
if (N.LEVEL==0) {
Insert P into N;
if (N overfill) Split N;
}
else {//N是中间结点
// Choose the entry in N whose rectangle needs
// least area enlargement to include the new data rectangle.
// Resolve ties by choosing the entry with the rectangle of
// smallest area (Let's suppose it's entry is the answer)
R_Insert(N.pi,P);
// Adjust N.MBRi to enclose all rectangle in its child node;
}
}
R树删除
伪代码如下:
Algorithm R_Delete(N,P){
/*从根结点为N的R树中删除数据矩形P*/
if (N:LEVEL==0)
{//N是叶结点
if (N包含P)
{
// 从N中删除P
N.COUNT=N.COUNT-1;
return true;
}
else
return false;
}
else
{
for (i =1;i
if (N.MBRi intersects with P)
if (R_Delete(N.pi,P))
if (N.pi,COUNT=m)
// Adjust N.MBRi to enclose all child's rectangles;
else
{
// Reinsert all remain entries of N.pi and delete N.pi;
// if N underfilled, Reinsert alI
// remain entries of it and
// delete it too...;〗
}
}
}
地图对应的R树结构
mysql 索引 r树_GIS空间数据库(16)R树索引相关推荐
- mysql的R树_GIS笔记——R树:一种用于空间查找的动态索引结构(算是节译)
R树简介. R树是一种与B树类似的高度平衡树.这种索引是动态的,不需要定期重建.索引记录(Index Records)保存在叶节点中,索引记录包含指向数据对象的指针.注意原文中将索引的终端称为索引记录 ...
- 深入原理64式:16 B树,B+树与mysql索引
1 B树 1.1 基础知识 含义: 多路平衡查找树 阶: B树中所有结点的孩子结点数的最大值,用m表示 特点: 1) 树的每个结点至多有m棵子树(m-1个关键字) 2) 若根结点不是终端结点,则至少有 ...
- 面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来源:https://dwz.cn/exC8JdQS InnoDB的一棵B+树可以存放多少行数 ...
- 为什么 MySQL的常用引擎都默认使用 B+ 树作为索引?
一.前言 为了讲清楚这个问题,阿粉先带大家了解一下什么是索引. 我记得刚刚学习数据库的时候,老师喜欢用书本的目录来类比数据库的索引,并告诉我们索引能够像目录一样,让我们更快地找到想要找到的数据. 如果 ...
- R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理、比较误分类率指标
R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理.比较误分类率指标 目录
- r roc函数_一棵树专栏 | ROC分析时一定要告诉R分析谁
两个知名R包产生的矛盾嗨!大家好,我是一棵树,这是我第一次在解螺旋发文,还是蛮激动的.下面就开始吧!今天的主题是:ROC分析时一定要告诉R分析谁 用到的软件是:R语言 用到的R包是:pROC和ROCi ...
- 索引体积_第16期:索引设计(MySQL 的索引结构)
上一章讲了数据库基本上都用 B+ 树来存储索引的原因:适合磁盘存储,能够充分利用多叉平衡树的特性,磁盘预读,并且很好的支持等值,范围,顺序扫描等.这篇主要介绍 MySQL 两种常用引擎,MyISAM ...
- r语言 col_R语言绘制聚类树示例
R语言绘制聚类树示例层次聚类(hierarchical clustering)常见两种形式,"自底向上"的聚合策略(层次聚合)或"自顶向下"的分拆策略(层次分划 ...
- 【华为笔试】输入:A={11,13,15},B={12,14,16},R=1
前两天做华为的题,结果太菜,当天结束后,把第一题自己终于做出来了. 我要吐槽一下华为,笔试前一个半小时通知笔试,还和我小米笔试冲突了,结果还做的不好. 第一道题: 输入字符串:A={1,3,5},B= ...
- MySQL的存储引擎InnoDB选择了B+ 树
我们知道数据的存储和检索是两个很重要的功能,当我们的数据量大了,怎么能快速的检索数据呢,答案是使用索引,可索引具体的技术实现有很多,选择哪一种呢,我就以mysql为例记录下它为什么选择了B+树作为索引 ...
最新文章
- androidx FloatingActionButton 中间加载的图片显示黑色
- Ext JS图书风暴来袭!
- docker 分布式 lnmp 镜像制作
- 按主键更新另一个表oracle,SQL根据ID匹配从一个表更新到另一个表
- C\C++不经意间留下的知识空白------const使用
- centos桌面系统使用记录
- thinkphp6 加载第三方类库_thinkphp中第三方类引入问题
- 2010年中兴面试题
- Selenium下载页面上的图片
- office2016 64位下载链接
- matlab设置图片背景透明_MATLAB设置图片背景透明,和设定大小,适合论文中使用...
- exp oracle 904,9i exp时出现ORA-904、ORA-1003的解决过程
- 协方差矩阵的定义性质与python实现
- 怎么电脑计算机管理员去掉,电脑每次运行程序都要管理员身份怎么办?
- 写一篇讲解优芽动画知识的教案
- “旅行青蛙”游戏外挂藏风险 苹果:或至个人ID泄露
- JDBC基础操作汇总
- 关于Qt4K高分屏自适应问题
- NVIDIA显卡驱动及CUDA相关安装流程(包括多版本cuda切换)
- 二十一世纪“新元宇宙”奇幻小说作品系列连载
热门文章
- 数据--第47课 - 查找的概念
- .Net转Java自学之路—基础巩固篇二十二(XML)
- SpringMVC (三)处理器映射器的配置和AbstractController的使用
- 5.26. sysvmsg
- Linux 和 Windows 下实现多进程的方式以及管道操作
- OSPF 常见错误与排查方法
- MSSQL 同步两个数据库的示例
- StackExchange.Redis学习笔记(三) 数据库及密码配置 GetServer函数
- HDU 2014 - 青年歌手大奖赛_评委会打分
- python日记----2017.7.20