赞
踩
目录
6.4.2. ORACLE SPATIAL空间数据存储解决方案
空间数据库(地图数据库)是地理信息系统的重要组成部分,因为地图是地理信息系统的主要载体。 地理信息系统是一种以地图为基础,供资源、环境以及区域调查、规划、管理和决策用的空间信息系统。 在数据获取过程中,空间数据库用于存贮和管理地图信息; 在数据处理系统中,它既是资料的提供者,也可以是处理结果的归宿处; 在检索和输出过程中,它是形成绘图文件或各类地理数据的数据源。 然而,地理与地图数据以其惊人的数据量与空间相关的复杂性,使得通用的数据库系统难以胜任。 为此,就要用当代的系统方法,在地理学、地图学原理的指导下,对地理环境进行科学的认识与抽象, 将地理数据库化为计算机处理时所需的形式与结构,形成综合性的信息系统,为越来越广泛的社会部门与领域服务。
数据库的英文是 DATABASE,其意义为数据基地,即统一存贮和集中管理数据的基地。 这有些类似资料库,实际上资料库的许多特征都可以从数据库中找到。 在资料库中,各类资料都有严格的分类系统和编码表,并存放在规定的资料架上,为管理和查找资料提供了极大的方便。 当资料的数据形式存放于计算机时,它已经失去直观性,更需要建立严密的分类和编码系统,实现数据的标准化和规范化。
数据库系统是运用计算机技术管理数据的最新成就,在这之前,计算机数据管理经历了文件管理方式时期,亦称为文件管理系统,包含在计算机的操作系统中。文件管理系统的特点是:
1. 数据文件是大量数据的集合形式。每个文件包含有大量的记录,每个记录包含若干个甚至多达几十个以上的数据项。文件和文件名面向用户并存贮在计算机的贮存设备上,可以反复利用。 1. 面向用户的数据文件,用户可通过它进行查询、修改、插入、删除等操作。 1. 数据文件与对应的程序具有一定的独立性,即程序员可以不关心数据的物理存贮状态,只需考虑数据的逻辑存贮结构,从而可以大量地节省修改和维护程序的工作量。 1. 数据文件的缺点是只能对应于一个或几个应用程序,不能摆脱程序的依赖性。数据文件之间不能建立关系,呈现出无结构的信息集合状态,往往冗余度大,不易扩充、维护和修改。
数据库管理系统(DBMS)是在文件管理系统的基础上进一步发展的系统。DBMS在用户应用程序和数据文件之间起到了桥梁作用。 DBMS的最大优点是提供了两者之间的数据独立性。即应用程序访问数据文件时,不必知道数据文件的物理存贮结构。 当数据文件的存贮结构改变时,不必改变应用程序。数据库管理系统的特点可概括如下:
(1)数据管理方式建立在复杂的数据结构设计的基础上,将相互关联的数据集文件一并赋于某种固有的内在联系。各个相关文件可以通过公共数据项联系起来。
(2)数据库中的数据完全独立,不仅是物理状态的独立,而且是逻辑结构的独立,即程序访问的数据只需提供数据项名称。
(3)数据共享成为现实,数据库系统的并发功能保证了多个用户可以同时使用同一个数据文件,而且数据处于安全保护状态。
(4)数据的完整性,有效性和相容性保证其冗余度最小,有利于数据的快速查询和维护。
综合上述,我们可以把与数据库有关的几个概念理解为: 数据库是存贮在计算机内的有结构的数据集合;数据库管理系统是一个软件,用以维护数据库、接受并完成用户对数据库的一切操作;数据库系统指由硬件设备、软件系统、专业领域的数据体和管理人员构成的一个运行系统。
数据模型是描述数据内容和数据之间联系的工具,它是衡量数据库能力强弱的主要标志之一。数据库设计的核心问题之一就是设计一个好的数据模型。目前在数据库领域,常用的数据模型有:层次模型、网络模型、关系模型以及最近兴起的面向对象模型。下面以两个简单的空间实体为例(图6-1),简述这几个数据模型中的数据组织形式及其特点。
层次模型
层次数据库模型是用树形结构来表示实体间联系的模型。它将数据组织成一对多(或双亲与子女)关系的结构,其特点为:(1)有且仅有一个结点无双亲,这个结点即树的根;(2)其它结点有且仅有一个双亲。对于图6-1所示多边形地图可以构造出图6-2所示的层次模型。
层次数据库结构特别适用于文献目录、土壤分类、部门机构等分级数据的组织。例如全国—省—县—乡是一棵十分标准的有向树,其中“全国”是根节点,省以下的行政区划单元都是子节点。这种数据模型的优点是层次和关系清楚,检索路线明确。
层次模型不能表示多对多的联系,这是令人遗憾的缺陷。在GIS中,若采用这种层次模型将难以顾及公共点、线数据共享和实体元素间的拓扑关系,导致数据冗余度增加,而且给拓扑查询带来困难。
网络模型
用丛结构(或网结构)来表示实体及其联系的模型就是网络模型。在该模型中,各记录类型间可具有任意个连接关系。一个子结点可有多个父结点;可有一个以上的结点无父特点;父结点与某个子结点记录之间可以有多种联系(一对多、多对一、多对多)。图6-3是图6-1的网络模型。网络数据库结构特别适用于数据间相互关系非常复杂的情况,除了上面说的图形数据外,不同企业部门之间的生产、消耗联系也可以很方便地用网状结构来表示。网络数据库结构的缺点是:由于数据间联系要通过指针表示,指针数据项的存在使数据量大大增加,当数据间关系复杂时指针部分会占大量数据库存贮空间。另外,修改数据库中的数据,指针也必须随着变化。因此,网络数据库中指针的建立和维护可能成为相当大的额外负担。
关系模型
关系模型的基本思想是用二维表形式表示实体及其联系。 二维表中的每一列对应实体的一个属性,其中给出相应的属性值,每一行形成一个由多种属性组成的多元组,或称元组(tupple),与一特定实体相对应。 实体间联系和各二维表间联系采用关系描述或通过关系直接运算建立。 元组(或记录)是由一个或多个属性(数据项)来标识,这一个或一组属性称为关键字,一个关系表的关键字称为主关键字,各关键字中的属性称为元属性。 关系模型可由多张二维表形式组成,每张二维表的“表头”称为关系框架,故关系模型即是若干关系框架组成的集合。 如图6-1所示的多边形地图,可用表6-1所示关系表示多边形与边界及结点之间的关系。
关系模型中应遵循以下条件:
二维表中同一列的属性是相同的;
赋予表中各列不同名字(属性名);
二维表中各列的次序是无关紧要的;
没有相同内容的元组,即无重复元组;
元组在二维表中的次序是无关紧要的。
关系数据库结构的最大优点是它的结构特别灵活,可满足所有用布尔逻辑运算和数学运算规则形成的询问要求; 关系数据还能搜索、组合和比较不同类型的数据,加入和删除数据都非常方便。关系模型用于设计地理属性数据的模型较为适宜。 因为在目前,地理要素之间的相互联系是难以描述的,只能独立地建立多个关系表, 例如:地形关系,包含的属性有高度、坡度、坡向,其基本存贮单元可以是栅格方式或地形表面的三角面; 人口关系,含的属性有人的数量、男女人口数、劳动力、抚养人口数等。基本存贮单元通常是对应于某一级的行政区划单元。
关系数据库的缺点是许多操作都要求在文件中顺序查找满足特定关系的数据,如果数据库很大的话,这一查找过程要花很多时间。搜索速度是关系数据库的主要技术标准,也是建立关系数据库花费高的主要原因。
面向对象的定义是指无论怎样复杂的事例都可以准确地由一个对象表示。每个对象都是包含了数据集和操作集的实体,即是说,面向对象的模型具有封装性的特点。
面向对象的概念
(1)对象与封装性(Encapsulation)
面向对象的系统中,每个概念实体都可以模型化为对象。对于多边形地图上的一个结点、一条弧段、一条河流、一个区域或一个省都可看成对象。一个对象是由描述该对象状态的一组数据和表达它的行为的一组操作(方法)组成的。例如,河流的坐标数据描述了它的位置和形状,而河流的变迁则表达了它的行为。由此可见,对象是数据和行为的统一体。
一个对象object可定义成一个三元组:
object=(ID,S,M)
其中,ID为对象标识,M为方法集,S为对象的内部状态,它可以直接是一属性值,也可以是另外一组对象的集合,因而它明显地表现出对象的递归。
(2)分类(Classification)
类是关于同类对象的集合,具有相同属性和操作的对象组合在一起。属于同一类的所有对象共享相同的属性项和操作方法,每个对象都是这个类的一个实例,即每个对象可能有不同的属性值。可以用一个三元组来建立一个类型:
class=(CID,CS,CM)
其中,CID为类标识或类型名,CS为状态描述部分,CM 为应用于该类的操作。显然有,
S∈CS 和 M=CM 当object∈class时
因此,在实际的系统中,仅需对每个类型定义一组操作,供该类中的每个对象应用。由于每个对象的内部状态不完全相同,所以要分别存储每个对象的属性值。
例如,一个城市的GIS中,包括了建筑物、街道、公园、电力设施等类型。而洪山路一号楼则是建筑物类中的一个实例,即对象。建筑物类中可能有建筑物的用途、地址、房主、建筑日期等属性,并可能需要显示建筑物、更新属性数据等操作。每个建筑物都使用建筑物类中操作过程的程序代码,代入各自的属性值操作该对象。
(3)概括(Generalization)
在定义类型时,将几种类型中某些具有公共特征的属性和操作抽象出来,形成一种更一般的超类。例如,将GIS中的地物抽象为点状对象、线状对象、面状对象以及由这三种对象组成的复杂对象,因而这四种类型可以作为GIS中各种地物类型的超类。
比如,设有两种类型:Class1=(CID1,CSA,CSB,CMA,CMB)、Class2=(CID2,CSA,CSC,CMA,CMC)。
Class1和Class2中都带有相同的属性子集CSA和操作子集CMA,并且CSA∈CS1和 CSA∈CS2及 CMA∈CM1和 CMA∈CM2,因而将它们抽象出来,形成一种超类Superclass =(SID,CSA,CMA),这里的SID为超类的标识号。
在定义了超类以后,Class1和Class2可表示为:Class1=(CID1,CSB,CMB)、Class2=(CID2,CSC,CMC)。此时,Class1和Class2称为Superclass的子类(Subclass)。
例如,建筑物是饭店的超类,因为饭店也是建筑物。子类还可以进一步分类,如饭店类可以进一步分为小餐馆、普通旅社、宾馆、招待所等类型。所以,一个类可能是某个或某几个超类的子类,同时又可能是几个子类的超类。
建立超类实际上是一种概括,避免了说明和存储上的大量冗余。由于超类和子类的分开表示,所以就需要一种机制,在获取子类对象的状态和操作时,能自动得到它的超类的状态和操作。这就是面向对象方法中的模型工具——继承,它提供了对世界简明而精确的描述,以利于共享说明和应用的实现。
(4)联合(Association)
在定义对象时,将同一类对象中的几个具有相同属性值的对象组合起来,为了避免重复,设立一个更高水平的对象表示那些相同的属性值。
假设有两个对象:Object1=(ID1,SA,SB,M)、Object2=(ID2,SA,SC,M)。
其中,这两个对象具有一部分相同的属性值,可设立新对象Object3包含Object1和Object2。Object3 =(ID3,SA,Object1,Object2,M),此时,Object1和Object2可变为:Object1=(ID1,SB,M)、Object2=(ID2,SC,M)。
Object1和Object2称为“分子对象”,它们的联合所得到的对象称为“组合对象”。联合的一个特征是它的分子对象应属于一个类型。
(5)聚集(Aggregation)
聚集是将几个不同特征的对象组合成一个更高水平的对象。每个不同特征的对象是该复合对象的一部分,它们有自己的属性描述数据和操作,这些是不能为复合对象所公用的,但复合对象可以从它们那里派生得到一些信息。例如,弧段聚集成线状地物或面状地物,简单地物组成复杂地物。
例如,设有两种不同特征的分子对象:Object1 =(ID1,S1,M1)、Object2 =(ID2,S2,M2)。
用它们组成一个新的复合对象:Object3 =(ID3,S3,Object1(Su),Object2(Sv),M3)。
其中Su∈S1,SV∈S2,从式中可见,复合对象Object3拥有自己的属性值和操作,它仅是从分子对象中提取部分属性值,且一般不继承子对象的操作。
在联合和聚集这两种对象中,是用“传播”作为传递子对象的属性到复杂对象的工具。 即是说,复杂对象的某些属性值不单独存于数据库中,而是从它的子对象中提取或派生。 例如,一个多边形的位置坐标数据,并不直接存于多边形文件中,而是存于弧段和结点文件中,多边形文件仅提供一种组合对象的功能和机制,通过建立聚集对象,借助于传播的工具可以得到多边形的位置信息。
GIS中的面向对象模型
(1)空间地物的几何数据模型
GIS中面向对象的几何数据模型如图6-4所示。 从几何方面划分,GIS的各种地物可抽象为:点状地物、线状地物、面状地物以及由它们混合组成的复杂地物。 每一种几何地物又可能由一些更简单的几何图形元素构成。 例如,一个面状地物是由周边弧段和中间面域组成,弧段又涉及到结点和中间点坐标。 或者说,结点的坐标传播给弧段,弧段聚集成线状地物或面状地物,简单地物组成复杂地物。
(2)拓扑关系与面向对象模型
通常地物之间的相邻、关联关系可通过公共结点、公共弧段的数据共享来隐含表达。 在面向对象数据模型中,数据共享是其重要的特征。将每条弧段的两个端点(通常它们与另外的弧段公用)抽象出来, 建立应该单独的结点对象类型,而在弧段的数据文件中,设立两个结点子对象标识号,即用“传播”的工具提取结点文件的信息,如图6-5所示。
这一模型既解决了数据共享问题,又建立了弧段与结点的拓扑关系。 同样,面状地物对弧段的聚集方式与数据共享、几何拓扑关系的建立亦达到一致。
(3)面向对象的属性数据模型
关系数据模型和关系数据库管理系统基本上适应于GIS中属性数据的表达与管理。 若采用面向对象数据模型,语义将更加丰富,层次关系也更明了。 可以说,面向对象数据模型是在包含关系数据库管理系统的功能基础上,增加面向对象数据模型的封装、继承、信息传播等功能。
下面是以土地利用管理GIS为例的面向对象的属性数据模型,如图6-6所示。
GIS中的地物可根据国家分类标准或实际情况划分类型。 如土地利用管理GIS的目标可分为耕地、园地、林地、牧草地、居民点、交通用地、水域、和未利用地等几大类,地物类型的每一大类又可以进一步分类, 如居民点可再分为城镇、农村居民点、工矿用地等子类。 另外,根据需要还可将具有相同属性和操作的类型综合成一个超类。 例如工厂、农场、商店、饭店属于产业,它有收入和税收等属性,可把它们概括成一个更高水平的超类——产业类。 由于产业可能不仅与建筑物有关,还可能包含其它类型如土地等。所以可将产业类设计成一个独立的类,通过行政管理数据库来管理。 在整个系统中,可采用双重继承工具,当要查询饭店类的信息时,既要能够继承建筑物类的属性与操作,又要继承产业类的属性与操作。
属性数据管理中也需用到聚集的概念和传播的工具。 例如,在饭店类中,可能不直接存储职工总人数、房间总数和床位总数等信息,它可能从该饭店的子对象职员数据库、房间床位数据库等数据库中派生得到。
地图数据是一个基于空间参考的数据,它以定点、定线或定面的方式与地球表面建立位置联系。 图象数据如遥感数据等,图形数据如普遍地图、专题地图等,地理统计数据以及环境监测数据等,均是地图数据的重要代表。
空间物体是地图数据的首要组成部分,此外,地图数据还要包括发生在不同时间与地点的地理事物与现象。 因此,地图数据包括三个主要信息范畴:空间数据、非空间数据和时间因素。
空间数据
根据空间数据的几何特点,地图数据可分为点数据、线数据、面数据和混合性数据四种类型。 其中混合性数据由点状、线状与面状物体组成的更为复杂的地理实体或地理单元。 空间数据的一个重要特点是它含有拓扑关系,即网结构元素中结点、弧段和面域之间的邻接,关联与包括等关系。这是地理实体之间的重要空间关系,它从质的方面或从总体方面反映了地理实体之间的结构关系。
综上所述,空间数据的主要内容包括:
空间定位——能确定在什么地方有什么事物或发生什么事情;
空间量度——能计算诸如物体的长度、面积、物体之间的距离和相对方位等;
空间结构——能获得物体之间的相互关系,对于空间数据处理来说,物体本身的信息固然重要,而物体之间的关系信息(如分布关系、拓扑关系等)都是空间数据处理中所特别关心的事情,因为它涉及全面问题的解决;
空间聚合——空间数据与各种专题信息相结合,实现多介质的图、数和文字信息的集成处理,为应用部门、区域规划和决策部门提供综合性的依据。
非空间数据
非空间数据又叫做非图形数据,主要包括专题属性数据和质量描述数据等,它表示地理实体的本质特性,是地理实体相互区别的质量准绳,如土地利用、土壤类型等专题数据和地物要素分类信息等。
地图数据中的空间数据表示地理物体位于何处和与其它物体之间的空间关系;而地图数据中的非空间数据,则对地理物体进行语义定义,表明该物体“是什么”。 除了这两方面的主要信息外,地图数据中还可包含一些补充性的质量、数量等描述信息,有些物体还有地理名称信息。这些信息的总和,能从本质上对地理物体作相当全面的描述,可看作是地理物体多元信息的抽象,是地理物体的静态信息模型。
时间因素
地理要素的空间与规律是地理信息系统的中心研究内容,但是空间和时间是客观事物存在的形式,两者之间是互相联系而不能分割的。 因此,往往要分析地理要素的时序变化,阐明地理现象发展的过程和规律。时间因素为地理信息增加了动态性质。在物体所处的二维平面上定义第三维专题属性,得到的是在给定时刻的地理信息。在不同时刻,按照同一信息采集模型,得到不同时刻的地理信息序列。
若把时间看作是第四维信息,可对地理现象作如下划分:
超短期的:如地震、台风、森林火灾等;
短期的:如江河洪水、作物长势等;
中期的:如土地利用、作物估产等;
长期的:如水土流失、城市化等;
超长期的:如火山爆发、地壳形变等。
地理信息的这种动态变化特征,一方面要求信息及时获取并定期更新,另一方面要重视自然历史过程的积累和对未来的预测和预报, 以免使用过时的信息导致决策的失误,或者缺乏可靠的动态数据而不能对变化中的地理事件或现象作出合乎逻辑的预测预报和科学论证。
矢量数据模型
在矢量数据中,单个地理实体是基本逻辑数据单位。根据在数据模型中所反映的实体间联系的程度,可有两种基本实施方案:无结构的面条模型和反映实体间空间关系的拓扑模型。
(1)面条模型
在面条模型中,仅仅把实体的空间信息定义成坐标串,不存贮任何空间关系。因此,这种模型仅适用于简单的图形再现,不能用于空间分析,对共位物体还会产生数据冗余,从而难以保持有关数据的一致性。从这个意义上讲,这种模型只能用于彼此分离(不共位)的图形或作为空间数据输入的预备结构。
(2)拓扑模型
拓扑模型在空间数据模型中得到了广泛的承认,不少著名的数据模型都是围绕着这个概念建立起来的。因为拓扑模型不仅能保证共位物体的无冗余存贮,还可利用结构法则检索物体间的空间关系异常。例如,我们可以为河流网、交通网、电力网、给水网、排水网等建立拓扑关系,这样,就可以根据网线的关系来达到跟踪、检索、分析等目的。
面片数据模型
在这类模型中,基本数据元素是基于一个空间单元的。实体信息是按照这种空间单元进行采集的。面片数据模型主要表现为以下两种形式:网格系统和多边形系统。
(1)网格系统
网络系统是用规则的小面块集合来逼近自然界不规则的地理单元。数据采集与图象处理中普遍采用正方形,这就意味着正方形砌块是分割二维空间的实用形式。
(2)多边形系统
多边形系统借助任意形状的弧段集合来精确表达地理单元的自然轮廓。它是表达面状地理要素的重要手段。 多边形系统不象网格系统那样使用简单的二维阵列结构, 各个面域单元之间的关系不是系统所有的,而是需要专门地建立,即要建立多边形网结构元素之间的拓扑关系。
各种地理信息系统,除了管理图形数据系统,还在不同程度上管理和处理与图形数据相关联的专题数据。 在层次、网状和关系模型中,最常用的专题属性数据构模是关系数据模型。
在空间数据库系统中,图形数据与专题属性数据一般采用分离组织存贮的方法存贮,以增强整个系统数据处理的灵活性,尽可能减少不必要的机时与空间上的开销。 然而,地理数据处理又要求对区域数据进行综合性处理,其中包括图形数据与专题属性数据的综合性处理。 因此,图形数据与专题属性数据的连接也是很重要的。图形数据与专题属性数据的连接基本上有4种方式:
图形数据与专题属性数据分别管理
这种方式没有集中控制的数据库管理系统,它有两种管理形式:(1)属性数据是作为图形数据记录的一部分进行存贮的。这种方案只有当属性数据量不大的个别情况下才是有用的。大量的属性数据加载于图形记录上会导致系统响应时间的普遍延长。当然,主要的缺点在于属性数据的存取必须经由图形记录才能进行。(2)用单向指针指向属性数据,此方法的优点在于属性数据多少不受限制,且对图形数据没有什么坏影响。缺点是仅有从图形到属性的单向指针,因此,互相参照是非常麻烦的,并且容易出错。如图6-7(a)。
对通用DBMS扩展以增加空间数据的管理能力
对通用DBMS进行必要的扩充,以增加空间数据的管理能力,使空间数据和属性数据在同一个DBMS管理之下。这种方法使空间和属性数据之间的联系比较密切,还便于利用某些DBMS产品的现成功能(如:多用户的控制,客户机/服务器的运行模式等),但为了使空间数据适应关系模型,需牺牲软件运行的效率。如图6-7(b)。
属性数据与图形数据具有统一的结构
此结构中有双向指针参照,且由一个数据库管理系统来控制,使灵活性和应用范围均大为提高。这一方案能满足许多部门在建立信息系统时的要求。如图6-7(c)。
图形数据与属性数据自成体系
此方案为图形数据和属性数据彼此独立地实现系统优化提供了充分的可能性,以进一步适合于不同部门的数据处理方法。这里属性数据有其专用的数据库系统,很多情况下是用于事务管理的商业数据库,并且在它基础上建立了能够从属性到图形的反向参照功能。如图6-7(d)。
当然,在许多GIS系统中,图形数据和属性数据并不是使用单一的连接方式,而是根据具体情况使用多种方式。例如,MAPGIS以第三种方式为主,但也包含第四种方式。
有关地理实体的各种信息内容,可表示为描述实体记录数据项的集合,这样便形成一种信息框架,表示实体信息的逻辑构成。例如,一个地理实体的信息结构可表示为如图6-8所示的两种形式。
该线的线型、线宽、线色等信息。专题属性信息表明该实体属于哪一类物体,即表明该目标“是什么”,如为水系、道路、居民点、境界、地貌及土壤植被等类型,而在各个类型中又根据其它特征进一步细分,此外还可包括表示其质量、数量、强度等属性信息。空间信息描述物体的位置与形状,这种信息可通过一系列直角坐标对来描述。关系信息描述该目标与其他物体的联系,这可用存贮与该物体有关系的那些物体的关键字来实现,比如,组成一个面域的若干个弧段号;一个弧段的左、右面域号等。
在传统的GIS中,一般是将空间数据与属性数据完全分开来存放,并以属性表与空间文件一一对应的方法和根据表的关键字与文件中空间对象的标识,来定位空间对象的属性信息。目前,由于GIS中管理的数据量逐渐增大,这种分离管理已经不能满足当前数据管理的需要。随着大型关系型数据库技术的日益完善,其应用也日渐普及。在数据管理方面,大型关系型数据库管理系统恰恰具备了文件系统所不具备的工具,同时还可以实现空间数据与属性数据的一体化管理。因此,如何充分利用大型关系型数据库管理系统已有的技术和强大的数据管理工具去管理复杂庞大的GIS系统的数据,已成为GIS界人士研究的课题,他们尝试用大型关系型数据库管理GIS数据,从而形成新的GIS系统开发平台;而大型关系型数据库厂商也在积极扩展SQL语句的查询功能,以支持对空间数据的处理,两者正在相互渗入、相互促进。
GIS数据的关系化管理方式能使GIS系统开发设计人员从庞大、烦琐的数据管理工作中解脱出来,能充分应用现有的大型关系型数据库管理系统本身的数据管理功能(检索、完整性检查,安全保密机制、安全恢复机制、数据共享、并发控制、网络通讯、分布式体系结构等),同时也给传统的GIS应用软件开发平台带来了一种崭新的设计思想。从表6-2可以明显地看出文件系统与大型关系型数据库管理系统在数据管理方面的差异。
性 能 | 文件系统 | 大型关系型数据库管理系统 |
---|---|---|
易掌握性 | 容 易 | 困 难 |
成本 | 底 | 高 |
检索能力 | 无 | 有 |
数据安全管理 | 困 难 | 容易实现 |
数据完整性检查 | 困 难 | 容易实现 |
并发控制 | 困 难 | 容易实现 |
数据共享 | 困 难 | 容易实现 |
对空间数据及属性数据的一体化管理 | 难以实现 | 容易实现 |
与操作系统的集成性 | 无 关 | 紧密相关 |
随着关系型数据库技术的发展,尤其是非结构化大型对象的引入,人们考虑将非结构空间图形数据作为二进制对象,存储在目前大部分关系型数据库提供的二进制块(Binary Block)中。其相关的属性数据存储在数据表的列中,由RDBMS统一管理,这就是全关系型空间数据管理模式。空间数据引擎(Spatial Engine, SDE)是近几年发展起来的采用大型RDBMS管理空间数据的新技术,它为GIS海量数据的组织与共享提供了极大的方便。从用户的角度看,空间数据引擎是用户和异构空间数据库之间的接口;从软件的角度看,空间数据库引擎是应用程序和RDBMS之间的中间件,用来管理空间数据库。从系统的角度看,空间数据库引擎利用RDBMS和其扩展功能,实现空间数据在数据库中的物理存储。目前,许多GIS软件厂商在纯关系数据库管理系统基础上,开发出空间数据管理的引擎,如ESRI公司出的ArcSDE,北京超图公司开发出的Supermap SDX+,武汉中地数码公司研发的MAPGIS-SDE等。
全关系型数据库管理结构
在全关系型数据库管理方式中,使用统一的关系型数据库管理空间数据和属性数据,空间数据以二进制数据块的形式存储在关系型数据库中,形成全关系型的空间数据库。GIS应用程序通过空间数据访问接口访问空间数据库中的空间数据,通过标准的数据库访问接口访问属性数据,全关系型数据管理结构如图6-9所示。
目前,关系型数据库无论是在理论上还是应用方面,都已经成熟,它们提供了一致的访问接口(SQL)以操作分布的海量数据,并且支持多用户的并发访问、安全性控制和一致性检查。这些正好是构造企业级地理信息系统所需要的。此外,通用的接口也便于实现属性数据的共享。但是,由于现有的SQL不支持空间数据的检索操作,需要软件厂商自行开发空间数据访问接口,通过空间数据访问接口访问存储在关系型数据库中的空间数据。
采用全关系型数据库管理空间数据的优点是一个地物对应于数据库中的一条记录,避免了对“连接关系”的查找,使得属性数据检索速度加快。但是,由于空间数据的不定长,会造成存储效率低下,此外,现有的SQL并不支持空间数据检索,需要软件厂商自行开发空间数据访问接口。如果要支持空间数据共享,则要对SQL进行扩展。
空间数据引擎
关系型数据库无法存储、管理复杂的地理空间框架数据以支持空间关系运算和空间分析等GIS功能。因此,GIS软件厂商在纯关系数据库管理系统基础上,开发空间数据管理的引擎。空间数据引擎(Spatial Database Engine,简称SDE)是用来解决如何在关系数据库中存储空间数据,使空间数据实现真正的数据库方式管理,建立空间数据服务器的方法。空间数据引擎是用户和异种空间数据库之间一个开放的接口,它是一种处于应用程序和数据库管理系统之间的中间件技术。用户可通过空间数据引擎将不同形式的空间数据提交给数据库管理系统,由数据库管理系统统一管理,同样,用户也可以通过空间数据引擎从数据库管理系统中获取空间类型的数据满足客户端操作需求。目前GIS软件与大型商用关系型数据库管理系统(RDBMS)的集成大多采用空间数据引擎来实现。使用不同GIS厂商数据的客户可以通过空间数据引擎将自身的数据提交给大型关系型DBMS,由DBMS统一管理。同样,客户也可以通过空间数据引擎提供的用户和异构数据库之间的数据接口,从关系型DBMS中获取其它类型的GIS数据,并转化成客户可以使用的方式。空间数据引擎就成为各种格式的空间数据出入大型关系型DBMS的转换通道。
空间数据引擎的工作原理如图6-10所示,空间数据引擎在用户和异构空间数据库的数据之间提供了一个开放的接口,它是一种处于应用程序和数据库管理系统之间的中间件技术,SDE客户端发出请求,由SDE服务器端处理这个请求,转换成为DBMS能处理的请求事务,由DBMS处理完相应的请求,SDE服务器端再将处理的结果实时反馈给GIS的客户端。客户可以通过空间数据引擎将自身的数据交给大型关系型DBMS,由DBMS统一管理,同样,客户也可以通过空间数据引擎从关系型DBMS中获取其他类型的GIS数据,并转换成为客户端可以使用的方式。大型关系型数据DBMS已经成为各种格式不同空间数据的容器,而空间数据引擎成为就成为空间数据出入该容器的转换通道。在服务器端,有SDE服务器处理程序,关系数据库管理系统和应用数据。服务器在本地执行所有的空间搜索和数据提取工作,将满足搜索条件的数据在服务器端缓冲存放,然后将整个缓冲区中的数据发往客户端应用,在服务器端处理并缓冲的方法大大提高了效率,降低了网络负载,这在应用操纵数据库中成百上千万的记录时是非常重要的。SDE采用协作处理方式,处理既可以在SDE客户一端,也可在SDE服务器一端,取决于具体的处理在哪一端更快。客户端应用则可运行多种不同的平台和环境,去访问同一个SDE服务器和数据库。
SDE服务器端同时可以为多个SDE客户端提供并发服务,关键在于客户端发出的请求的多样性,可以是读取数据、插入数据、更新数据、删除数据。读取数据本身就包括查询、空间分析功能,而插入数据、更新数据和删除数据不仅包含从普通空间数据文件导入空间数据库的情形,还可能涉及到多用户协同编辑的情形。从功能上看,SDE最常用的功能就是提供空间数据访问和空间查询。
在多用户并发访问(如协同编辑)的情况下,可能会产生冲突,SDE必须处理可能出现的所有并发访问冲突。SDE服务器和空间数据库管理系统一起,为客户端提供完整的、透明的数据访问。
基于关系型数据库的空间数据模型
关系数据库是建立在关系模型的基础之上的,它的基本组成是表,每个表有列(表字段)、行(表记录)组成,一个数据库则由许多个表组成,这些表之间采用一定的关系组织连接。按照层次模型及表之间的连接关系,地理关系数据库的数据组织模型见图6-11。
如图6-11所示,各个表具有用于描述本层表格自身的特点的基本信息和可随意添加的多个属性值。
(1)地图表集:整个系统具有这样一个表,它可以作为一个地图集中的最高层次表格,在实现上可以作为多个数据库的总体规划表格。它本身具有各个地图的引用和描述信息。
(2)地图表:每个地图都有这样一个表,它可以作为管理一个工程中地图的最高表格,它是以一个数据库的总体规划表格的方式实现。该表具有各层参照、描述和引用信息。
(3)地图层表:每个地图层都有这样一个表,它作为管理一个图层的表格。该表具有本图层的空间对象及各个空间对象的相应描述信息。
(4)空间索引表:每个地图层对应一个空间索引表,它用于协助进行空间分析,以加快空间分析的速度。
基于关系型数据库的空间实体数据结构
不同的空间实体(点、线、面),其表数据结构是不一样的。下面就是一种空间实体的数据结构。
(1)polygon(面状实体表)
create table polygon
(
GID int NOT NULL,
iInterId int, /* 内部编码 */
iUsid int, /* 用户标识码 */
iClassid int, /* 分类码 */
iLayerNo int, /* 层号 */
iDisplayCode int, /* 表达符号码 */
iColorNo int, /* 区域颜色号码 */
… …
dXlab float, /* 内部标识点坐标 */
dYlab float
)
(2)line(线状实体表)
create table line
(
GID int NOT NULL,
iInterId int, /* 内部编码 */
iUsid int, /* 用户标识码 */
iClassid int, /* 分类码 */
iLayerNo int, /* 层号 */
iDisplayCode int, /* 表达符号码 */
iDisplayPatternNo int, /* 线型号 */
… …
iTransp int, /* 透明方式 */
)
(3)point(点状实体表)
create table point
(
GID int NOT NULL,
iInterId int, /* 内部编码 */
iUsid int, /* 用户标识码 */
iClassid int, /* 分类码 */
iLayerNo int, /* 层号 */
iDisplayType int, /* 点类 */
iDisplayCode int, /* 表达符号码 */
… …
Bmpname
)
(4)lin(面状实体组成线段表)
create table lin
(
GIDP int, /* 面状实体代号 */
GIDL int, /* 线段编码 */
)
(5)island(岛屿表)
create table lsland
(
iPolyId int, /* 主多边形编码 */
iPolyId1 int, /* 岛屿编码 */
)
(6)coor(实体坐标表)
create table coor
(
GID int,
Dxmax float,
Dxmin float,
Dymax float,
Dymin float,
Coor image
)
在上述表中的GID域是为了遵循OpenGis操作规范而设计的,对GIS系统中所有实体的GID值都是唯一的,每个实体的坐标都存储在表coor的一个记录中,其坐标表达结构亦遵循OpenGis规范中所定义的结构。
空间数据访问模型
通过空间关系数据库的数据模型,可以将属性数据与空间数据统一存放在关系数据库中,从而实现了数据的统一管理,如图6-12所示。
由图6-12可见,由于将数据统一于关系数据库中进行管理,因而可以直接利用DBMS的管理功能以充分利用关系数据库中的许多查询优化,提高数据的访问速度。
其中的空间数据访问模块是进行空间数据的压缩、解压缩(实现空间对象的正常表示与空间对象的二进制大对象表示之间的转换)、空间分析、空间数据提取等的模块,它向上提供一般地理信息系统的空间分析、数据提取功能,向下则具有调用数据库管理系统(DBMS)的功能,是整个空间关系数据库模型中数据访问的核心。如图6-13所示。
关系化空间数据的安全管理
在大型关系型数据库管理系统中包含着许多数据安全管理方面的工具,例如数据完整性检查、数据安全管理机制、数据备份/恢复功能等,借以实现数据的安全保密管理。关系化的空间数据管理可以充分利用这些工具来实现空间数据的安全管理,而文件系统根本不具备这些工具。
大型关系型数据库管理系统提供的数据完整性检查工具包括:唯一性检查、主键、外键、触发器、视图约束等。数据安全管理机制包括帐户安全性、对象权限、系统级角色和权限等。数据备份/恢复功能包括:输出备份、脱机备份、实例失败的恢复、意外删除或修改对象的恢复等。关系化空间数据的管理可根据应用的具体要求选用上述工具来满足应用系统对数据管理的要求。
空间数据在大型关系型数据库管理系统中以关系表的方式存储。关系型数据库管理系统可以根据应用的需求,对空间数据所在的关系表赋予完整性检查、可检索、可操作、部分可检索、触发器约束等权限,以实现应用系统对空间数据的安全管理,从根本上解决了文件系统在数据安全管理方面的难题。图6-14展示了数据库安全管理模式应用的流程。
在20世纪90年代后期,许多DBMS软件商纷纷对关系数据库进行扩充,即在通用RDBMS上增加空间数据管理专用模块,使之能直接存储和管理空间数据,形成了对象-关系型空间数据库管理系统。所增加的空间数据管理专用模块,定义了点、线、面、圆等空间对象的API函数,以解决空间数据变长记录的管理。
Oracle公司是一家国际著名的教据库厂商,从Oracle8.0.4版本开始,Oracle公司在其核心产品Oracle数据库中推出空间数据管理工具――Spatial Cartridge(SC),借此打入GIS数据库市场。随着Oracle8i的推出,SC升级为Oracle Spatial。
Oracle Spatial
Oracle Spatial,是针对存储在Oracle8i中的空间元素(Spatial Feature)集合提供了一种SQL的模式来完成空间数据的存储、输出、修改和查询等功能的。Oracle Spatial由以下组件构成:一种用来规定Oracle支持的空间数据类型的存储、语法、语义的模式(Schema),称为MDSYS;一种空间索引机制;一组用来处理空间区域的交叉、合并和联结的操作符和函数集;一组管理工具。Oracle支持两种表现空间元素的机制(或称作模型),一种是关系式模型(Relational),用多行记录和字段类型为NUMBER的一张表来表示一个空间实体;另一种是对象-关系式模型(Object-Relational),这种模型使用一张数据库表,表中有一个类型为MDSYS.SDO-GEOMETRY的字段,是用一行记录来存储一个空间数据实体。
对象-关系摸型
Oracle Spatial的对象-关系模型(object-relational model)实现方法由一组对象数据类型、一种类型的索引方法,以及在这些类型上的操作符组成。一个空间实体用一行具有SDO_GEOMETRY字段的记录来存储,存为对象类型。空间索引的创建和维护由基本的SQL的DDL和DML语句完成。由此可以看到,原来需要用多行多列存储的一个空间实体使用Oracle Spatial的对象-关系模型只需要用一行记录就可以完成存储,大大方便了应用系统的数据处理、维护等操作。
对象类型
在Oracle Spatial的对象-关系模型中,一个空间实体的空间信息存在于用户定义的数据库表中的一行字段名为GEOLOC的字段中,字段类型为SDO_GEOMETRY。只要拥有该字段的任何一个表,必须要有另外一列或几列用于定义这个表的唯一主键。Oracle Spatial对SDO_GEOMETRY字段的定义如下:
CREATE TYPE SDO_GEOMETRY AS OBJECT
(SDO_GTYPE NUMBER,
SDO_SRID NUMBER,
SDO_POINT SDO_POINT_TYPE,
SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY)
由该字段定义可以看出,SDO_GEOMETRY是一个对象类型的字段,由5个对象属性组成,即一个空间实体的所有空间信息全部存储在这5个属性中。
SDO_GTYPE说明该空间实体的类型,例如,2001表示一个二维的点,SDO_SRID是一个预留属性,Oracle Spatial计划将它作为空间引用的外键,SDO_POINT由X、Y、Z三个NUMBER型的属性构成。如果SDO_ELEM_INFO和SDO_ORDINATES都是NULL,该对象便是非空的,X、Y两个值用来表示点实体的坐标,否则,SDO_POINT属性将被忽略。SDO_ELEM_INFO定义为一个可变长的数组,用来表明如何解释存储在SDO_ORDINATES属性中的坐标信息,SDO_ORDINATES定义为一个可变长的数组,数组元素类型为NUMBER,用来存储组成空间实体边界的点的坐标值。
使用对象-关系模型的优点
(1)Oracle spatial将空间数据采取了分解存储的技术,即一个地理空间分解为若干层,然后每层又分解为若干几何实体,最后将单个几何实体分解为若干元素。Oracle Spatial支持点、线、面三种基本几何对象类型(Geometry),以及它们的集合体(MultiGeometry)。线根据连接方式有简单线(Line String)、圆弧线(ArcLine String)和组合线(CompoundLine String,简单线与圆弧线的任意组合),面有简单面(Polygon)、圆弧面(Arc Polygon)、组合面(Compound Polygon,简单面与圆弧面的任意组合)、圆(Circle)和矩形(Rectangle)。使用这些几何对象进行组合,可以表示非常复杂的几何对象,满足常规几何对象表示的需要。
(2)在空间索引方面,Oracle Spatial提供了高效的索引机制,支持Quad-Tree和R-Tree空间索引。外部数据通过转人到或直接通过SQL生成空间数据表,然后建立空间索引,这样就可以直接通过SQL实现对空间数据的存取、检索、空间分析等操作,同时这些索引完全由Oracle的数据库服务器维护。
(3)目前,Oracle Spatial支持的空间分析功能主要包括检索(SDO_FILTER)、关联(SDO_RELATE)、覆盖范围(SDO_WIDTH_DISTANCE)、缓冲分析(SDO_BUFFER)和最近地物查找(SDO_NN)等,基本能够满足GIS的常规要求。
Oracle Spatial提供了成熟的空间数据的支待,然而技术的彻底更新带来了应用系统开发技术的变化。Oracle Spatial是Oracle数据库中的空间数据管理模块,是标准的对象-关系型数据库,它为数据库管理系统管理空间数据提供了完全开放的体系结构,所提供的各种功能均在服务器中完全集成。用它来管理空间数据可以借助Oracle数据库的安全机制,强健的数据管理和丰富的对象功能,灵活的层体系结构等成熟的数据库实现技术,使它克服了传统空间数据库在现代GIS应用中暴露出来的种种问题。
在GIS系统中,常常需要根据空间位置进行查询,例如,“找出通过某个区域的所有公路”,“检索在某个区域内的所有湖泊”等等。为了处理这类空间查询,数据库需要检查每一个可能满足条件的空间要素的记录,看它是否与查询区域相交或是在查询区域内,这种空间相交运算需要先读出空间要素几何形状的边界坐标,然后再与空间区域进行空间关系运算。由于传统数据库的这种穷尽式搜索方法花费的磁盘访问时间和空间运算时间都很长,往往达到令人无法忍受的程度。
传统的关系数据库为了提高检索效率,一般都建立一系列的索引机制,如B+树。但是这些都是一维索引,无法处理空间数据库中的二维和多维的空间数据。所以必须为空间数据库另外建立专门的索引机制――空间索引。
空间索引是指根据空间要素的地理位置、形状或空间对象之间的某种空间关系,按一定的顺序排列的一种数据结构,一般包括空间要素标识,外包络矩形以及指向空间要素的指针。这里,外包络矩形是指空间要素的封装边界,它是每一种空间索引必不可少的要素。
空间索引的目的是为了在GIS系统中快速定位到所选中的空间要素,从而提高空间操作的速度和效率。空间索引的技术和方法是GIS关键技术之一,是快速、高效的查询、检索和显示地理空间数据的重要指标,它的优劣直接影响空间数据库和GIS系统的整体性能。
索引原理
矩形范围索引是一种高效、实用的空间索引方法。其基本原理就是对空间要素的外包络矩形进行索引。在进行空间范围查询时,分为两级过滤(筛选)。初次过滤根据空间要素外包络矩形来过滤掉大部分不在查询范围的空间要素,因为空间要素外包络矩形已被索引,所以初次过滤过程比较快,花费的代价比较小。第二级过滤则用查询空间范围直接和初次过滤结果集中空间要素的二进制边界坐标比较,从而得到查询的准确结果。
对外包络矩形进行索引的方法有多种,其中在SDE中最简单、直接的一种就是利用关系数据库的索引方法来索引外包络矩形。建立矩形范围索引SQL模型如下(假设空间要素的外包络矩形坐标用XMIN,YMIN,XMAX,YMAX表示):
CREATE INDEX idx_rect ON owner.GeoObjTbl (XMIN, XMAX, YMIN,YMAX);
(1)假设给定查询范围为矩形,坐标为gxmin, gymin, gxmax, gymax,查询矩形范围相交的空间要素(包括矩形范围内的空间要素和交到了矩形范围边界的空间要素)
利用矩形范围索引初次过滤的SQL模型如下:
SELECT id0 from owner.GeoObjTbl WHERE ((gxmin< = XMAX AND gxmin > =
XMIN) OR (gxmax< = XMAX AND gxmax> = XMIN)) AND ((gymin<=YMAX AND
gymin>=YMIN) OR (gymax< =YMAX AND gymax>=YMIN))
(2)假设给定查询范围为矩形,坐标为gxmin, gymin, gxmax, gymax,查询仅在矩形范围内的空间要素(不包括交到了矩形范围边界的空间要素)
利用矩形范围索引初次过滤的SQL模型如下:
SELECT id0 from owner.GeoObjTbl WHERE (gxmin<XMAX AND gxmin >XMIN) AND (gxmax<XMAX AND gxmax>XMIN) AND (gymin<YMAX AND gymin>YMIN) AND (gymax<=YMAX AND gymax>=YMIN)
索引维护及适应性
矩形范围索引由关系数据库直接维护,用SQL语句模型可以直接创建和删除,在添加、更新和删除空间要素时,不需要SDE来维护索引的变化。所以该索引具有很好的适应性,无需预知整个空间要素的空间范围,就能很容易建立空间索引;由大量实验结果表明,该索引在空间要素的个数在30万以下时,具有很高的效率,矩形范围查询初次过滤的响应时间均在1秒之内。但是空间要素的个数超过30万,索引的效率将随着空间要素的增长而下降,由试验数据表明,空间要素个数在200万左右时,利用该索引查询进行初次过滤,响应时间在5~18秒之间。所以该类型索引在中小型数据量的GIS系统中使用,具有较好的实用价值。
单元网格索引思路比较简单。基本思想是将研究区域用横竖划分为大小相等或不等的网格,记录每一个网格所包含的空间要素。当用户进行空间查询时,首先计算出查询空间要素所在的网格,然后通过该网格快速定位到所选择的空间要素。
传统单元网格索引编码
在建立地图数据库时需要用一个平行于坐标轴的正方形数学网格覆盖在整个数据库数值空间上,将后者离散化为密集栅格的集合,以建立制图物体之间的空间位置关系。通常是把整个数据库数值空间划分成32×32(或64×64)的正方形网格,建立另一个倒排文件——栅格索引。每一个网格在栅格索引中有一个索引条目(记录),在这个记录中登记所有位于或穿过该网格的物体的关键字,可用变长指针法或位图法实现。在图6-15中有三个制图物体:一条河流、一个湖泊和一条省界,它们的关键字分别为5,11和23。河流穿过的栅格为2,34,35,67,68;湖泊覆盖的栅格为68,69,100,101;省界所通过的栅格为5,37,36,35,67,99,98,97。这种物体与栅格的关系可用位图法来表示。由图6-17看出,一个栅格中包含的物体个数就是该栅格在栅格索引的对应记录中存贮的比特“1”的个数。这是定位(开窗)检索的基本工具。此外,物体与栅格的关系亦可用变长指针法表示,如图6-16。
利用传统单元网格索引查询的SQL模型如下: (GCODE为网格编码列名称)SELECT id0 from owner.GeoObjTbl WHERE GCODE IN (…) 由于传统型单元网格编码方式过于简单,使得编码值在空间上不能保持连续性,即空间上相邻的网格编码不连续,所以在使用SQL模型进行查询时,只能使用IN语法。这样,如果查询涉及的网格编码太多,则容易超出SQL模型的长度。
改进型单元网格索引编码
改进型单元网格索引将传统型编码由1维升至2维,变成X和Y方向上的编码;将空间要素的标识、空间要素所在的网格的X和Y方向上的编码、以及空间要素的外包络矩形作为一条数据库记录存储。如果一个空间要素跨越多个网格,则同样存储多条记录。如图6-18所示,[X1,Y1],[X2,Y2]是5的外包络矩形;[X3,Y3],[X4,Y4]是11的外包络矩形;[X5,Y5],[X6,Y6]是23的外包络矩形。
改进型单元网格索引的编码方式就很好的保持了网格在空间上相邻则编码值也相邻的特性,这样在构造查询的SQL模型时,就可以使用连续表示方式。而且该索引存储了空间要素的外包络矩形,可以为查询过滤非查询范围的要素提供进一步依据。
假设给定查询范围为矩形,坐标为gxmin, gymin, gxmax, gymax,其网格编码范围为:X方向(gcodexmin—gcodexmax),Y方向(gcodeymin-gcodeymax),gcodex和gcodey分别是网格编码列名称。查询矩形范围相交的空间要素(包括矩形范围内的空间要素和交到了矩形范围边界的空间要素)。
利用单元网格索引过滤的SQL模型如下:
SELECT id0 from owner.GeoObjTbl WHERE (gcodex>= gcodexmin AND gcodex<=gcodexmax AND gcodey>= gcodeymin AND gcodey<=gcodeymax)AND (((gxmin<=XMAX AND gxmin >=XMIN) OR (gxmax<=XMAX AND gxmax>= XMIN)) AND ((gymin<=YMAX AND gymin> =YMIN) OR (gymax<= YMAX AND gymax>=YMIN)))
索引工作机制如下:
SDE在执行该空间查询时,从客户端接收查询多边形的外包络矩形以及查询多边形外包络矩形所跨的网格单元,这些信息通过SQL模型的WHERE子句传递给DBMS。
第一步,DBMS从SDE接收SQL语句(该语句包括网格单元和外包络矩形的坐标)。WHERE子句定义了在空间索引中需要选择的网格单元。一旦在空间索引表中确定了网格单元,外包络矩形的搜索就从所选择的网格边界开始;
第二步,利用查询多边形的外包络矩形和空间索引表中的空间要素的外包络矩形,DBMS可减少最初的选择集。DBMS比较查询多边形的外包络矩形和空间要素的外包络矩形是否有重叠,如果有,则该空间要素被选择来做下一步的空间要素边界比较,形成一个最初选择集;
第三步,在SDE中,用查询多边形的外包络矩形与最初选择集中的空间要素的边界坐标进行比较,如果查询多边形的外包络矩形与第二步选择集中的空间要素边界不重叠,该空间要素就从最初选择集中过滤掉,结果形成中间选择集;
第四步,将查询多边形的边界坐标和中间选择集的空间实体边界坐标进行比较,一旦有重叠发生,比较的结果记录就形成最终结果集。该步比较过程是一个二进制比较过程,将花费较多的时间和空间。(如果查询多边形为矩形,则该步操作可省略,中间选择集直接升级为最终结果集)。
第一步和第二步是用来减少由SDE执行的空间要素边界比较的次数,减少返回的数据记录有助于减少空间要素比较的数量,因而可以缩短空间查询的时间。
网格单元大小因素
单元网格索引是一种多对多的关系,即一个网格单元可以包含多个空间要素,且一个空间要素可以跨越多个网格单元。在这种多对多的关系下,网格的大小是影响索引效率的最主要因素。
与空间要素的外包络矩形大小相比,网格单元很大时,将导致每个网格单元内包含有很多空间要素。第一阶段选择的网格虽少,但导致第二阶段将不得不处理大量网格内的空间要素的边界比较,潜在地增加了查询的时间。
如果网格单元太小,小于空间要素外包络矩形的平均大小,将会导致空间索引表产生大量的网格单元,并且很多网格单元都索引出相同的空间要素。当大量的空间要素外包络矩形被网格单元切割时,空间索引表变大,因而查询网格单元时间增长。
网格单元的大小不是一个确定性的问题,需要多次尝试和努力才会得到好的结果。有一些确定网格初始值的原则,用它们可以进一步确定最佳网格大小,可在任何时候重新计算网格的大小,使DBMS重建空间索引表。如果空间要素外包络矩形的大小变化比较大,可以选择多种网格大小,但在空间索引搜索的过程中DBMS必须搜索所有网格单元级,这将消耗大量时间。
最佳网格的大小可能受图层平均查询的影响,如果用户经常对图层执行相同的查询,经验数据表明,网格的大小为查寻空间范围的1.5倍时,效率较高。
经验数据表明,网格单元的大小取空间要素外包络矩形平均大小的3倍时,可极大的减少每个网格单元包含多个空间要素外包络矩形的可能性,获得较好的查询效率。
索引维护和适应性
单元网格索引由于网格编码与区域相关,所以需要预测整个空间要素所在空间范围,然后根据此范围建立空间索引,一旦空间要素需要超出此范围,则需重新建立索引。在整个空间范围确定的情况下,索引的维护工作比较容易。
添加空间要素时,按规则计算出该空间要素的网格编码,添加到索引表中;更新空间要素时,删除该空间要素的索引记录,重新计算网格编码,添加到索引表中;删除空间要素时,直接删除该空间要素的索引记录即可。
单元网格空间索引的效率在网格单元大小适中的时候非常高。由试验数据表明,空间要素个数在200万左右时,如果网格单元大小划分合理的话,利用该索引查询进行过滤,响应时间最短可在2秒之内。所以该类型索引适用于大型数据量的,空间范围确定的GIS应用。
R树最早是由A.Guttman在1984年提出的,随后又有了许多变型,构成了由R树,R+树,Hibert R树,SR树等组成的R系列树空间索引。R系列树都是平衡树的结构,非常像B树,也具有B树的一些性质。下面以Guttman的 R树为例介绍一下R树的结构。
R树的结构
R树的每个结点不存放空间要素的值。叶结点中存储该结点对应的空间要素的外包络矩形和空间要素标识,这个外包络矩形是个广义上的概念,二维上是矩形,三维空间上就是长方体,以此类推到高维空间。非叶结点(叶结点的父亲、祖先结点)存放其子女结点集合的整体外包络矩形和指向其子女结点的指针。注意,空间要素相关的信息只存在叶结点上。
图6-19是二维空间中一个R树示意图,图中的例子表示了三组多边形(矩形,用实线画出)及对应于这三组多边形的R树中结点的外包络矩形(用虚线画出),R树本身画在右边。
索引维护(R树的插入,删除操作)
R树的插入与许多其他树的操作一样,可以归纳为一个递归过程。首先从根结点出发,按照一定的标准,选择其中一个孩子插入新的空间要素,然后再从以孩子为根的子树的根结点出发重复进行上面操作,直到叶子结点。设 M和 m( m≤ M)为 R树结点中单元个数的上限和下限,当新的空间要素的插入使叶子结点中的单元个数超过M时,需要进行结点的分裂操作。分裂操作是将溢出的结点按照一定的规则分为若干部分。在其父结点删除原来对应的单元,并加入由分裂产生的相应的单元。如果这样引起父结点的溢出,则继续对父结点进行分裂操作。分裂操作也是一个递归过程,它保证了空间要素插入后R树仍能保持平衡。
从R树中删除一个空间要素与插入类似,首先从R树中查找到记录该空间要素所在的叶子结点,这就是R树的查找。从根结点开始,依次检索包含空间要素的单元所对应孩子结点为根结点的子树。查询方式利用了R树的结构特征,减少了检索的范围,提高了检索的效率。查找到该空间要素所在的叶子结点后,删除其对应的单元。如果删除后该叶子结点单元个数少于m,需要进行R树的压缩操作,将单元数过少的结点删除。如果父结点因此单元数也少于m,则继续对父结点重复进行该操作。最后将因进行结点调整而被删除的空间要素重新插入到R树中。这就是R树的压缩操作,它使得R树的每个结点单元数不低于m这个下限,从而保证了R树结点的平衡和利用率。
索引分析
从R树的结构可以看出,让空间上靠近的空间要素拥有尽可能近的共同祖先,能提高R树的查询效率。在构造R树的时候,尽可能让空间要素的空间位置的远近体现在其最近的共同祖先的远近上,形象的说就是让聚集在一起的空间要素尽可能早的组合在一起。插入中选择子树的标准,分裂操作、插入操作中选择子树的标准,分裂操作中的分裂算法,都是为了体现这一目标。但是用什么样的规则来衡量空间要素的聚集,是一个非常复杂的问题。由于衡量的方法不一样,由此产生了众多的R树的变型。
Guttman使用面积这个指标来衡量空间上的聚集。在插入操作时,选择插入空间要素后外包络矩形面积增长最小的结点为根结点的子树。而在分裂溢出结点时,选择各种分裂组合中各部分外包络矩形面积之和最小的结合方式。而R+树[54]在插入操作时则将叶子结点和非叶子结点分开考虑,采用不同的标准。并提出同时考虑外包络矩形的周长和其相互重叠的面积来衡量空间上的聚集。在分裂溢出结点时提出了更为复杂的算法。而Hilbert R树则利用分形中的一种空间填充曲线-Hilbert曲线,将多维空间的空间要素映射到一维空间,利用该变换保持空间聚集的特性来解决这个问题。
让R树的结构尽可能的合理是一个非常复杂的问题。上面众多的方法都不能很完善的衡量空间的聚集,他们都只能做到局部的优化,无法保证由此形成的R树的整体结构最优。空间要素插入顺序的不同会形成不同结构的R树,所以随着空间要素的频繁插入和删除,会将R树的查询效率带向不可预知的方向。
但R树空间索引具有其他索引方法无法比拟的优势:
它按数据来组织索引结构。这使其具有很强的灵活性和可调节性。无需预知整个空间要素所在空间范围,就能建立空间索引;
由于具有与B树相似的结构和特性,使其能很好地与传统的关系型数据库相融合,更好的支持数据库的事务、回滚和并发等功能。这是许多国外空间数据库选择R树作为空间索引的一个主要原因。
四叉树空间索引的基本原理是将已知的空间范围划成四个相等的子空间,将每个或其中几个子空间继续按照一分为四的原则划分下去,这样就形成了一个基于四叉树的空间划分。四叉树索引有满四叉树索引和一般四叉树索引。以下的两个四叉树索引均为满四叉树索引。
基于固定网格划分的四叉树索引
(1)索引原理
在基于固定网格空间划分的四叉树空间索引机制中,二维空间范围被划分为一系列大小相等的棋盘状矩形,即将地理空间的长和宽在X和Y方向上进行2N等分,形成2N×2N的网格,并以此建立N级四叉树。如图6-20所示为二维空间的二级划分(即N=2)及其四叉树结构。根据计算公式,N=2时,非叶结点数为5,编码从0到4,叶结点数是16,编码从5到20。
在四叉树中,空间要素标识记录在其外包络矩形所覆盖的每一个叶结点中,但是,当同一父亲的四个兄弟结点都要记录该空间要素标识时,则只将该空间要素标识记录在该父亲结点上,并按这一规则向上层推进。如图6-20所示,面空间要素R1的外包络矩形同时覆盖5、6、7、8四个兄弟子空间,根据以上规则,只需在他们的父亲结点――1号结点的面空间要素索引结点表中记录R1的标识;面空间要素R2的标识则记录在叶子结点10和12的面空间要素索引结点表中;线空间要素L1的标识符记录在13,14,15,16的父亲结点――3号结点的线空间要素索引结点表中;点空间要素P1的标识记录在叶结点17的点空间要素索引结点表中。
(2)索引分析
基于网格划分的四叉树索引的构成方式与网格索引有些类似,都是多对多的形式,即一个网格可以对应多个空间要素,同时一个空间要素也可以对应多个网格。但与一般网格索引不同的是它有效的减少了大的空间要素(跨越多个网格)在结点中的重复记录。并且这种索引机制空间要素的插入和删除都较简单,只需在其覆盖的叶结点和按照上面的规则得到父亲和祖先结点中记录或删除其标识即可,没有像R树一样的复杂耗时的分裂和重新插入操作。同时,其查询方式也比较简单,例如要检索某一多边形内和与其边相交的空间要素,只需先检索出查询多边形所覆盖的叶结点和其父亲和祖先结点中所有的空间要素,然后再进行必要的空间运算,从中检索出满足要求的空间要素。
线性可排序四叉树索引
(1)索引原理
线性可排序四叉树索引是Supermap研制出来的一种扩展型四叉树索引。它与传统四叉树索引的不同之处有两点:一点是四叉树结点编码方式不同,另一点是结点和空间要素的对应关系不同。
线性可排序四叉树索引在编码上放弃了传统的四叉树编码方式,其编码方式如图6-21所示,首先将四叉树分解为二叉树,即在父结点层与子结点层之间插入一层虚结点,虚结点不用来记录空间要素。然后按照中序遍历树的顺序对结点进行编码,包括加入的虚结点。
进行空间查询的时候,首先根据查询区域生成所要搜索的结点编号的集合。由于新的编码方式,孩子和父亲结合编号的连续性将结点编号集合变换成连续的结点编号的范围,这样就可以很容易的用SQL模型构造条件,从索引表中检索出满足要求的空间要素。
假设某个结点位于四叉树的第N层,可排序四叉树编码为Index。它的四个子结点位于树的第N-1层,编码从左到右分别为:Index_C1,Index_C2,Index_C3,Index_C4,则它们之间有如下关系:
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;
}
}
在获得子树下所有结点编码的范围以后,利用如下SQL模型可以查询出相应的空间要素来:“Select * From 表名 Where (ID0>Min and ID0<Max)”。利用四叉树编码大致的确定空间数据的位置后,就可以在此基础上,通过空间算子进行空间运算和空间分析了。
(2)索引分析
线性可排序四叉树结点和空间要素的对应关系为一对多。一个结点可以对应多个空间要素,但是一个空间要素只能对应一个结点。它将空间要素记录在包含它的最小子空间所对应的结点中。这样可以免除由于多对多机制所带来的查询时需要重排的麻烦。
线性可排序四叉树编码的连续性特点避免了采用传统编码方式的以下缺点:四叉树划分较深、查询时涉及的结点太多时、很容易使检索的SQL模型超过允许的长度。
线性可排序四叉树的不足之处是当四叉树结构发生变化时,例如向下再划分一层,则必须给所有的结点重新编码,即重新构造索引表。这使得该索引缺少一定的灵活性,而采用传统编码的四叉树就不存在这种问题。
多级索引是将多个不同或相同的索引方法组合使用,对单级索引空间或者空间范围进行多级划分,解决超大型数据量的GIS系统检索、分析、显示的效率问题。多级索引由于其多级的结构特性,往往可以很好地利用计算机硬件资源的并行工作特性,如多CPU,磁盘阵列等,来提高检索的效率。
多级索引方法很多,不同的单级索引组合便可以构成不同的多级索引方法。但是由于每种索引的特性不同,所以如何将多种索引融合成一体构成一种高效的多级索引也是空间索引的一个研究方向。
索引原理
索引分割单元格网索引是一种简单高效的多级索引方法,其基本原理类似于四叉树,将空间范围进行多级划分,每一级划分的空间均采用单元网格索引,构成一个多级网格空间,以适应不同范围的高效查询;与四叉树不同的是每一次空间划分均为物理分割,一旦该级的网格确定,则需建立相应的物理表格存储该级的索引信息。
空间范围的每一级划分原理就是通过规则划分(矩形或正方形)将索引区域划分为不重叠的许多子空间(矩形或正方形),对于该索引区域建立一个范围索引表,记录每个子空间的范围、划分的级别和子空间索引表名称;对每个子空间单元再按照以上规则进行再次划分;对于最后一级的子空间,则为每个子空间单元建立一个子空间索引表,存储落在这个子空间之内的空间要素标识、外包络矩形;并且对于最后一级的子空间,如果包含的空间要素个数太多,可直接将该子空间物理分割成多个。
通过该方式索引,在进行空间检索时,可以直接访问空间区域覆盖的和与空间区域相交的子空间的索引表,然后对空间索引表进行进一步求精判断,以检索出符合要求的空间实体。由于进行了物理分割,那么单个空间索引表维持恒定且较少的记录数,而且空间索引表的字段域也只有几个,数据量大大减少,因此检索效率也就会比单级网格索引要高。
索引实现
在索引实现时,采用编写数据库存储过程的方法,这样可以大大减少客户端SQL语句的构造难度和在网络上的传输量。以下为两级索引分割单元格网索引的实现过程。
(1)创建索引表的存储过程:(mp_Idx_InitCrtIdxTbl)
第一步,判断是否存在索引管理表, 若不存在则创建索引管理表;
第二步,将索引管理表名称,X方向网格数,Y方向网格数添加到索引数据字典中;
第三步,创建相应的索引表集合,索引表名规则:空间要素表名_idx+001,+002,….;
第四步,将各个索引表名称和划分的网格范围信息(xmin,xmax,ymin,ymax)插入到索引表管理表中;
(2)填充网格索引数据存储过程:(mp_Idx_FillGridData)
首先,对每一个空间要素:
第一步,计算空间要素外包络矩形;
第二步,判断空间要素外包络矩形相对网格的位置信息,得到该空间要素所在的索引表名称集合(可能空间要素跨多个网格);
第三步,将该空间要素的标识(id0)和外包络矩形(xmin, ymin, xmax, ymax)插入到计算得到的索引表集合中;
然后,对每个空间索引表的id0,xmin,xmax,ymin,ymax字段域建立数据库联合索引。
(3)指定子空间物理再分的存储过程:(mp_Idx_Subdivide)
第一步,计算指定子空间索引表的记录数;
第二步,如果记录数超过索引统计信息中索引表的平均记录数(或者是比较合适的经验数据值),则根据该记录数创建再分的索引表集合。
第三步,重复填充网格索引数据过程;(注意,此时空间要素信息直接从需要划分的索引表中取得)。
(4)索引矩形范围查询存储过程:(mp_Idx_SelEntity)
第一步,根据给定矩形范围,在索引管理表中查找出对应的索引表名称集合(一个或多个);
第二步,在查出的索引表集合中,通过联合索引快速找出满足条件的实体标识号。
创建好存储过程后,在客户端应用程序中调用上述存储过程,可以完成索引的建立和查询操作。如果查询效率不满意,则可以对那些分布密集的区域进行再次划分(调用mp_Idx_ Subdivide),以达到满意的效果为止。
索引分析
索引分割单元格网索引相对而言,优势在于:
(1)原理简单,实现起来较为容易。
(2)查询效率高,对那些数据量大,空间实体分布均匀的情况尤其明显。经过实验,在空间要素为300万左右的数据量下,查询1000个左右空间要素时,响应时间均在1秒以内。
(3)索引维护相对比较简单。空间要素的添加、更新、删除操作,索引表均为固定的模式,没有R树分裂合并时的复杂情况。
但是,由于该索引方式是以网格编码索引为基础,所以该索引也继承了网格索引的缺陷:
(1)最大的难点在于格网划分的精细程度的确定,格网划分的好坏将对索引数据量和检索效率产生直接影响。网格划分的精细程度在很大程度上取决于空间对象的分布以及建库人员的经验,所以,期望在任何情况下都能得到索引区域的一个最佳划分通常情况下是不容易的。
(2)如果空间要素跨越多个网格区域,在多个索引表中将会保存此空间要素实体的信息,造成冗余,并使得索引数据量迅速增长。
(3)建立多个索引表,本身也是额外的开销。
(4)对于数据量比较小的GIS应用,建立多级索引反而会降低检索效率。
空间索引的方法很多,但基本原理都类似,即采用分割原理,把查询空间划分为若干区域,通常为矩形或者是多边形,这些区域包含空间要素并且可唯一标识。目前,分割方法一般可归纳为两种:一种是规则分割法,另一种是对象分割法。规则分割法是将地理空间按照某种规则或半规则方式分割,分割单元间接地与空间要素相关联,空间要素的几何形状可能被分割到几个相邻的单元中,这时空间要素的描述保持完整,而空间索引单元只存储空间要素地址的参考信息。在对象分割法中,索引空间的分割直接由空间要素来确定,索引单元包括空间要素地址的参考信息和空间要素的外包络矩形。常见的空间索引方法一般都是自上而下、逐级划分地理空间,从而形成各种空间索引结构。比较有代表性的规则分割法包括网格系列索引。基于对象的分割法主要是包括R系列树索引。每一类空间索引方法都有其优越性和使用范围的局限。表6-3是在对各种类型索引研究的基础上归纳出来的索引综合性能对照表。
信息社会的发展,导致社会各行各业对详实、准确的各种数据的需求量迅速增加以及数据库的大量出现。对不同类型数据,要求数据的内容、格式、说明等符合一定的规范和标准,以利于数据的交换、更新、检索、数据库集成以及数据的二次开发利用等,而这一切都离不开元数据(Metadata)。对空间数据的有效生产和利用,要求空间数据的规范化和标准化。例如,各应用领域的数据库不但要提供空间和属性数据,还应该包括大量的引导信息以及由纯数据得到的推理、分析和总结等,这些都是由空间数据的元数据系统实现的。
对于空间元数据标准内容的研究,目前国际上主要有欧洲标准化委员会(CEN/TC 287)、美国联邦地理委员会(FGDC)和国际标准化组织地理信息/地球信息技术委员会(ISO/TC 211)三个组织在进行。
关于空间元数据的定义,欧洲标准化委员会CEN/TC 287认为空间元数据是“描述地理信息数据集内容、表示、空间参考、质量以及管理的数据”,而美国联邦地理数据委员会FGDC和国际标准化组织地理信息/地球信息委员会ISO/TC 211则认为:空间元数据是“关于数据的内容、质量、条件以及其它特征的数据”。
总的来说,空间元数据是“关于数据的数据”,它在地理信息中用于描述地理数据集的内容、质量、表达方式、空间参考、管理方式以及数据集的其它特征,它是实现地理空间信息共享的核心标准之一。
地理空间元数据与数据字典的主要区别在于:元数据是对关于数据集本身及其内容的全面分层次规范化的描述,且任何数据集的元数据描述格式和内容都是相同的,因而可以用相同的管理系统对所有数据集的元数据进行管理和维护;而数据字典只是描述数据集中的部分内容,且没有统一的规范和标准,不同数据集生产者只是根据不同需求对数据集内容作出描述或说明,因此不可用相同的管理系统进行统一的管理和维护。
空间元数据主要有下列几个方面的作用:
(1)用来组织和管理空间信息,并挖掘空间信息资源,这正是数字地球的特点和优点所在。通过它可以在Internet上准确地识别、定位和访问空间信息。
(2)帮助数据所有者查询所需空间信息。比如,它可以按照不同的地理区间、指定的语言以及具体的时间段来查找空间信息资源。
(3)维护和延续一个机构对数据的投资。空间元数据可以确保一个机构对数据投资的安全。空间数据集建立后,随着机构中人员的变换以及时间的推移,后期接替该工作的人员会对先前的数据了解甚少或一无所知,这样便对先前数据的可靠性产生质疑,而通过空间元数据内容,则可以充分描述数据集的详细情况。同样,当用户使用数据引起矛盾时,数据提供单位也可以利用空间元数据维护其利益。
(4)用来建立空间信息的数据目录和数据交换中心。数字地球中包含着各行各业的不同内容的信息,诸如农业、林业、交通、水利等许许多多专题信息,然而很少有一个组织产生的数据可能对其它组织也有用,而通过数据目录、数据代理机、数据交换中心等提供的空间元数据内容,用户便可以方便地得到符合自己要求的地理空间数据,并很容易地使用它们,从而它已成为实现地理空间信息跨部门、跨行业和跨区域共享的有效解决途径之一。当然,要想真正实现空间信息的全球共享,还涉及到处理空间信息的软件系统、空间信息的软件模型和数据格式以及国家的政策法规等。
(5)提供数据转换方面的信息。在未来的空间信息中,均应当包含空间元数据信息,以便使用户在获取包含空间信息数据集的同时就可以得到空间元数据信息。通过空间元数据,人们便可以接受并理解数据集,且可以与自己的空间信息集成在一起,进行不同方面的分析决策,使地理信息空间信息实现真正意义上的共享,发挥其最大的应用潜力。
目前对于地理空间元数据的应用需求主要集中在目录、历史记录、地理空间数据集内部以及可读性等4个方面。其具体的实施应用,关键是在获取和整理地理空间数据的同时,要严格按照地理空间元数据的标准规范,建立该数据集的元数据和建立相应的元数据管理系统,并向上一级数据交换中心提供该数据集的元数据标准规范。
按照Metadata所描述的数据内容,Metadata可分为数据系列Metadata、数据集Metadata、要素类型和要素实例Metadata、属性类型和属性实例Metadata(如图6-22所示)。
数据集系列Metadata
数据集系列Metadata是指一系列拥有共同主题、日期、分辨率以及方法等特征的空间数据系列或集合,它也是用户用于概括性查询数据集的主要内容。通常,数据集系列的定义有数据集生产者具体定义,比如航空摄影时,飞机在一条航带上用同一摄影机和相同参数拍摄的一系列航片,或按照行政区划组成的国家资源环境数据库中的某一区域库等内容,都是组成数据集系列数据的数据集。
在软件实现上,如果拥有数据集系列Metadata模块,则既可以使数据集生产者方便地描述宏观数据集,而且也可以使用户很容易地查询到数据集的相关内容,以实现空间信息资源的共享。当然,要获取数据集的详细信息,还需通过数据集Metadata来实现。
数据集Metadata
数据集Metadata模块是整个Metadata标准软件的核心,它既可以作为数据集系列Metadata的组成部分,也可以作为后面数据集属性以及要素等内容的父代Metadata数据集系列。在Metadata软件标准设计的初级阶段,通过该模块便可以全面反映数据集的内容。当然随着数据集的变化,为避免重复记录Metadata元素内容以及保持Metadata元素的实时性,它便可通过继承关系仅仅只需更新变化了的信息,这时Metadata软件系统的层次性便显得异常重要。
要素类型和要素实例Metadata
要素类型在数据集内容中相对比较容易理解,它是指由一系列几何对象组成的具有相似特征的集合,比如数据集中的道路层、植被层等,便是具体的要素类型。
要素实例或具体要素是具体的要素实体,它用于描述数据集中的典型要素,而且通过它可以直接获取有关具体地理对象的信息。该模块是Metadata体系中详细描述现实世界的重要组成部分,也是未来数字地球中走向多级分辨率查询的依据,比如武汉长江大桥便是一个具体要素。因此,我们通过数据集系列、数据集、要素类型等层次步骤,便可以逐级对地理世界进行描述,用户也可以按照这一步骤,沿网络获取详细的数据集内容信息。
属性类型和属性实例Metadata
属性类型是用于描述空间要素某一相似特征的参数,比如桥梁的跨度便是一个属性类型;属性实例则是要素实例的属性,比如某一桥梁穿越某一道路的跨度属性类型和属性实例是与要素类型和要素实例对应的模块,它们是地理数据集软件层次结构或继承关系的组成部分,也是Metadata软件系统的高级阶段内容。
描述空间信息的空间元数据内容按照部分、复合元素和数据元素来组织(如图6-23)。
空间元数据标准体系的内容具体分为8个基本内容部分和4个引用部分,共由12个部分组成,具体的标准化内容以及它们之间的相互关系如图6-24所示。
空间元数据标准由两层组成,其中第一层是目录层,它提供的空间元数据复合元素和数据元素是数字地球中查询空间信息的目录信息,它相对概括了第二层中的一些选项信息,是空间元数据体系内容中比较宏观的信息;第二层是空间元数据标准的主体,它由8个标准部分和4个引用部分组成,包括了全面描述地理空间信息的必选项、条件可选项、以及可选项的内容。
下面对元数据本身及其组成地理空间元数据的各个部分做较为详细的说明。
空间元数据
空间元数据是关于数据集内容、质量、表示方式、空间参考、管理方式以及数据集的其它特征的数据,它位于整个标准体系的最上段,属于复合元素,由两个层次组成。
在构成空间元数据标准内容的两个层次中,第一层目录信息主要用于对数据集信息进行宏观描述,它适合在数字地球的国家级空间信息交换中心或区域以及全球范围内管理和查询空间信息时使用。第二层则作为详细或全面描述地理空间信息的空间元数据标准内容,是数据集生产者在提供数据集时必须提供的信息。
标准部分
标准部分有8个内容,它们分别是:
(1)标识信息 是关于地理空间数据集的基本信息。通过标识信息,数据集生产者可以对有关数据集的基本信息进行详细的描述,诸如描述数据集的名称、作者信息、所采用的语言、数据集环境、专题分类、访问限制等,同时用户也可以根据这些内容对数据集有一个总体的了解。
(2)数据质量信息 是对空间数据集质量进行总体评价的信息。通过这部分内容,用户可以获得有关数据集的几何精度和属性精度等方面的信息,也可以知道数据集在逻辑上是否一致,以及它的完备性如何,这是用户对数据集进行判断,以及决定数据集是否满足他们需求的主要判断依据。数据集生产者也可以通过这部分对数据集的质量评价方法和过程进行详细的描述。
(3)数据集继承信息 是建立该数据集时所涉及的有关事件、参数、数据源等的信息,以及负责这些数据集的组织机构信息。通过这部分信息便可以对建立数据集的中间过程有一个详细的描述,比如当一幅数字专题地图的建立经过了航片判读、清绘、扫描、数字地图编辑以及验收等过程时,应对每一过程有一个简要描述,使用户对数据集的建立过程比较了解,也使数据集生成的每一过程的责任比较清楚。
(4)空间数据表示信息 是数据集中表示空间信息的方式。它由空间表示类型、矢量空间表示信息、栅格空间表示信息、影像空间表示信息以及传感器波段信息等内容组成,它是决定数据转换以及数据能否在用户计算机平台上运行的必须信息。利用空间数据表示信息,用户便可以在获取该数据集后对它进行各种处理或分析了。
(5)空间参照系信息 是有关数据集中坐标的参考框架以及编码方式的描述,它是反映现实世界与地理数字世界之间关系的通道,诸如地理标识参照系统、水平坐标系统、垂直坐标系统以及大地模型等。通过空间参照系中的各元素,可以知道地理实体转换成数字对象的过程以及各相关的计算参数,使数字信息成为可以度量和决策的依据。当然,它的逆过程也是成立的,即可以由数字信息反映出现实世界的特征。
(6)实体和属性信息 是关于数据集信息内容的信息,包括实体类型、实体属性、属性值、域值等方面的信息。通过该部分内容,数据集生产者可以详细地描述数据集中各实体的名称、标识码以及含义等内容,也可以使用户知道各地理要素属性码的名称、含义以及权威来源等。
在实体和属性信息中,数据集生产者可以根据自己数据的特点,在详细描述和概括描述之间选择其一,以描述数据集的属性等特征。
(7)发行信息 是关于数据集发行及其获取方法的信息,包括发行部门、数据资源描述、发行部门责任、订购程序、用户订购过程以及使用数据集的技术要求等内容。通过发行信息,用户可以了解到数据集在何处,怎样获取、获取介质以及获取费用等信息。
(8)空间元数据参考信息 是有关空间元数据当前现状及其负责部门的信息,包括空间元数据日期信息、联系地址、标准信息、限制条件、安全信息、以及空间元数据扩展信息等内容,它是当前数据集进行空间元数据描述的依据。通过该空间元数据描述,用户便可以了解到所使用的描述方法的实时性等信息,从而加深了对数据集内容的理解。
引用部分
以下4部分内容作为地理空间元数据的引用部分,自己不单独使用,而是被标准(1~8)部分所引用。这4部分内容在整个元数据标准规范中多次重复出现,为了减少本标准规范的冗余度,增强组成规范的内容的层次性和独立性,所以对这4部分内容单独处理。在具体实现某一数据集的元数据时,该4部分内容会多次出现在标准(1~8)部分中。
(9)引用信息 是引用或参考该数据集所需要的简要信息,它自己从不单独使用,而是被标准内容部分有关元素引用。它主要由标题、作者信息、参考时间、版本等信息组成。
(10)时间范围信息 是关于有关事件的日期和时间的信息,该部分是引用标准内容部分有关元素时要用到的信息,它自己不单独使用。
(11)联系信息 是与数据集有关的个人和组织联系时所需要的信息,包括联系人的姓名、性别、所属单位等信息。该部分是引用标准内容部分有关元素时要用到的信息,它自己不单独使用。
(12)地址信息 是同组织或个人通讯的地址信息,包括邮政地址、电子邮件地址、电话等信息。该部分是描述有关地址元素的引用信息,它自己不单独使用。
栅格数据管理的目的是将区域内相关的栅格数据有效地组织起来,并根据其地理分布建立统一的空间索引,快速调度数据库中任意范围的数据,进而达到对整个栅格数据库的无缝漫游和处理。同时,栅格数据库与矢量数据库可以联合使用,并可以复合显示各种专题信息,如各种矢量图元的地理分布等。
栅格、影像数据库通常采用金字塔结构存放多种空间分辨率的栅格数据,同一分辨率的栅格数据被组织在一个层面(Layer)内,而不同分辨率的栅格数据具有上下的垂直组织关系:越靠近顶层,数据的分辨率越小,数据量也越小,只能反映原始数据的概貌;越靠近底层,数据的分辨率越大,数据量也越大,更能反映原始详情。
通过对栅格数据建立这种多级、多分辨率索引,可在显示或处理数据时,自动适配最佳分辨率以提高处理速度,同时也极大地减少数据处理和显示所需的内存消耗。栅格数据库数据组织原理如图6-25所示。
栅格数据库创建的一个重要环节是由当前层的栅格数据重采样生成其上层的栅格数据,针对不同类型的栅格数据库可采用不同的插值算法来完成。同时针对栅格数据量大的特点,系统可采用高效压缩、还原算法,以实现海量栅格数据的有效存储和管理。
地理信息系统(GIS)是对与地理空间相关的数据进行有效管理和综合分析的计算机系统。然而,现实世界的数据不仅与空间相关,而且与时间相关。在许多应用领域,如环境监测、抢险救灾、交通管理等,相关数据随着时间变化而变化。如何处理数据随时间变化的动态特性,是GIS面临的新课题。
现有的GIS大多不具有处理数据的时间动态性的功能,而只是描述数据的一个瞬态(snapshot )。当数据发生变化时,用新数据代替旧数据,系统成为另一个瞬态,旧数据不复存在。因而无法对数据变化的历史进行分析,更无法预测未来的趋势。这类GIS亦称为静态GIS。
许多应用领域要求GIS能提供完善的时序分析功能,高效地回答与时间相关的各类问题,在时间与空间两方面全面处理地理信息系统,即所谓时态GIS(Temporal GIS)。时态GIS作为GIS研究和应用的一个新领域,由于其巨大的应用驱动力,正受到普遍的关注。而且,随着存贮和高效技术的飞速进步,为大容量的时态数据的存贮和高效处理提供了必要的物质条件,使时态GIS的研究和应用成为可能。
时间的结构
(1)线性结构
认为时间是一条没有端点,向过去和将来无限延伸的线轴,除了与空间一样具有通用性、连续性和可测量性外,还具有运动的不可逆性(或称单向性)和全序性。
(2)循环结构
反映了时间的周期性、稳定性,与时间的线性结构不可分割,相辅相成,形成了现实世界在继承中的发展。
(3)分支结构
分为单向分支结构和双向分支结构,分别反映了具有不同的历史时间结构和未来时间结构的多个目标现象的时间结构,其中各分支具有两两正交性。
(4)多维结构
是同一目标的演变经历,从不同时间角度来看,体现为时间的多维结构。主要表现的有:
・有效时间(Valid Time)Tv:空间目标从产生到消亡,是它在现实世界中存在的时间区间,称为有效时间(也称世界时间、数据时间、逻辑时间、事件时间)。如果理论模型允许目标消亡后再生,则有效时间是多个不相交的时间区间的并。
・数据库时间(Database Time)Td:目标数据输入系统的时间,称为数据库时间(或事务时间、物理时间、执行时间、系统时间)。
・用户定义时间(User-defined Time):用户根据需要自己为目标标注的时间,称为用户定义时间,只有用户知道其语义,DBMS不能解释,语义由具体应用确定。
另外还有决策时间、观察时间等等。
时间的密度特性
时间的密度特性体现为以下模型:离散模型:时间与自然数同构,每个自然数对应一个时间粒子,是一种较常用的结构;紧凑模型:时间与有理数/实数同构;连续模型:时间与实数同构,每个实数对应时间上一个点。
时间的不确定性
GIS中的数据在空间、非空间属性上都具有不确定性,同样在时态性上也存在着不确定性。当某事件发生是已知的,但何时发生是未知的,则称该事件是时态非确定的。
时间的多标度性
时间多标度性是指用于度量时间的尺度的多样性,时间标度也称时间分辨率或时间粒度。不同的应用领域,及用一应用领域中的不同应用范围,都可能采用不同的时间标度。GIS中时间标度的选择存在着理想的时间精度和节约内存开销相互权衡的问题。
为了能够表示时空过程,近年来,作为GIS研究和应用的一个领域,时态GIS已经得到了GIS界的广泛关注,人们在研究能支持时态GIS产品的时空数据模型。目前已有时空数据的四种组织方法:
时间作为新的一维(时空立方体模型)
在概念上最直观的方法是:时间作为信息空间中的新的一维。主要有两种方式表示,其一是使用三维的地理矩阵(geographics matriix),以位置、属性和时间分别作为矩阵的行、列和高,其二是,用四叉树表达二维格数据,八叉树表示立方体,则可用十六叉树表示GIS的空间―时间模型。可见,时空数据沿时间轴的冗余度极大,因为目标的空间位置和属性的变化总是局部的,不等规律的。
连续快照模型
此模型在快照数据库(Snapshot Database)中仅记录当前数据状态,数据更新后,旧数据的变化值不再保留,即“忘记”了过去的状态。连续快照模型是将一系列时间片段快照保存起来,反映整个空间特征的状态,根据需要对指定时间片段的现实片段进行播放。该模型的不足之处在于,由于快照将未发生变化的时间片段的所有特征重复进行存储,会产生大量的数据冗余,当应用模型变化频繁,且数据量较大时,系统效率急剧下降。此外,连续快照模型不表达单一的时空对象,较难处理时空对象间的时态关系。
基态修正法
为了避免连续快照模型将每张未发生变化部分的快照特征重复进行记录,基态修正模型按事先设定的时间间隔采样,不存储研究区域中每个状态的全部信息,只存贮某个时间的数据状态(称为基态),以及相对于基态的变化量。基态修正的每个对象只需存储一次,每变化一次,只有很小的数据量需要记录;同时,只有在事件发生或对象发生变化时才存入系统中,时态分辨率值与事件发生的时刻完全对应。基态修正模型不存储每个对象不同时间段的所有信息,只记录一个数据基态和相对于基态的变化值,提高了时态分辨率,减少了数据冗余量。毫无疑问,在基态修正法中,检索最频繁的状态作为基态(一般的用户最关注的是“现在”时 ,即系统最后一次更新的数据状态)。此外,目标在空间和时空上的内在联系反映不直接,会给时空分析带来困难。
张祖勋提出了一种索引基态修正法,即在采用基态修正法后,再用四叉树(或八叉树)储存基态和变化量,可达到很高的压缩效益。
时空复合模型
时空复合模型将空间分隔成具有相同时空过程的最大的公共时空单元,每次时空对象的变化都将在整个空间内产生一个新的对象。对象把在整个空间内的变化部分作为它的空间属性,变化部分的历史作为它的时态属性。时空单元中的时空过程可用关系表来表达,若时空单元分裂时,用新增的元组来反映新增的空间单元,时空过程每变化一次,采用关系表中新增一列的时间段来表达,从而达到用静态的属性表表达动态的时空变化过程的目的;但在数据库中对象标识符的修改比较复杂,涉及的关系链层次很多,必须对标识符逐一进行回退修改。
1.什么是数据库、数据库管理系统以及数据库系统?它们之间有什么联系?
2.什么是数据模型?目前数据库主要有哪几种数据模型?它们各有何特点?
3.地图数据模型中,图形数据和专题属性数据有哪几种连接方法?各有何优缺点?
4.用关系型数据库管理空间数据有什么优势?主要用到哪些技术?
5.通常实体间都有哪些逻辑关系?怎样表示它们?
6.空间索引在空间数据管理中起到什么样的作用?主要有哪些空间索引技术?各有什么特点?
7.什么是元数据?主要有哪些内容?起什么作用?
8.为什么要研究和使用时空数据模型?主要有哪些数据模型?各有什么特点?
9.GIS中空间数据的组织与管理还面临着哪些关键问题?试谈谈自己的看法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。