索引文件除了存储记录本身(主文件)以外,还建立了若干索引表,这种带有索引表的 文件叫索引文件。索引表中列出记录关键字和记录在文件中的位置(地址)。读取记录时 只要提供记录的关键字值,系统通过查找索引表获得记录的位置,然后取出该记录。索引表 般都是经过排序的,既可以是有顺序的,也可以是非顺序的,可以是单级索引,也可以是 多级索引,多级索引可以提高查找速度,但占用的存储空间较大 3)直接文件 直接文件又称随机文件,其存储是根据记录关键字的值,通过某种转换方法得到一个物 理存储位置,然后把记录存储在该位置上。查找时,通过同样的转换方法,可以直接得到所 需要的记录 4)倒排文件 倒排文件是带有辅索引的文件,其中辅索引是按照一些辅关键字来组织索引的(注意: 索引文件是按照记录的主关键字来构造索引的,也叫主索引)。倒排文件是一种多关键字的 索引文件,其中的索引不能唯一标识记录,往往同一索引指向若干记录。因而,索引往往带 有一个指针表,指向所有该索引标识的记录。通过辅索引不能直接读取记录,而要通过主关 键字才能查到记录的位置。倒排文件的主要优点是在处理多索引检索时,可以在辅检索中先 完成查询的‘交’、‘并’等逻辑运算,得到结果后再对记录进行存取,从而提高查找速度 1.4GIS的内部数据结构—矢量结构和栅格结构 描述地理实体的数据本身的组织方法,称为内部数据结构。空间数据结构是指适合于计 算机系统存储、管理和处理的地学图形的逻辑结构,是地理实体的空间排列方式和相互关系 的抽象描述。它是对数据的一种理解和解释,不说明数据结构的数据是毫无用处的,不仅用 户无法理解,计算机程序也不能正确的处理。对同样的一组数据,按不同的数据结构去处理, 得到的可能是截然不同的内容。空间数据结构是地理信息系统沟通信息的桥梁,只有充分理 解地理信息系统所采用的特定数据结构,才能正确地使用系统 内部数据结构基本上可分为两大类:矢量结构和栅格结构(也可以称为矢量模型和栅格 模型)(图7-3)。两类结构都可用来描述地理实体的点、线、面三种基本类型 空间数据编码是空间数据结构的实现,即将根据地理信息系统的目的和任务所搜集的、 经过审核了的地形图、专题地图和遥感影像等资料按特定的数据结构转换为适合于计算机存 储和处理的数据的过程。由于地理信息系统数据量极大,一般采用压缩数据的编码方式以减 少数据冗余 在地理信息系统的空间数据结构中,栅格结构的编码方式主要有直接栅格编码、链码、 游程长度编码、块码、四叉树码等:矢量结构主要有坐标序列编码、树状索引编码和二元拓 扑编码等编码方法
索引文件除了存储记录本身(主文件)以外,还建立了若干索引表,这种带有索引表的 文件叫索引文件。索引表中列出记录关键字和记录在文件中的位置(地址)。读取记录时, 只要提供记录的关键字值,系统通过查找索引表获得记录的位置,然后取出该记录。索引表 一般都是经过排序的,既可以是有顺序的,也可以是非顺序的,可以是单级索引,也可以是 多级索引,多级索引可以提高查找速度,但占用的存储空间较大。 3)直接文件 直接文件又称随机文件,其存储是根据记录关键字的值,通过某种转换方法得到一个物 理存储位置,然后把记录存储在该位置上。查找时,通过同样的转换方法,可以直接得到所 需要的记录。 4)倒排文件 倒排文件是带有辅索引的文件,其中辅索引是按照一些辅关键字来组织索引的(注意: 索引文件是按照记录的主关键字来构造索引的,也叫主索引)。倒排文件是一种多关键字的 索引文件,其中的索引不能唯一标识记录,往往同一索引指向若干记录。因而,索引往往带 有一个指针表,指向所有该索引标识的记录。通过辅索引不能直接读取记录,而要通过主关 键字才能查到记录的位置。倒排文件的主要优点是在处理多索引检索时,可以在辅检索中先 完成查询的‘交’、‘并’等逻辑运算,得到结果后再对记录进行存取,从而提高查找速度。 1.4 GIS 的内部数据结构——矢量结构和栅格结构 描述地理实体的数据本身的组织方法,称为内部数据结构。空间数据结构是指适合于计 算机系统存储、管理和处理的地学图形的逻辑结构,是地理实体的空间排列方式和相互关系 的抽象描述。它是对数据的一种理解和解释,不说明数据结构的数据是毫无用处的,不仅用 户无法理解,计算机程序也不能正确的处理。对同样的一组数据,按不同的数据结构去处理, 得到的可能是截然不同的内容。空间数据结构是地理信息系统沟通信息的桥梁,只有充分理 解地理信息系统所采用的特定数据结构,才能正确地使用系统。 内部数据结构基本上可分为两大类:矢量结构和栅格结构(也可以称为矢量模型和栅格 模型)(图 7-3)。两类结构都可用来描述地理实体的点、线、面三种基本类型。 空间数据编码是空间数据结构的实现,即将根据地理信息系统的目的和任务所搜集的、 经过审核了的地形图、专题地图和遥感影像等资料按特定的数据结构转换为适合于计算机存 储和处理的数据的过程。由于地理信息系统数据量极大,一般采用压缩数据的编码方式以减 少数据冗余。 在地理信息系统的空间数据结构中,栅格结构的编码方式主要有直接栅格编码、链码、 游程长度编码、块码、四叉树码等;矢量结构主要有坐标序列编码、树状索引编码和二元拓 扑编码等编码方法
格、矢量数据结构 麻 A现实世界 ■s RR FFFF 房子 RR 河流 B量格表示形式 C矢量表示形式 图7-3:矢量结构和栅格结构 1.4.1矢量模型 在矢量模型中,现实世界的要素位置和范围可以采用点、线或面表达,与它们在地图上 表示相似,每一个实体的位置是用它们在坐标参考系统中的空间位置(坐标)定义。地图空 间中的每一位置都有唯一的坐标值。点、线和多边形用于表达不规则的地理实体在现实世界 的状态(多边形是由若干直线围成的封闭区域的边界)。一条线可能表达一条道路,一个多 边形可能表达一块林地等。矢量模型中的空间实体与要表达的现实世界中的空间实体具有一 定的对应关系。 1.4.2栅格模型 在栅格模型中,空间被规则地划分为栅格(通常为正方形)。地理实体的位置和状态是 用它们占据的栅格的行、列来定义的。每个栅格的大小代表了定义的空间分辨率。由于位置 是由栅格行列号定义的,所以特定的位置由距它最近的栅格记录决定。例如,某个区域被划 分成10*10个栅格,那么仅能记录位于这10*10个栅格附近的物体的位置。栅格的值表达了 这个位置上物体的类型或状态。采用栅格方法,空间被划分成大量规则格网,而且每个栅格 取值可能不一样。空间单元是栅格,每一个栅格对应于一个特定的空间位置,如地表的一个 区域,栅格的值表达了这个位置的状态。 与矢量模型不一样,栅格模型最小单元与它表达的真实世界空间实体没有直接的对应关 系。栅格数据模型中的空间实体单元不是通常概念上理解的物体,它们只是彼此分离的栅格。 例如,道路作为明晰的栅格是不存在的,栅格的值才表达了路是一个实体。道路是被具有道 路属性值的一组栅格表达的,这条路不可能通过某一栅格实体被识别出来。在这两种数据结 构中,空间信息都是使用统一的单位表达。在栅格方法中,统一的单位是栅格(栅格是不可
图 7-3:矢量结构和栅格结构 1.4.1 矢量模型 在矢量模型中,现实世界的要素位置和范围可以采用点、线或面表达,与它们在地图上 表示相似,每一个实体的位置是用它们在坐标参考系统中的空间位置(坐标)定义。地图空 间中的每一位置都有唯一的坐标值。点、线和多边形用于表达不规则的地理实体在现实世界 的状态(多边形是由若干直线围成的封闭区域的边界)。一条线可能表达一条道路,一个多 边形可能表达一块林地等。矢量模型中的空间实体与要表达的现实世界中的空间实体具有一 定的对应关系。 1.4.2 栅格模型 在栅格模型中,空间被规则地划分为栅格(通常为正方形)。地理实体的位置和状态是 用它们占据的栅格的行、列来定义的。每个栅格的大小代表了定义的空间分辨率。由于位置 是由栅格行列号定义的,所以特定的位置由距它最近的栅格记录决定。例如,某个区域被划 分成 10*10 个栅格,那么仅能记录位于这 10*10 个栅格附近的物体的位置。栅格的值表达了 这个位置上物体的类型或状态。采用栅格方法,空间被划分成大量规则格网,而且每个栅格 取值可能不一样。空间单元是栅格,每一个栅格对应于一个特定的空间位置,如地表的一个 区域,栅格的值表达了这个位置的状态。 与矢量模型不一样,栅格模型最小单元与它表达的真实世界空间实体没有直接的对应关 系。栅格数据模型中的空间实体单元不是通常概念上理解的物体,它们只是彼此分离的栅格。 例如,道路作为明晰的栅格是不存在的,栅格的值才表达了路是一个实体。道路是被具有道 路属性值的一组栅格表达的,这条路不可能通过某一栅格实体被识别出来。在这两种数据结 构中,空间信息都是使用统一的单位表达。在栅格方法中,统一的单位是栅格(栅格是不可
再分的,其属性用于表达对应位置物体的性质),表达一个区域所用栅格的数量很大,但其 栅格单元的大小一样。栅格数据文件包含有上百万个栅格,每个栅格的位置都被严格定义 在矢量方法中,统一的单元是点、线和多边形,与栅格方法相比,在数量上所用的表达单元 较少,但大小可变。在矢量文件中,元素的个数或许数千个,但毕竟没有栅格数据那么多。 同一类型的矢量单元的位置是用连续坐标值定义。矢量数据提供的坐标位置比栅格数据用 行、列号所表达位置更精确。这两种方法各有优缺点,究竟采用何种数据结构,取决于利用 数据的目的。有些地理现象用栅格数据表达更合适:有些地理现象则用矢量数据更有利,以 便表达它们之间的空间关系 2.栅格数据结构及其编码 2.1栅格数据结构 2.1.1定义 栅格结构是最简单最直接的空间数据结构,是指将地球表面划分为大小均匀紧密相邻的 网格阵列,每个网格作为一个象元或象素由行、列定义,并包含一个代码表示该象素的属性 类型或量值,或仅仅包括指向其属性记录的指针。因此,栅格结构是以规则的阵列来表示空 间地物或现象分布的数据组织,组织中的每个数据表示地物或现象的非几何属性特征。如图 7-4所示,在栅格结构中,点用一个栅格单元表示;线状地物沿线走向的一组相邻栅格单元 表示,每个栅格单元最多只有两个相邻单元在线上:面或区域用记有区域属性的相邻栅格单 元的集合表示,每个栅格单元可有多于两个的相邻单元同属一个区域。遥感影像属于典型的 栅格结构,每个象元的数字表示影像的灰度等级 000000000000000004477777 000000000006000044444777 000020000660600044448877 000000000000060000488877 00000000000006000088 00000000000006000008 00000000 0000000 (a)点 (b)线 图7-4:点、线、区域的格网 1.2特点 栅格结构的显著特点是:属性明显,定位隐含,即数据直接记录属性的指针或属性本身 而所在位置则根据行列号转换为相应的坐标,也就是说定位是根据数据在数据集中的位置得 到的。如图7-4-(a)所示,数据2表示属性或编码为2的一个点,其位置由其所在的第3 行、第4列交叉得到的。由于栅格结构是按一定的规则排列的,所表示的实体的位置很容易
再分的,其属性用于表达对应位置物体的性质),表达一个区域所用栅格的数量很大,但其 栅格单元的大小一样。栅格数据文件包含有上百万个栅格,每个栅格的位置都被严格定义。 在矢量方法中,统一的单元是点、线和多边形,与栅格方法相比,在数量上所用的表达单元 较少,但大小可变。在矢量文件中,元素的个数或许数千个,但毕竟没有栅格数据那么多。 同一类型的矢量单元的位置是用连续坐标值定义。矢量数据提供的坐标位置比栅格数据用 行、列号所表达位置更精确。这两种方法各有优缺点,究竟采用何种数据结构,取决于利用 数据的目的。有些地理现象用栅格数据表达更合适;有些地理现象则用矢量数据更有利,以 便表达它们之间的空间关系。 2.栅格数据结构及其编码 2.1 栅格数据结构 2.1.1 定义 栅格结构是最简单最直接的空间数据结构,是指将地球表面划分为大小均匀紧密相邻的 网格阵列,每个网格作为一个象元或象素由行、列定义,并包含一个代码表示该象素的属性 类型或量值,或仅仅包括指向其属性记录的指针。因此,栅格结构是以规则的阵列来表示空 间地物或现象分布的数据组织,组织中的每个数据表示地物或现象的非几何属性特征。如图 7-4 所示,在栅格结构中,点用一个栅格单元表示;线状地物沿线走向的一组相邻栅格单元 表示,每个栅格单元最多只有两个相邻单元在线上;面或区域用记有区域属性的相邻栅格单 元的集合表示,每个栅格单元可有多于两个的相邻单元同属一个区域。遥感影像属于典型的 栅格结构,每个象元的数字表示影像的灰度等级。 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 6 6 0 6 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 6 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 4 4 7 4 4 4 4 7 7 7 7 4 7 7 7 4 4 4 4 8 8 7 7 0 0 4 8 8 8 7 7 0 0 8 8 0 0 0 8 8 8 7 8 8 8 8 8 0 0 0 0 8 8 8 8 0 0 0 0 0 8 8 8 (a)点 (b)线 (c)面 图 7-4:点、线、区域的格网 2.1.2 特点 栅格结构的显著特点是:属性明显,定位隐含,即数据直接记录属性的指针或属性本身, 而所在位置则根据行列号转换为相应的坐标,也就是说定位是根据数据在数据集中的位置得 到的。如图 7-4-(a)所示,数据 2 表示属性或编码为 2 的一个点,其位置由其所在的第 3 行、第 4 列交叉得到的。由于栅格结构是按一定的规则排列的,所表示的实体的位置很容易
隐含在格网文件的存储结构中,在后面讲述栅格结构编码时可以看到,每个存储单元的行列 位置可以方便地根据其在文件中的记录位置得到,且行列坐标可以很容易地转为其他坐标系 下的坐标。在格网文件中每个代码本身明确地代表了实体的属性或属性的编码,如果为属性 的编码,则该编码可作为指向实体属性表的指针。图74(a)表示了代码为2的点实体 图7-4-(b)表示了一条代码为6的线实体,而图74(c)则表示了三个面实体或称为区域 实体,代码分别为4、7和8。由于栅格行列阵列容易为计算机存储、操作和显示,因此这 种结构容易实现,算法简单,且易于扩充、修改,也很直观,特别是易于同遥感影像的结合 处理,给地理空间数据处理带来了极大的方便。 栅格结构表示的地表是不连续的,是量化和近似离散的数据。在栅格结构中,地表被分 成相互邻接、规则排列的矩形方块(特殊的情况下也可以是三角形或菱形、六边形等),每 个地块与一个栅格单元相对应。栅格数据的比例尺就是栅格大小与地表相应单元大小之比。 在许多栅格数据处理时,常假设栅格所表示的量化表面是连续的,以便使用某些连续函数。 由于栅格结构对地表的量化,在计算面积、长度、距离、形状等空间指标时,若栅格尺寸较 大,则造成较大的误差,由于在一个栅格的地表范围内,可能存在多于一种的地物,而表示 在相应的栅格结构中常常是一个代码。也类似于遥感影像的混合象元问题,如 Land sat的 MSS卫星影像单个象元对应地表79米*79米的矩形区域,影像上记录的光谱数据是每个象 元所对应的地表区域内所有地物类型的光谱辐射的总和效果。因而,这种误差不仅有形态上 的畸形,还可能包括属性方面的偏差 2.2决定栅格单元代码的方式 在决定栅格代码时尽量保持地表的真实性,保证最大的信息容量。图7-5所示的一块矩 形地表区域,内部含有A、B、C三种地物类型,O点为中心点,将这个矩形区域近似地表 示为栅格结构中的一个栅格单元时,可根据需要,采取如下的方式之一来决定栅格单元的代 码 图7-5:栅格单元代码的确定 2.2.1中心点法 用处于栅格中心处的地物类型或现象特性决定栅格代码,在图7-5所示的矩形区域中 中心点O落在代码为C的地物范围内,按中心点法的规则,该矩形区域相应的栅格单元代 码为C,中心点法常用于具有连续分布特性的地理要素,如降雨量分布、人口密度图等 2.2.2面积占优法 以占矩形区域面积最大的地物类型或现象特性决定栅格单元的代码,在图7-5所示的例
隐含在格网文件的存储结构中,在后面讲述栅格结构编码时可以看到,每个存储单元的行列 位置可以方便地根据其在文件中的记录位置得到,且行列坐标可以很容易地转为其他坐标系 下的坐标。在格网文件中每个代码本身明确地代表了实体的属性或属性的编码,如果为属性 的编码,则该编码可作为指向实体属性表的指针。图 7-4-(a)表示了代码为 2 的点实体, 图 7-4-(b)表示了一条代码为 6 的线实体,而图 7-4-(c)则表示了三个面实体或称为区域 实体,代码分别为 4、7 和 8。由于栅格行列阵列容易为计算机存储、操作和显示,因此这 种结构容易实现,算法简单,且易于扩充、修改,也很直观,特别是易于同遥感影像的结合 处理,给地理空间数据处理带来了极大的方便。 栅格结构表示的地表是不连续的,是量化和近似离散的数据。在栅格结构中,地表被分 成相互邻接、规则排列的矩形方块(特殊的情况下也可以是三角形或菱形、六边形等),每 个地块与一个栅格单元相对应。栅格数据的比例尺就是栅格大小与地表相应单元大小之比。 在许多栅格数据处理时,常假设栅格所表示的量化表面是连续的,以便使用某些连续函数。 由于栅格结构对地表的量化,在计算面积、长度、距离、形状等空间指标时,若栅格尺寸较 大,则造成较大的误差,由于在一个栅格的地表范围内,可能存在多于一种的地物,而表示 在相应的栅格结构中常常是一个代码。也类似于遥感影像的混合象元问题,如 Landsat 的 MSS 卫星影像单个象元对应地表 79 米*79 米的矩形区域,影像上记录的光谱数据是每个象 元所对应的地表区域内所有地物类型的光谱辐射的总和效果。因而,这种误差不仅有形态上 的畸形,还可能包括属性方面的偏差。 2.2 决定栅格单元代码的方式 在决定栅格代码时尽量保持地表的真实性,保证最大的信息容量。图 7-5 所示的一块矩 形地表区域,内部含有 A、B、C 三种地物类型,O 点为中心点,将这个矩形区域近似地表 示为栅格结构中的一个栅格单元时,可根据需要,采取如下的方式之一来决定栅格单元的代 码。 图 7-5:栅格单元代码的确定 2.2.1 中心点法 用处于栅格中心处的地物类型或现象特性决定栅格代码,在图 7-5 所示的矩形区域中, 中心点 O 落在代码为 C 的地物范围内,按中心点法的规则,该矩形区域相应的栅格单元代 码为 C,中心点法常用于具有连续分布特性的地理要素,如降雨量分布、人口密度图等。 2.2.2 面积占优法 以占矩形区域面积最大的地物类型或现象特性决定栅格单元的代码,在图 7-5 所示的例
子中,显见B类地物所占面积最大,故相应栅格代码定为B。面积占优法常用于分类较细, 地物类别斑块较小的情况。 2.2.3重要性法 根据栅格内不同地物的重要性,选取最重要的地物类型决定相应的栅格单元代码,假设 图7-5中A类最重要的地物类型,即A比B和C类更为重要,则栅格单元的代码应为A 重要性法常用于具有特殊意义而面积较小的地理要素,特别是点、线状地理要素,如城镇、 交通枢纽、交通线、河流水系等,在栅格中代码应尽量表示这些重要地物。 2.2.4百分比法 根据矩形区域内各地理要素所占面积的百分比数确定栅格单元的代码,如可记面积最大 的两类BA,也可以根据B类和A类所占面积百分比数在代码中加入数字 2.3编码方法 2.3.1直接栅格编码 这是最简单直观而又非常重要的一种栅格结构编码方法,通常称这种编码的图像文件为 网格文件或栅格文件,栅格结构不论采用何种压缩编码方法,其逻辑原型都是直接编码网格 文件。直接编码就是将栅格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每 行都从左到右逐个象元记录,也可以奇数行地从左到右而偶数行地从右向左记录,为了特定 目的还可采用其他特殊的顺序(图7-6)。 行主序 Peano-Hilbert 对角线 螺旋
子中,显见 B 类地物所占面积最大,故相应栅格代码定为 B。面积占优法常用于分类较细, 地物类别斑块较小的情况。 2.2.3 重要性法 根据栅格内不同地物的重要性,选取最重要的地物类型决定相应的栅格单元代码,假设 图 7-5 中 A 类最重要的地物类型,即 A 比 B 和 C 类更为重要,则栅格单元的代码应为 A。 重要性法常用于具有特殊意义而面积较小的地理要素,特别是点、线状地理要素,如城镇、 交通枢纽、交通线、河流水系等,在栅格中代码应尽量表示这些重要地物。 2.2.4 百分比法 根据矩形区域内各地理要素所占面积的百分比数确定栅格单元的代码,如可记面积最大 的两类 BA,也可以根据 B 类和 A 类所占面积百分比数在代码中加入数字。 2.3 编码方法 2.3.1 直接栅格编码 这是最简单直观而又非常重要的一种栅格结构编码方法,通常称这种编码的图像文件为 网格文件或栅格文件,栅格结构不论采用何种压缩编码方法,其逻辑原型都是直接编码网格 文件。直接编码就是将栅格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每 行都从左到右逐个象元记录,也可以奇数行地从左到右而偶数行地从右向左记录,为了特定 目的还可采用其他特殊的顺序(图 7-6)