正文

1.点四叉树(Point Quadtree)

2.PR四叉树(Point Region Quadtree)

3.MX四叉树

4.基于固定网格划分的四叉树索引

5.线性可排序四叉树索引

在GIS中,四叉树索引又分为很多种类,包括点四叉树、PR四叉树、MX四叉树等,本文这里做一个简单的介绍。

1.点四叉树(Point Quadtree)

点四叉树与KD树相似,两者的差别是在点四叉树中,空间被分割成四个矩形。四个不同的多边形分别是:SW、NW、SE、NE。其搜索过程和KD树相似,当一个点包含在搜索范围内时被记录下来,当一个子树和搜索范围有交叠时它将被穿过。下图:点四叉树示意图

2.PR四叉树(Point Region Quadtree)

PR四叉树是点四叉树的一个变种,它不使用数据集中的点来分割空间。在PR四叉树中,每次分割空间时,都是将一个正方形分成四个相等的子正方形,依次进行,直到每个正方形的内容不超过所给定的桶量(比如一个对象)为止。下图:PR四叉树

3.MX四叉树

空间被分割成四个矩形。四个不同的多边形分别是:SW、NW、SE、NE。每次分割空间时,都是将一个正方形分成四个相等的子正方形,依次进行,直到每个正方形的内容不超过所给定的桶量(比如一个对象)为止。

所有的数据都处在四叉树的同一个深度,多个点可以由一个指针联接。

4.基于固定网格划分的四叉树索引

先看下图:

非叶结点数:MAX_NONLEAFNODE_NUM=∑N−1i=04i

叶结点数:MAX_LEAFNODE_NUM=2^N×2^N=4N

非叶结点从四叉树的根结点开始编号:

从0到MAX_NONLEAFNODE_NUM-1

叶子结点则从MAX_NONLEAFNODE_NUM开始编号,

直到MAX_NONLEAFNODE_NUM+MAX_LEAFNODE_NUM-1

在四叉树中,空间要素标识记录在其外包络矩形所覆盖的每一个叶结点中,但是,当同一父亲的四个兄弟结点都要记录该空间要素标识时,则只将该空间要素标识记录在该父亲结点上,并按这一规则向上层推进。

5.线性可排序四叉树索引

·首先将四叉树分解为二叉树,即在父结点层与子结点层之间插入一层虚结点,虚结点不用来记录空间要素,然后按照中序遍历树的顺序对结点进行编码,包括加入的虚结点。

假设某个结点位于四叉树的第N层,可排序四叉树编码为Index。它的四个子结点位于树的第N-1层,编码从左到右分别为:Index_C1=Index-3×4×(N-1)

Index_C2=Index-4×(N-1)

Index_C3=Index+4×(N-1)

Index_C4=Index+3×4×(N-1)

通过编码值很容易确定结点在树中的层数。在进行查询时,给定一个查询范围,假定为矩形,这个矩形范围唯一的对应一个四叉树结点。通过结点的编码,可以快速计算出在这棵子树下的所有子结点。

找子结点的范围的程序伪代码如下:

