GIS原理课件4.8四叉树编码

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
44
44
4
44 44
4
44 44
4
44 44
4
44
按照MD码顺序,检查相邻四个单元的属性值, 相同则合并,存储最小MD码及属性值,不同则存储所有单元。
√ 检测上层相邻四个单元属性值,直到遍历所有单元。
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的wk.baidu.com性四叉树
MD码 0
属性值 0
《GIS原理》课程
第四章 空间数据的表达
东华理工大学 吴静
4.8 四叉树编码
Quadtree Coding
四叉树编码Quadtree Coding
柜子不那么小了!
节省存储空间!
找袜子也容易多了!
节省处理时间!
整理 压缩
小明的衣柜(整理后)
小明的衣柜
主要内容
四叉树的概念 常规四叉树
★ 线性四叉树
2
00
22002200
优点:便于前后寻址 缺点:增加了数据存储量及操作的复杂性 应用:数据索引、图幅索引
2.常规四叉树Ordinary Quadtree
常规四叉树的特点如下:
(1)运算量较大。因为,大量数 据需要重复检查才能确定划分; (如7、8、9、10等格网需要检 查4次)
(2)占用的存储空间较大。每个 结点需要六个变量才能加以表 达:一个变量表示父结点指针, 四个变量代表四个子结点指针, 一个变量代表本结点的灰度或 属性值。
44
4444
4
4444
44
4444
按照MD码顺序,检查相邻四个单元的属性值, 相同则合并,存储最小MD码及属性值,不同则存储所有单元。
检测上层相邻四个单元属性值,直到遍历所有单元。
3.线性四叉树Linear Quadtree
• 3.2 基于MD码的线性四叉树 ➢3.2.3 MD码应用
0 123 4 5 6 7
主要内容
四叉树的概念 常规四叉树
★ 线性四叉树
3.线性四叉树Linear Quadtree
• 为了克服常规四叉树占用存储空间大的缺点,人们提 出了线性四叉树的算法。线性四叉树只存储最后叶结 点的信息,即结点的位置、大小和灰度。叶结点位置 采用基于四进制或十进制的Morton码表示(加拿大学 者Morton于1966年提出);叶结点的大小用结点的深 度或层次表示。Morton码又称为M码。
码 Ib , Jb 分别为栅格单元行列号的二进制数。
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的线性四叉树
➢3.3.1 MD码求解
行号I= In-1 In-2 …. I1 I0 列号 J= Jn-1 Jnn--22 ….
J1 J0
二进制码
….
十进制码( MD ) MD = J0*20 + I0*21 + J1*22 + I1*23 + …. + Jn-2*22n-4 + In-2*22n-3 + Jn-1*22n-2+In-1*22n-1
01
2
00
00004444
22002200
2.常规四叉树Ordinary Quadtree
• 采用自上而下的分割方法,从顶层开始,先检测全区域, 如果其值不一致则四等分,直到数值一致为止。
◼ 如何存储常规四叉树? ◼ 属性值 ◼ 父节点指针(1个) ◼ 叶节点指针(4个)
根节点
结点

4
4
节 点
0
01
1.四叉树的概念Concept
➢四叉树分割的基本思想:首先把一幅图象 或一幅栅格地图等分成四部分,如果检查到 某个子区的所有格网都含有相同的值(灰度 或属性值),那么,这个子区域就不再往下 分割;否则,把这个区域再分割成四个子区 域,这样递归地分割,直至每个子块都只含 有相同的灰度或属性值为止。
1.四叉树的概念Concept
MD码 0 4 8 12 16 20 24 28 32 33 34 35 36 37 38
……
属性值
0 1 0 2 4 4 4 4 2 2 0 0 2 2 0 ……
栅格数据
00
0
00 00
0
00 22 00 00
0
00
11
1
11 22
2
22 22 00 00
0
00
44
4
44 44
4
44 44
4
44 44
• 通过逐次四等分的方法,将栅格数据分解为一系列单值的 方形区域。
00114444 00114444 00224444 00224444 22224444 00004444 00004444 00004444
主要内容
四叉树的概念 常规四叉树
线性四叉树
2.常规四叉树Ordinary Quadtree
3.线性四叉树Linear Quadtree
• 3.1 存储方式 只存储叶节点的信息!
➢叶节点的属性
➢深度 ➢位置
地址码
0层
0 1 2 3 根4 节5点 6 7
0
1
1层
2
4
3
2层 0 41
0
2

4
节 点
00
5
3层 6
22002200
7
四进制莫顿码(Morton码,简称:MQ码) 十进制莫顿码(Morton码,简称:MD码)
3.线性四叉树Linear Quadtree
• 3.2 基于MQ码的线性四叉树
➢3.2.1 MQ码求解
1)将十进制的行列号转换成二进制数 Ib , J b
2)按MQ码的计算公式 计算对应的MQ码
MQ = 2 Ib + Jb
步骤: 1)将十进制的行列号转换成二进制数
2)按MQ码的计算公式MQ =2 I b + J b计算对应的MQ
十进制
Morton码 13
十进制
2
3
行号
列号
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的线性四叉树 MD码 属性值
➢3.3.3 MD码应用
8
0
列0 1 2 3 4 5 6 7
12
2

