本节书摘来自异步社区《ArcGIS Engine 地理信息系统开发从入门到精通(第二版)》一书中的第6章,第6.1节,作者: 邱洪钢 , 张青莲 , 熊友谊 更多章节内容可以访问云栖社区“异步社区”公众号查看。
第6章 空间数据管理
6.1 SDE及空间数据
ArcGIS Engine 地理信息系统开发从入门到精通(第二版)
6.1.1 SDE介绍
ArcSDE是数据库系统中管理地理数据库的接口,通过该接口可以往关系数据中加入空间数据,提供地理要素的空间位置及形状等信息,是ArcGIS与关系数据库之间的GIS通道。它允许用户在多种数据管理系统中管理地理信息,并使所有的ArcGIS应用程序都能够使用这些数据。
ArcSDE是多用户ArcGIS系统的一个关键部件,它为DBMS提供了一个开放的接口,允许ArcGIS在多种数据库平台上管理地理信息,这些平台包括Oracle、Oracle with Spatial/Locator、Microsoft SQL Server、IBM DB2和Informix。通过ArcSDE,ArcGIS可以在DBMS中轻而易举地管理一个共享的、多用户的空间数据库。ArcSDE的具体功能如下。
(1)高性能的DBMS通道。
ArcSDE是多种DBMS的通道。它本身并非一个关系数据库或数据存储模型。它是一个能在多种DBMS平台上提供高级的、高性能的GIS数据管理的接口。
(2)开放的DBMS支持。
ArcSDE允许在多种DBMS中管理地理信息:Oracle、Oracle with Spatial or Locator、Microsoft SQL Server、Informix以及IBM DB2。
多用户ArcSDE为用户提供了大型空间数据库支持,并且支持多用户编辑。
(3)连续、可伸缩的数据库。
ArcSDE可以支持海量的空间数据库和任意数量的用户,直至DBMS的上限。GIS工作流和长事务处理GIS中的数据管理工作流,例如多用户编辑、历史数据管理、check-out/check-in,以及松散耦合的数据复制等,都依赖于长事务处理和版本管理。ArcSDE为DBMS提供了这种支持。
(4)丰富的地理信息数据模型。
ArcSDE保证了存储于DBMS中的矢量和栅格几何数据的高度完整性。这些数据包括:矢量和栅格几何图形,支持x、y、z和x、y、z、m的坐标,以及曲线、立体、多行栅格、拓扑、网络、注记、元数据、空间处理模型、地图、图层等。
(5)灵活的配置。
ArcSDE通道可以让用户在客户端应用程序内,或跨网络、跨计算机地对应用服务器进行多种多层结构的方案配置。ArcSDE支持Windows、UNIX、Linux等多种操作系统。
ArcSDE能够让同样的功能在所有的DBMS上得到实现。尽管所有的关系数据库都支持SQL,并能使用相似的方法处理简单的SQL,但是不同数据库的数据库服务器在实现细节上却有着显著的差别,这些差别包括性能和索引、支持的数据类型、集成管理工具和复杂查询的执行,还包括在DBMS中对空间数据类型的支持。
标准的SQL并不支持空间数据。 ISO SQL/MM Spatial和OGC的简单要素SQL规范扩展了SQL,并且为不同的矢量数据定义了标准的SQL支持。 DB2和Informix直接支持这些SQL类型。Oracle使用的是自己的标准,其空间类型系统是核心数据库系统上的一个独立的可选扩展。而微软的SQL Server不提供空间类型的支持。ArcSDE不但灵活地支持了每个DBMS提供的独特功能,而且能为底层DBMS提供它们所不具备的功能的支持。
ArcSDE支持高性能的空间数据的管理,它支持的数据库如下。
① Oracle(带压缩二进制)。
② Oracle(带Locator和Spatial)。
③ 微软SQL Server(带压缩二进制)。
④ IBM DB2(带Spatial Extender)。
⑤ IBM Informix(带Spatial Database)。
ArcSDE是为了解决DBMS的多样性和复杂性而存在的。ArcSDE的体系结构给用户提供了巨大的灵活性,它允许用户自由地选择DBMS来存储空间数据。ArcSDE 分摊了 DBMS 和 GIS 之间对管理空间数据的职责,对空间数据的管理职责是由GIS软件和常规DBMS软件所共同承担的。某些空间数据的管理功能,例如磁盘存储、属性类型定义、查询处理,以及多用户事务处理等,是由DBMS来完成的。当然一些DBMS引擎本身也扩展了对空间数据的支持,它们具备索引和搜索的功能。GIS软件负责为特定的DBMS提供各种地理数据的表达。从实际效用上看,DBMS是被作为一个空间数据的实现机制而存在的。
ArcSDE是基于多层体系结构的(应用和存储)。数据的存储和提取由存储层(DBMS)实现,而高端的数据整合和数据处理功能则由应用层(ArcGIS)提供。ArcSDE支持ArcGIS应用层,并提供DBMS通道技术,使得空间数据可以存储于多种DBMS中。ArcSDE用于高效地存储、索引、访问和维护DBMS中的矢量、栅格、元数据及其他空间数据。ArcSDE同时能保证所有的GIS功能可用,而无需考虑底层的DBMS。使用ArcSDE,用户在DBMS中即可有效地管理自己的地理数据资源。ArcSDE使用DBMS支持的数据类型,以表格的形式管理底层存储的空间数据,并可使用SQL在DBMS中访问这些数据。ArcSDE同时也提供了开放的客户端开发接口(C API和Java API),通过这些接口,用户定制的应用程序也可以完全访问底层的空间数据表。
6.1.2 空间数据
空间数据(Spatial Data)是指用来表示空间实体的位置、形状、大小及其分布特征诸多方面信息的数据。它可以用来描述来自现实世界的目标,它具有定位、定性、时间和空间关系等特性。定位是指在一个已知的坐标系里,空间目标都具有唯一的空间位置;定性是指有关空间目标的自然属性,它伴随着目标的地理位置;时间是指空间目标是随时间的变化而变化;空间关系通常又称拓扑关系。
空间数据适用于描述所有呈二维、三维甚至多维分布的关于区域的现象。空间数据不仅能够表示实体本身的空间位置及形态信息,而且还有表示实体属性和空间关系(如拓扑关系)的信息。在空间数据中不可再分最小单元现象称为空间实体,空间实体是对存在于这个自然世界中地理实体的抽象,主要包括点、线、面以及实体等基本类型。如把一根电线杆抽象成为一个点,该点可以包含电线杆所处的位置信息、电线杆的高度信息和其他一些相关信息;可以把一条道路抽象为一条线,该线可以包含这条道路的长度、宽度、起点、终点,以及道路等级等相关信息;可以把一个湖泊抽象为一个面,该面可以包含湖泊的周长、面积和湖水的质量信息等。在空间对象建立后,还可以进一步定义其相互之间的关系,这种相互关系被称为“空间关系”,又称为“拓扑关系”,如可以定义点-线关系、线-线关系、点-面关系等。因此可以说空间数据是一种可以用点、线、面以及实体等基本空间数据结构来表示人们赖以生存的自然世界的数据。
归纳起来它具有以下5个基本特征。
(1)空间特征。
每个空间对象都具有空间坐标,即空间对象隐含了空间分布特征。这意味着在空间数据组织方面,要考虑它的空间分布特征。除了通用性数据库管理系统或文件系统关键字的索引和辅关键字索引以外,一般需要建立空间索引。
(2)非结构化特征。
在当前通用的关系数据库管理系统中,数据记录一般是结构化的。即它满足关系数据模型的第一范式要求,每一条记录是定长的,数据项表达的只能是原子数据,不允许嵌套记录。而空间数据则不能满足这种结构化要求。若将一条记录表达一个空间对象,它的数据项可能是变长的。例如,其一,1条弧段的坐标,其长度是不可限定的,它可能是 2对坐标,也可能是10万对坐标。其二,1个对象可能包含另外的 1个或多个对象,例如1个多边形,它可能含有多条弧段。若1条记录表示1条弧段,在这种情况下,1条多边形的记录就可能嵌套多条弧段的记录,所以它不满足关系数据模型的范式要求,这也就是为什么空间图形数据难以直接采用通用的关系数据管理系统的主要原因。
(3)空间关系特征。
空间数据除了前面所说的空间坐标隐含了空间分布关系外,空间数据中记录的拓扑信息则表达了多种空间关系。这种拓扑数据结构一方面方便了空间数据的查询和空间分析,另一方面也给空间数据的一致性和完整性维护增加了复杂性。特别是有些几何对象,没有直接记录空间坐标的信息。如拓扑的面状目标,仅记录了组成它的弧段的标识,因而进行查找、显示和分析操作时都要操纵和检索多个数据文件方能得以实现。
(4)分类编码特征。
一般而言,每一个空间对象都有一个分类编码,而这种分类编码往往属于国家标准、行业标准或地区标准,每一种地物的类型在某个GIS中的属性项个数是相同的。因而在许多情况下,一种地物类型对应于一个属性数据表文件。当然,如果几种地物类型的属性项相同,多种地物类型也可以共用一个属性数据表文件。
(5)海量数据特征。
空间数据量是巨大的,通常称为海量数据。之所以称为海量数据,是指它的数据量比一般的通用数据库要大得多。一个城市地理信息系统的数据量可能达几十GB,如果考虑影像数据的存储,可能达几百个GB。这样的数据量在城市管理的其他数据库中是很少见的。正因为空间数据量大,所以需要在二维空间上划分块或者图幅,在垂直方向上划分层来进行组织。
空间数据库系统是一个存储空间和非空间数据的数据库系统,其数据模型和查询语言能支持空间数据类型和空间索引,并且提供进行空间查询和其他空间分析的方法。空间数据库中存储的信息包含两部分:一部分是和空间有关的信息,如点、线、矩形、多边形、多面体等占有空间的对象,称之为空间数据;另一部分是与空间数据有关的各个属性,如点所表示的城市的面积、人口等,称之为非空间数据(属性数据)。