1 一维网格索引
- 把整个数据库数值空间划分成n*n的正方形网格,建立另一个倒排文件——栅格索引
- 每一个网格在栅格索引中有一个索引条目(记录),在这个记录中登记所有位于或穿过该网格的物体的关键字
1.1 变长指针法
- 有三个制图物体:一条河流、一个湖泊和一条省界
- 它们的关键字分别为5,11和23。
- 河流穿过的栅格为2,34,35,67,68;湖泊覆盖的栅格为68,69,100,101;省界所通过的栅格为5,37,36,35,67,99,98,97
1.2 位图法
- 行index是网格index
- 列index是物体index
- 如果第j个物体经过第i行,那么第ij个元素为1
2 二维网格索引
- 将一维升至二维,变成X和Y方向上的编码
比如,[X1,Y1],[X2,Y2]是5的外包络矩形;[X3,Y3],[X4,Y4]是11的外包络矩形;[X5,Y5],[X6,Y6]是23的外包络矩形,那么:
在二维网格下是这样的
- X-3,Y-2位置 5号轨迹和23号轨迹都经过,所以出现了两行X-3,Y-2
2.1 外包络矩形
- 通常也被称为“边界矩形”或“最小外接矩形”
- 是指能够完全包围给定空间要素的最小矩形
- 换句话说,它是一个四边形,这个四边形包含了一个空间要素的所有点,并具有最小的面积。
- 这个矩形通常是与坐标轴平行的,所以它的边是水平或垂直的
- 通常使用外包络矩阵的左下角和右上角表示
3 栅格数据层
- 在栅格数据结构中,物体的空间位置就用其在笛卡尔平面网格中的行号和列号坐标表示,物体的属性用像元的取值表示
- 栅格中的每个像元是栅格数据中最基本的信息存储单元,其坐标位置可以用行号和列号确定
- 每个像元在一个网格中只能取值一次,同一像元要表示多重属性的事物就要用多个笛卡尔平面网格,每个笛卡尔平面网格表示一种属性或同一属性的不同特征,这种平面称为层
3.1 栅格数据取值方法
- 同一网格可能对应地图上多种专题属性,而每一个单元只允许取一个值,目前对于这种多重属性的网格,有不同的取值方法:
中心归属法:每个栅格单元的值以网格中心点对应的面域属性值来确定 | ![]() |
长度占优法:每个栅格单元的值以网格中线(水平或垂直)的大部分长度所对应的面域的属性值来确定 | ![]() |
面积占优法:每个栅格单元的值以在该网格单元中占据最大面积的属性值来确定 | ![]() |
重要性法:根据栅格内不同地物的重要性程度,选取特别重要的空间实体决定对应的栅格单元值,如稀有金属矿产区,其所在区域尽管面积很小或不位于中心,也应采取保留的原则 | ![]() |
3.2 栅格网络编码格
3.2.1 链式编码(弗里曼编码)
- 由某一原点开始并按某些基本方向确定的单位矢量链
- 基本方向可定义为:东=0,南=3,西=2,北=1
- 比如上图,原点为像元(10,1),则该多边形界按顺时方向的链式编码为
- 链式编码对多边形的表示具有很强的数据压缩能力,且具有一定的运算功能,如面积和周长计算等,探测边界急弯和凹进部分等都比较容易。
- 但是,叠置运算如组合、相交等则很难实施,除非还原成栅格结构方可,况且公共边界需要存储两次,从而产生多余的数据。
3.3 行程编码
3.3.1 (属性值,重复个数)
只在各行(或列)数据的代码发生变化时依次记录该代码以及相同代码重复的个数,即按(属性值,重复个数)编码
3.3.2(位置,属性值)
逐个记录各行(或列)代码发生变化的位置和相应的代码,即按(位置,属性值)编码
3.2.3 (起位,止位,属性值)
按行(或列)记录相同代码的始末像元的列号(或行号)和相应的代码,即按(起位,止位,属性值)编码