GetIndexRange(long Index,long Min,long Max){ long n = GetLayerNum(Index); Min = Max = Index;     While(n>0) { Min = Min- 3×4×(n-1); Max = Max-3×4×(n-1); n = n –1;

分享到:

四叉树 gis java_GIS中四叉树索引及其分类介绍 | 麻辣GIS相关推荐

  1. ES2中关于索引模板的操作

    文章目录 前言 一. 创建一个新的索引模板 二. 查看索引模板 1. 查看所有模板 2. 查看指定的模板 3. 模糊匹配 4. 批量查询 三. 删除指定模板 四.修改模板(相当于整体替换,重置) 五. ...

  2. 地图(Gis)中的坐标系

    地图(Gis)中的坐标系 文章目录 地图(Gis)中的坐标系 前言 1.什么是坐标系(地图投影) 1.1坐标系介绍 1.2地理坐标系 1.3投影坐标系 1.4为什么要有这么多坐标系 1.5什么是EPS ...

  3. 一种高效的基于线性四叉树编码的多级网格索引

    目前主流GIS平台厂商的空间数据库引擎,用的基本是四叉树,R树等索引,主要是供海量的空间数据存储和显示用的,以我的理解(我不负责空间数据引擎,了解有限),它们最重要的功能是:传入一个正交查询区域(矩形 ...

  4. MySQL中索引的分类和基本操作

    索引的作用:是用于快速定位实际数据位置的一种机制. 索引在mysql中,是独立于数据的一种特殊的数据结构. 一.索引的分类 普通索引:利用特定的关键字,标识数据记录的位置(磁盘上的位置,盘号,柱面,扇 ...

  5. java类索引_java中索引的分类,图片详解

    java的学习是一个漫长而又循环往复不断上升的过程,今天我们再来看一下java索引的分类,并且通过详细的图片解析. 首先,java中的索引主要分为聚簇索引和非聚簇索引. 其中InnoDB主键使用的是聚 ...

  6. PostgreSQL中的索引—6(SP-GiST)

    目录 SP-GiST 架构 示例:四叉树 内部构件 示例:k维树 内部构件 示例:基数树 内部构件 属性 NULL 其他数据类型 我们已经介绍了Postgresql索引引擎.访问方法接口和三种方法:哈 ...

  7. postgresql索引_PostgreSQL中的索引— 6(SP-GiST)

    postgresql索引 indexing engine, 索引引擎 , the interface of access methods, and three methods: 访问方法的接口以及三种 ...

  8. mysql5.6 函数索引_聊聊MySQL中的索引

    关于MySQL中的索引使用 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题. 索引的存储分类: 1.B-Tree索引:最常见的索引类型,大部分引擎都支 ...

  9. MySQL中的索引详讲

    转载自 https://www.cnblogs.com/whgk/p/6179612.html 序言 之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下 ...

  10. sqlserver中 事物 索引及视图

      事务1.什么是事务事务是一个不可分割的工作逻辑单元,它包含了一组数据库的操作命令,并且所有命令作为一个整体一起向系统提交或撤销操作请求,即要么都执行,要么都不执行2.事务的4个属性(1).原子性( ...

最新文章

  1. linux下Tomcat+OpenSSL配置单向双向认证(自制证书)
  2. CIKM2021 知识图谱、推荐系统相关论文
  3. %00截断攻击的探索
  4. Java面试宝典之开源框架!
  5. MySQL 常用运算符
  6. matlab里插入行和列
  7. C语言实现控制台中光标随意移动
  8. python 中参数*args, **kwargs
  9. 通过PHP的Curl函数模拟Post获取内容
  10. 推荐一个非常好用的进程管理器
  11. linux fedora frebsd centos linux as 安装出错
  12. python代码模板
  13. java微信项目开发教程,Java+微信公众号开发过程步骤详解
  14. 2019年上半年系统分析师上午真题及答案解析
  15. 《人月神话》-第19章-20年后的《人月神话》
  16. 云服务器 架设传奇_怎么架设传奇服务器?
  17. html5写自我介绍,一分钟标签式自我介绍4篇
  18. 微信小程序——车牌键盘组件实现
  19. leetcodeLCP 19. 秋叶收藏集/动态规划
  20. 免安装版(解压缩版)MySQL安装

热门文章

  1. 考研计算机网络必考考点,计算机专业考研计算机网络考点汇总
  2. 什么是前端以及前端的重要性
  3. 菜鸟html代码在线,html菜鸟教程,HTML新手如何快速入门
  4. 正负数据如何归一化_数据归一化和两种常用的归一化方法
  5. silic php 马,Silic PHP大马Cookie欺骗漏洞
  6. 从金蝶k3到金税盘_金蝶k3怎样结转主营业务成本
  7. docker学习 主流的pass平台(体验的是设计模式)
  8. 屏幕共享软件都有什么功能呢?
  9. 我在51CTO微职位学PMP_飘过攻略及心得分享
  10. kafka下载及安装