0 1 10 M11 D1码00 101 110 111
16
4
20
4
0 0 0 1 4 5 16 17 20 21
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的线性四叉树 ➢3.3.3 MD码应用
MD码
0 1 4 5 16 17 20 21 2 3 6 7 18 19 22 23 8 9 12 13 24 25 28 29 10 11 14 15 26 27 30 31 32 33 36 37 48 49 52 53 34 35 38 39 50 51 54 55 40 41 44 45 56 57 60 61 42 43 46 47 58 59 62 63
36
2
37
2
38
0
39
0
栅格数据
00
0
00 00
0
00 22 00 00 00
11
1
11 22
2
22 22 00 00 00
44
4
44 44
4
44 44 44 44 44
44
4
44 44
4
44 44 44 44 44
将按照二M进D码制顺的序行,列检号查相两邻两四交个叉单元的属性值, 再相同将则其合转并换,为存储十最进小制M数D码及属性值,不同则存储所有单元。
32 33 34 35 36 37 38 ……
2 2 0 0 2 2 0 ……
栅格数据
00
0
00 00
0
00 22 00 00
0
00
11
1
11 22
2
22 22 00 00
0
00
44
4
44 44
4
44 44
4
44 44
4
44
44
4
44 44
4
44 44
4
44 44
4
44
按照MD码顺序,检查相邻四个单元的属性值, 相同则合并,存储最小MD码及属性值,不同则存储所有单元。
44
4444 4444
44
4444
按照MD码顺序,检查相邻四个单元的属性值, 相同则合并,存储最小MD码及属性值,不同则存储所有单元。
检测上层相邻四个单元属性值,直到遍历所有单元。
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的线性四叉树 ➢3.3.3 MD码应用
MD码
0 1 4 5 16 17 20 21 2 3 6 7 18 19 22 23 8 9 12 13 24 25 28 29 10 11 14 15 26 27 30 31 32 33 36 37 48 49 52 53 34 35 38 39 50 51 54 55 40 41 44 45 56 57 60 61 42 43 46 47 58 59 62 63
0 0 01 14 15 146 147 240 241 1 02 03 16 17 148 149 242 243 2 08 09 122 123 244 245 248 249 3 100 101 124 125 246 247 340 341 4 322 323 326 327 448 449 542 543 5 304 305 308 309 540 541 544 545 6 400 401 404 405 546 547 640 641 7 402 403 406 407 548 549 642 643
方法:将二进制的行列号两两交叉,再将其转换为十进制数。
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的线性四叉树
➢3.3.1 MD码求解
• 求第二行第三列的MD码
行号
列号
2
3
二进制
10
11
➢3.3.2 MD码反求行列号
• 已知MD码为13,求行列号
Morton码 13
二进制
1 10 1
MD码 0 4 8 12 16 32 33 34 35 36 37
…… 48 52 56 60
属性值
0 1 0 2 4 2 2 0 0 2 2 …… 4 4 4 4
栅格数据
00
0
00 00
0
00 22 00 00
0
00
11
1
11 22
2
22 22 00 00
0
00
4444
44
4444
4
4444
44
4444 4444
• 采用自上而下的分割方法,从顶层开始,先检测全区域, 如果其值不一致则四等分,直到数值一致为止。
00114444
根节点
WN EN 0 0 1 1 4 4 4 4
0 0 2 2 4 4 4 4 生成四叉树
结点
00224444
4

4
节 点
22224444
0
WS ES 0 0 0 0 4 4 4 4
00004444
➢3.3.3 MD码应用
4
1
8
0
MD码
12
2
0 1 4 5 16 17 20 21
16
4
2 3 6 7 18 19 22 23 8 9 12 13 24 25 28 29 10 11 14 15 26 27 30 31 32 33 36 37 48 49 52 53 34 35 38 39 50 51 54 55 40 41 44 45 56 57 60 61 42 43 46 47 58 59 62 63
√ 检测上层相邻四个单元属性值,直到遍历所有单元。
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的线性四叉树 ➢3.3.3 MD码应用
MD码
0 1 4 5 16 17 20 21 2 3 6 7 18 19 22 23 8 9 12 13 24 25 28 29 10 11 14 15 26 27 30 31 32 33 36 37 48 49 52 53 34 35 38 39 50 51 54 55 40 41 44 45 56 57 60 61 42 43 46 47 58 59 62 63
MD码 ……
28 32 33 34 35 36 37 38 39 40 44 48 52 56 60
属性值
…… 4 2 2 0 0 2 2 0 0 0 0 4 4 4 4
栅格数据
00
0
00 00
0
00 22 00 00
0
00
11
1
11 22
2
22 22 00 00
0
00
44
4
44 44
4
44 44
4
24
4
1 1 2 3 6 7 18 19 22 23
28
4
2 10 8 9 12 13 24 25 28 29 3 11 10 11 14 15 26 27 30 31 4 100 32 33 36 37 48 49 52 53
32
2
33
2
34
0
35
0
5 101 34 35 38 39 50 51 54 55 6 110 40 41 44 45 56 57 60 61 7 111 42 43 46 47 58 59 62 63
MD码 0 4 8 12 16 32 33 34 35 36 37 38 39 40 44 48
属性值
0 1 0 2 4 2 2 0 0 2 2 0 0 0 0 4
栅格数据
00
0
00 00
0
00 22 00 00
0
00
11
1
11 22
2
22 22 00 00
0
00
4444
44
4444
4
4444
44
4444 4444
44 44
4
44
44
4
44 44
4
44 44
4
44 44
4
44
按照MD码顺序,检查相邻四个单元的属性值, 相同则合并,存储最小MD码及属性值,不同则存储所有单元。
3.线性四叉树Linear Quadtree
• 3.3 基于MD码的线性四叉树 ➢3.3.3 MD码应用
MD码
0 1 4 5 16 17 20 21 2 3 6 7 18 19 22 23 8 9 12 13 24 25 28 29 10 11 14 15 26 27 30 31 32 33 36 37 48 49 52 53 34 35 38 39 50 51 54 55 40 41 44 45 56 57 60 61 42 43 46 47 58 59 62 63
相关文档
最新文档