Transcript Document
地理信息系统导论 第七章 空间数据管理 1.空间数据库 地理信息系统的内容及其功能与一般管理 信息系统的区别,是数据具有空间分布的性质。 对地理信息系统来讲,不仅数据本身具有空间 属性,系统的分析和应用也无不与地理环境直 接关联。系统的这一基本特征,深刻地影响着 数据的结构、数据库的设计、分析算法和软件, 以及系统的输入和输出。 1.空间数据库 • 1.1地理信息系统与一般信息系统的比较 • 1.1.1 两者的区别 • 1)在硬件上,为了处理图形和图像数据, 系统需要配置专门的输入和输出设备,如 数字化仪、绘图机、图形图像的显示设备 等。 • 2)在软件上,则要求研制专门的图形和 图像数据的分析算法和处理软件,这些算 法和软件又直接和数据的结构及数据库的 管理方法有关。 1.空间数据库 • 3)在信息处理的内容和采用目的方面,一般 的管理信息系统,主要是查询检索和统计分析, 处理的结果,大多是制成某种规定格式的表格 数据,而地理信息系统,除了基本的信息检索 和统计分析外,主要用于分析研究资源的合理 开发利用,制定区域发展规划,地区的综合治 理方案,对环境进行动态的监视和预测预报, 为国民经济建设中的决策提供科学依据,为生 产实践提供信息和指导。 1.空间数据库 • 1.1.2 两者共同之处 • 两者都是以计算机为核心的信息处理系统,都具 有数据量大和数据之间关系复杂的特点,也都随 着数据库技术的发展在不断的改进和完善。 1.空间数据库 • 1.2 空间数据库 • 1.2.1 数据库的概念 • 数据库就是为一定目的服务,以特定的数据存储 的相关联的数据集合,它是数据管理的高级阶段, 是从文件管理系统发展而来的。为了直观地理解 数据库,可以把数据库作如下比较: 表7-1:数据库与图书馆比较 1.空间数据库 • • • • 1.2.2 空间数据库特点 1)数据量特别大 2)不仅有属性数据,还有大量的空间数据 3)数据应用广泛 1.空间数据库 • 1.2.3 数据库管理系统 • 数据库管理系统是在文件处理系统的基础上进 一步发展的系统。DBMS在用户应用程序和数据 文件之间起到了桥梁作用。DBMS的最大优点是 提供了两者之间的数据独立性,即应用程序访 问数据文件时,不必知道数据文件的物理存储 结构。当数据文件的存储结构改变时,不必改 变应用程序。 1.空间数据库 • 2)GIS数据管理方法主要4种类型 • (2.1)对不同的应用模型开发独立的数据 管理服务,这是一种基于文件管理的处理方 法。 • (2.2)在商业化的DBMS基础上开发附加 系统。开发一个附加软件用于存储和管理空 间数据和空间分析,使用DBMS管理属性数 据。 1.空间数据库 • (2.3)使用现有的DBMS,通常是以DBMS为 核心,对系统的功能进行必要扩充,空间数 据和属性数据在同一个DBMS管理之下。需要 增加足够数量的软件和功能来提供空间功能 和图形显示功能。 • (2.4)重新设计一个具有空间数据和属性 数据管理和分析功能的数据库系统。 1.空间数据库 • 1.3数据与文件组织 • 数据是现实世界中信息的载体,是信息的 具体表达形式,为了表达有意义的信息内 容,数据必须按照一定的方式进行组织和 存储。 • 1.3.1数据组织的分级 • 数据库中的数据组织一般可以分为四级: 数据项、记录、文件和数据库。 1.空间数据库 • 1.3.2数据间的逻辑联系 • 数据间的逻辑联系主要是指记录与记录之间 的联系。记录是表示现实世界中的实体的。 实体之间存在着一种或多种联系,这样的联 系必然要反映到记录之间的联系上来。数据 之间的逻辑联系主要有三种:一对一的联系; 一对多的联系;多对多的联系。 1.空间数据库 • 1.3.3常用数据文件 • 图7-1:非顺序文件 • 操作系统实现的文件组织方式,可以分为顺序文件、索引文 件、直接文件和倒排文件。 1.空间数据库 • 1)顺序文件 • 顺序文件(图7-2)是最简单的文件组织形式,对记 录按照主关键字的顺序进行组织。 图7-2:顺序文件 1.空间数据库 • 2)索引文件 • 索引文件除了存储记录本身(主文件)以外, 还建立了若干索引表,这种带有索引表的文 件叫索引文件。索引表中列出记录关键字和 记录在文件中的位置(地址)。读取记录时, 只要提供记录的关键字值,系统通过查找索 引表获得记录的位置,然后取出该记录。 1.空间数据库 • 3)直接文件 • 直接文件又称随机文件,其存储是根据记录关键 字的值,通过某种转换方法得到一个物理存储位 置,然后把记录存储在该位置上。查找时,通过 同样的转换方法,可以直接得到所需要的记录。 • 4)倒排文件 • 倒排文件是带有辅索引的文件,其中辅索引是按 照一些辅关键字来组织索引的(注意:索引文件 是按照记录的主关键字来构造索引的,也叫主索 引)。倒排文件是一种多关键字的索引文件,其 中的索引不能唯一标识记录,往往同一索引指向 若干记录。 1.空间数据库 • 1.4 GIS的内部数据结构 • 内部数据结构基本上可分为两大类:矢量结 构和栅格结构(也可以称为矢量模型和栅格 模型)(图7-3)。两类结构都可用来描述 地理实体的点、线、面三种基本类型。 1.空间数据库 • 在地理信息系统的空间数据结构中,栅格 结构的编码方式主要有直接栅格编码、链 码、游程长度编码、块码、四叉树码等; 矢量结构主要有坐标序列编码、树状索引 编码和二元拓扑编码等编码方法。 1.空间数据库 图7-3:矢量结构和栅格结构 1.空间数据库 • 1.4.1矢量模型 • 在矢量模型中,现实世界的要素位置和范 围可以采用点、线或面表达,与它们在地 图上表示相似,每一个实体的位置是用它 们在坐标参考系统中的空间位置(坐标) 定义。点、线和多边形用于表达不规则的 地理实体在现实世界的状态。 • 矢量模型中的空间实体与要表达的现实世 界中的空间实体具有一定的对应关系。 1.空间数据库 • 1.4.2栅格模型 • 在栅格模型中,地理实体的位置和状态是用它 们占据的栅格的行、列来定义的。每个栅格的 大小代表了定义的空间分辨率。由于位置是由 栅格行列号定义的,所以特定的位置由距它最 近的栅格记录决定。栅格的值表达了这个位置 上物体的类型或状态。采用栅格方法,空间被 划分成大量规则格网,而且每个栅格取值可能 不一样。空间单元是栅格,每一个栅格对应于 一个特定的空间位置,如地表的一个区域,栅 格的值表达了这个位置的状态。 2.栅格数据结构及其编码 • • • • 2.栅格数据结构及其编码 2.1栅格数据结构 2.1.1定义 栅格结构是最简单最直接的空间数据结构,是 指将地球表面划分为大小均匀紧密相邻的网格 阵列,每个网格作为一个象元或象素由行、列 定义,并包含一个代码表示该象素的属性类型 或量值,或仅仅包括指向其属性记录的指针。 因此,栅格结构是以规则的阵列来表示空间地 物或现象分布的数据组织,组织中的每个数据 表示地物或现象的非几何属性特征。 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 2 0 0 0 0 0 (a)点 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 6 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 6 0 0 0 0 0 (b)线 0 0 0 6 6 6 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 4 4 0 0 0 0 0 4 4 4 0 0 0 0 0 4 4 4 4 8 0 0 0 7 4 4 8 8 8 0 0 7 4 8 8 8 8 8 0 (c)面 图7-4:点、线、区域的格网 7 7 8 8 8 8 8 8 7 7 7 7 7 8 8 8 7 7 7 7 8 8 8 8 2.栅格数据结构及其编码 • 2.1.2 特点 • 栅格结构的显著特点是:属性明显,定位隐 含,即数据直接记录属性的指针或属性本身, 而所在位置则根据行列号转换为相应的坐标, 也就是说定位是根据数据在数据集中的位置 得到的。这种结构容易实现,算法简单,且 易于扩充、修改,也很直观,特别是易于同 遥感影像的结合处理,给地理空间数据处理 带来了极大的方便。 2.栅格数据结构及其编码 • 2.2决定栅格单元代码的方式 • 在决定栅格代码时尽量保持地表的真实性,保证最 大的信息容量。图7-5所示的一块矩形地表区域,内 部含有A、B、C三种地物类型,O点为中心点,将这 个矩形区域近似地表示为栅格结构中的一个栅格单 元时,可根据需要,采取如下的方式之一来决定栅 格单元的代码。 • 图7-5:栅格单元代码的确定 2.栅格数据结构及其编码 • 2.2.1中心点法 • 用处于栅格中心处的地物类型或现象特性决定 栅格代码,在图7-5所示的矩形区域中,中心 点O落在代码为C的地物范围内,按中心点法 的规则,该矩形区域相应的栅格单元代码为C, 中心点法常用于具有连续分布特性的地理要素, 如降雨量分布、人口密度图等。 2.栅格数据结构及其编码 • 2.2.2面积占优法 • 以占矩形区域面积最大的地物类型或现象特性 决定栅格单元的代码,在图7-5所示的例子中, 显见B类地物所占面积最大,故相应栅格代码 定为B。面积占优法常用于分类较细,地物类 别斑块较小的情况。 2.栅格数据结构及其编码 • 2.2.3重要性法 • 根据栅格内不同地物的重要性,选取最重要 的地物类型决定相应的栅格单元代码,假设 图7-5中A类最重要的地物类型,即A比B和C 类更为重要,则栅格单元的代码应为A。重 要性法常用于具有特殊意义而面积较小的地 理要素,特别是点、线状地理要素,如城镇、 交通枢纽、交通线、河流水系等,在栅格中 代码应尽量表示这些重要地物。 2.栅格数据结构及其编码 • 2.2.4百分比法 • 根据矩形区域内各地理要素所占面积的百分 比数确定栅格单元的代码,如可记面积最大 的两类BA,也可以根据B类和A类所占面积 百分比数在代码中加入数字。 2.栅格数据结构及其编码 • 2.3 编码方法 • 2.3.1 直接栅格编码 • 直接编码就是将栅格数据看作一个数据矩 阵,逐行(或逐列)逐个记录代码,可以 每行都从左到右逐个象元记录,也可以奇 数行地从左到右而偶数行地从右向左记录, 为了特定目的还可采用其他特殊的顺序 (图7-6)。 2.栅格数据结构及其编码 图7-6:一些常用的栅格排列顺序 2.栅格数据结构及其编码 • 2.3.2 压缩编码方法 • 目前有一系列栅格数据压缩编码方法,如键 码、游程长度编码、块码和四叉树编码等。 其目的,就是用尽可能少的数据量记录尽可 能多的信息,其类型又有信息无损编码和信 息有损编码之分。 2.栅格数据结构及其编码 • 1)链码(Chain Codes) • 链码又称为弗里曼链码[Freeman]或边界链 码,优点,链码可以有效地压缩栅格数据, 而且对于估算面积、长度、转折方向的凹凸 度等运算十分方便,比较适合于存储图形数 据。缺点是对边界进行合并和插入等修改编 辑工作比较困难,对局部的修改将改变整体 结构,效率较低,而且由于链码以每个区域 为单位存储边界,相邻区域的边界将被重复 存储而产生冗余。 2.栅格数据结构及其编码 • 2)游程长度编码 • 游程长度编码是栅格数据压缩的重要编码方 法,它的基本思路是:对于一幅栅格图像, 常常有行(或列)方向上相邻的若干点具有 相同的属性代码,因而可采取某种方法压缩 那些重复的记录内容。 2.栅格数据结构及其编码 • 3)块码 • 块码是游程长度编码扩展到二维的情况,采 用方形区域作为记录单元,每个记录单元包 括相邻的若干栅格,数据结构由初始位置 (行、列号)和半径,再加上记录单位的代 码组成。 2.栅格数据结构及其编码 • 4)四叉树 • 四叉树又称四元树或四分树,是最有效的栅格数据压 缩编码方法之一,绝大部分图形操作和运算都可以直 接在四叉树结构上实现,因此四叉树编码既压缩了数 据量,又可大大提高图形操作的效率。四叉树将整个 图像区逐步分解为一系列被单一类型区域内含的方形 区域,最小的方形区域为一个栅格象元,分割的原则 是,将图像区域划分为四个大小相同的象限,而每个 象限又可根据一定规则判断是否继续等分为次一层的 四个象限,其终止判据是,不管是哪一层上的象限, 只要划分到仅代表一种地物或符合既定要求的少数几 种地物时,则不再继续划分,否则一直划分到单个栅 格象元为止。 2.栅格数据结构及其编码 0 4 4 7 7 7 7 7 0 4 4 7 7 7 7 7 4 4 4 4 4 7 7 7 4 4 4 4 4 7 7 7 4 4 4 4 8 8 7 7 4 4 4 4 8 8 7 7 0 0 4 8 8 8 7 7 0 0 4 8 8 8 7 7 0 0 8 8 8 8 7 8 0 0 8 8 8 8 7 8 0 0 0 8 8 8 8 8 0 0 0 8 8 8 8 8 0 0 0 0 8 8 8 8 0 0 0 0 8 8 8 8 0 0 0 0 0 8 8 8 0 0 0 0 0 8 8 8 (a)块码分割 (b)四叉树分割 2.栅格数据结构及其编码 (c)b的四叉树编码 图7-7:四叉树编码 2.栅格数据结构及其编码 • 四叉树编码具有可变的分辨率,并且有区域 性质,压缩数据灵活,许多运算可以在编码 数据上直接实现,大大地提高了运算效率, 是优秀的栅格压缩编码之一。 3.矢量数据结构及其编码 • 3.1矢量数据结构 • 3.1.1定义 • 矢量结构,即通过记录坐标的方式尽可能精 确地表示点、线、多边形等地理实体,坐标 空间设为连续,允许任意位置、长度和面积 的精确定义。 3.矢量数据结构及其编码 • 3.1.2 特点 • 矢量结构的特点是:定位明显、属性隐含, 其定位是根据坐标直接存储的,而属性则 一般存于文件头或数据结构中某些特定的 位置上。 3.矢量数据结构及其编码 • 这种特点使得其图形运算的算法总体上比栅 格数据结构复杂的多,有些甚至难以实现, 当然有些地方也有所便利和独到之处,在计 算长度、面积、形状和图形编辑、几何变换 操作中,矢量结构有很高的效率和精度,而 在叠加运算、邻域搜索等操作时则比较困难。 3.矢量数据结构及其编码 • 3.2 编码方法 • 3.2.1 点实体 • 3.2.2 线实体 图7-8:(a)点实体的编码,(b)线实体的编码 3.矢量数据结构及其编码 • 3.2.3 多边形 • 1)坐标序列法(Spaghetti方式) • 图7-9:坐标序列法表示的多边形 3.矢量数据结构及其编码 • 坐标序列法文件结构简单,易于实现以多边形为单位的 运算和显示。这种方法的缺点是: • (1.1)多边形之间的公共边界被数字化和存储两次, 由此产生冗余和碎屑多边形; • (1.2)每个多边形自成体系而缺少邻域信息,难以 进行邻域处理,如消除某两个多边形之间的共同边界; • (1.3)岛只作为一个单个的图形建造,没有与外包 多边形的联系; • (1.4)不易检查拓扑错误。这种方法可用于简单的 粗精度制图系统中。 3.矢量数据结构及其编码 • 2)树状索引编码法 • 该法采用树状索引以减少数据冗余并间接增加邻域信息,方 法是对所有边界点进行数字化,将坐标对以顺序方式存储, 由点索引与边界线号相联系,以线索引与各多边形相联系, 形成树状索引结构。 图7-10:线与多边形之间的树状索引 3.矢量数据结构及其编码 图7-11:点与边界线之间的树状索引 3.矢量数据结构及其编码 • 3)拓扑结构编码法 • 要彻底解决邻域和岛状信息处理问题必须建立 一个完整的拓扑关系结构,这种结构应包括以 下内容:唯一标识,多边形标识,外包多边形 指针,邻接多边形指针,边界链接,范围(最 大和最小x、y坐标值)。采用拓扑结构编码 可以较好地解决空间关系查询等问题,但增加 了算法的复杂性和数据库的大小。 3.矢量数据结构及其编码 • 矢量编码最重要的是信息的完整性和运算的 灵活性,这是由矢量结构自身的特点所决定 的,目前并无统一的最佳的矢量结构编码方 法,在具体工作中应根据数据的特点和任务 的要求而灵活设计。 4.矢栅结构的比较及转换算法 • 4.1栅格结构与矢量结构的比较 • 栅格结构与矢量结构似乎是两种截然不同的空间数据 结构,栅格结构“属性明显、位置隐含”,而矢量结 构“位置明显、属性隐含”,栅格数据操作总的来说 比较容易实现,尤其是作为斑块图件的表示更易于为 人们接受;而矢量数据操作则比较复杂,许多分析操 作(如两张地图的覆盖操作,点或线状地物的邻域搜 索等)用矢量结构实现十分困难,矢量结构表达线状 地物是比较直观的,而面状地物则是通过对边界的描 述而表达。 4.矢栅结构的比较及转换算法 • 无论哪种结构,数据精度和数据量都是一对矛 盾,要提高精度,栅格结构需要更多的栅格单 元,而矢量结构则需记录更多的线段结点。一 般来说,栅格结构只是矢量结构在某种程度上 的一种近似,如果要使栅格结构描述的图件取 得与矢量结构同样的精度,甚至仅仅在量值上 接近,则数据也要比后者大得多。 4.矢栅结构的比较及转换算法 表7-2:矢量格式与栅格格式的比较 4.矢栅结构的比较及转换算法 • 4.2 相互转换算法 • 矢量结构与网格结构的相互转换,是地 理信息系统的基本功能之一,目前已经 发展了许多高效的转换算法;但是,从 栅格数据到矢量数据的转换,特别是扫 描图像的自动识别,仍然是目前研究的 重点。 4.矢栅结构的比较及转换算法 • 点状实体,每个实体仅由一个坐标对表示, 其矢量结构和栅格结构的相互转换基本上只 是坐标精度变换问题,不存在太大的技术问 题。线实体的矢量结构由一系列坐标对表示, 在变为栅格结构时,除把序列中坐标对变为 栅格行列坐标外,还需根据栅格精度要求, 在坐标点之间插满一系列栅格点,这也容易 由两点式直线方程得到。线实体由栅格结构 变为矢量结构与将多边形边界表示为矢量结 构相似,因此以下重点讨论多边形(面实体) 的矢量结构与栅格结构相互转换。 4.矢栅结构的比较及转换算法 • 4.2.1 矢量格式向栅格格式的转换 • 矢量格式向栅格格式转换又称为多边形填充, 就是在矢量表示的多边形边界内部的所有栅 格点上赋以相应的多边形编码,从而形成类 似图7-4的栅格数据阵列。 • 几种主要的算法描述如下: 4.矢栅结构的比较及转换算法 • 1)内部点扩散算法 • 该算法由每个多边形一个内部点(种子点)开始,向 其八个方向的邻点扩散,判断各个新加入点是否在多 边形边界上,如果是边界上,则该新加入点不作为种 子点,否则把非边界点的邻点作为新的种子点与原有 种子点一起进行新的扩散运算,并将该种子点赋以该 多边形的编号。重复上述过程直到所有种子点填满该 多边形并遇到边界停止为止。扩散算法程序设计比较 复杂,并且在一定的栅格精度上,如果复杂图形的同 一多边形的两条边界落在同一个或相邻的两个栅格内, 会造成多边形不连通,这样一个种子点不能完成整个 多边形的填充。 4.矢栅结构的比较及转换算法 • 2)复数积分算法 • 对全部栅格阵列逐个栅格单元地判断该栅格归属的多 边形编码,判别方法是由待判点对每个多边形的封闭 边界计算复数积分,对某个多边形,如果积分值为 2r,则该待判点属于此多边形,赋以多边形编号, 否则在此多边形外部,不属于该多边形。 4.矢栅结构的比较及转换算法 • 3)射线算法和扫描算法 • 射线算法可逐点判断数据栅格点在某多边形之外 或在多边形内,由待判点向图外某点引射线,判 断该射线与某多边形所有边界相交的总次数,如 相交偶数次,则待判点在该多边形外部,如为奇 数次,则待判点在该多边形内部(图7-12)。采 用射线算法,要注意的是:射线与多边形边界相 交时,有一些特殊情况会影响交点的个数,必须 予以排除(图7-13)。 4.矢栅结构的比较及转换算法 • 扫描算法是射线算法的改进,将射线改为沿栅格阵列列 或行方向扫描线,判断与射线算法相似。扫描算法省去 了计算射线与多边形边界交点的大量运算,大大提高了 效率。 图7-12:射线算法 4.矢栅结构的比较及转换算法 图7-13:射线算法的特殊情况 4.矢栅结构的比较及转换算法 • 4)边界代数算法 • 边界代数多边形填充算法是一种基于积分思想的矢量格 式向栅格格式转换算法,它适合于记录拓扑关系的多边 形矢量数据转换为栅格结构。图7-15表示转换单个多 边形的情况,多边形编号为a,模仿积分求多边形区域 面积的过程,初始化的栅格阵列各栅格值为零,以栅格 行列为参考坐标轴,由多边形边界上某点开始顺时针搜 索边界线,当边界上行时(图7-15-a),位于该边界左 侧的具有相同行坐标的所有栅格被减去a;当边界下行 时(图7-15-b),该边界左边(前进方向看为右侧) 所有栅格点加一个值a,边界搜索完毕则完成了多边形 的转换。 4.矢栅结构的比较及转换算法 图7-15:单个多边形的转换 4.矢栅结构的比较及转换算法 图7-16:多个多边形的转换 4.矢栅结构的比较及转换算法 • 边界代数法与前述其他算法的不同之处,在 于它不是逐点判断与边界的关系完成转换, 而是根据边界的拓扑信息,通过简单的加减 代数运算将边界位置信息动态地赋给各栅格 点,实现了矢量格式到栅格格式的高速转换, 而不需要考虑边界与搜索轨迹之间的关系, 因此算法简单、可靠性好,各边界弧段只被 搜索一次,避免了重复计算。 4.矢栅结构的比较及转换算法 • 4.2.2 栅格格式向矢量格式的转换 • 多边形栅格格式向矢量格式转换就是提取 以相同的编号的栅格集合表示的多边形区 域的边界和边界的拓扑关系,并表示由多 个小直线段组成的矢量格式边界线的过程。 4.矢栅结构的比较及转换算法 • • • • • • 1)转换步骤 栅格格式向矢量格式转换包括以下四个步骤: (1.1)多边形边界提取 (1.2)边界线追踪 (1.3)拓扑关系生成 (1.4)去除多余点及曲线圆滑 4.矢栅结构的比较及转换算法 • 2)多边形栅格转矢量的双边界搜索算法 • 算法的基本思想是通过边界提取,将左右多边 形信息保存在边界点上,每条边界弧段由两个 并行的边界链组成,分别记录该边界弧段的左 右多边形编号。边界线搜索采用2*2栅格窗口, 在每个窗口内的四个栅格数据的模式,可以唯 一地确定下一个窗口的搜索方向和该弧段的拓 扑关系,极大地加快了搜索速度,拓扑关系也 很容易建立。 4.矢栅结构的比较及转换算法 • • • • 具体步骤如下: (2.1)边界点和结点提取 (2.2)边界线搜索与左右多边形信息记录 (2.3)多余点去除 5.空间索引机制 • 5.1 索引概念 • 空间索引就是指依据空间对象的位置和形状 或空间对象之间的某种空间关系按一定的顺 序排列的一种数据结构,其中包含空间对象 的概要信息,如对象的标识、外接矩形及指 向空间对象实体的指针。 5.空间索引机制 • 5.2索引类型 • 5.2.1 格网型空间索引 • 格网型空间索引思路比较简单了,容易理解和 实现。其基本思想是将研究区域用横竖线条划 分大小相等和不等的格网,记录每一个格网所 包含的空间实体。当用户进行空间查询时,首 先计算出用户查询对象所在格网,然后再在该 网格中快速查询所选空间实体,这样一来就大 大地加速了空间索引的查询速度。 5.空间索引机制 • 5.2.2 BSP树空间索引 • BSP树是一种二叉树,它将空间逐级进行一分 为二的划分(图7-19)。BSP树能很好地与空 间数据库中空间对象的分布情况相适应,但对 一般情况而言,BSP树深度较大,对各种操作 均有不利影响。 5.空间索引机制 图7-19:BSP树 5.空间索引机制 • 5.2.3 KDB树空间索引 • KDB树是B树向多维空间的一种发展。它对 于多维空间中的点进行索引具有较好的动态 特性,删除和增加空间点对象也可以很方便 地实现;其缺点是不直接支持占据一定空间 范围的地物要素,如二维空间中的线和面。 5.空间索引机制 • 5.2.4 R树和R+树 • R树根据地物的最小外包矩形建立(图720),可以直接对空间中占据一定范围的空 间对象进行索引。R树的每一个结点N都对应 着磁盘页D(N)和区域I(N),如果结点 不是叶结点,则该结点的所有子结点的区域 都在区域I(N)的范围之内,而且存储在磁 盘页D(N)中;如果结点是叶结点,那么磁 盘页D(N)中存储的将是区域I(N)范围 内的一系列子区域,子区域紧紧围绕空间对 象,一般为空间对象的外接矩形。 5.空间索引机制 图7-20:R树 5.空间索引机制 图7-21:R+树 5.空间索引机制 • 5.2.5 CELL树 • 考虑到R树和R+在插入、删除和空间搜索效率两方面 难于兼顾,CELL树应运而生。它在空间划分时不再 采用矩形作为划分的基本单位,而是采用凸多边形 来作为划分的基本单位,具体划分方法与BSP树有类 似之处,子空间不再相互覆盖。 图7-22:CELL树 6.空间信息查询 • 目前大多数成熟的商品化地理信息系统软件 的查询功能都可完美地实现对空间实体的简 单查找。该查询工作可分为两步:首先借助 于空间索引,在空间数据库中快速检索出被 选空间实体;然后,根据空间数据和属性数 据的连接即可得到该空间实体的属性列表。 6.空间信息查询 • 6.1基于属性特征查询 • 一般来说,基于属性信息的查询操作主要是在 属性数据库中完成的。目前大多数的地理信息 系统软件都将属性信息存储在关系数据库中, 而发展成熟的关系数据库又为我们提供了完备 的数据索引方法及信息查询手段。利用SQL, 我们可以在属性数据库中很方便地实现属性信 息的复合条件查询,筛选出满足条件的空间实 体的标识值,再到空间数据库中根据标识值检 索到该空间实体。 6.空间信息查询 • 6.2基于空间关系和属性特征的查询空间 实体间有着许多空间关系(包括拓扑、顺序、 度量等关系)。在实际应用过程中,用户往往 希望地理信息系统提供一些更能直接计算空间 实体关系的功能。就目前成熟的地理信息系统 而言,比较系统地完成上述查询任务还较为困 难。为此,众多的地理信息系统专家提出了 “空间查询语言”(Spatial Query Language) 以作为解决问题的方案,但仍处于理论发展和 技术探索阶段。 6.空间信息查询 • 6.3一种空间扩展SQL查询语言——GeoSQL • 查询、检索是地理信息系统中使用最频繁的功 能之一,GIS用户提出的大部分问题都可以表 达为查询形式,即空间查询语言不仅可以使 GIS用户方便地访问、查询和处理空间数据, 也可以实现空间数据的安全性和完整性控制。 相对于一般SQL,空间扩展SQL 主要增加了空 间数据类型和空间操作算子,以满足空间特征 的查询。 6.空间信息查询 • GeoSQL的实现过程如图7-23所示。 用户界面 空间数据库 调用 GeoSQL 文本 解译程序 空间 ODBC 查询结果(图、表)