侯 伟
(兰州大学资源与环境学院,甘肃兰州730000)
空间数据的爆炸性增长对空间数据的管理带来了难题。使用传统的文件管理方式在海量空间数据的管理上捉襟见肘。而空间数据的特殊性使得普通的数据库并不能对空间数据进行有效管理。因此,在普通数据库的基础上,通过其对空间数据模型的实现来管理空间数据,从而达到更好地使用数据就显得非常重要和有意义[1-2]。
现今的SQL 2008、DB2、Oracle 11g等商业数据库,以及 MySQL、PostgreSQL、SQLite等开源数据库都在其自身的基础上添加了空间数据的扩展。然而,不论是开源数据库还是各商业数据库在空间数据管理的扩展上在很大程度上都是按照OGC(开放地理空间联盟)对有关空间数据模型研究上所制定的一系列规范的基础上进行的。
OGC致力于提高空间数据的共享及互操作。OGC在研究相关空间数据模型的基础上,对有关空间数据从收集、存储、处理、分析、表达和展示制定了一系列规范和标准,提高了空间数据的互操作和透明性。在空间数据存储和分析方面,OGC定义了由矢量的点、线、面以及它们的集合体组成的简单要素模型,并描述了空间数据库对简单要素的存取实现的具体方案。这在一定程度上,既揭示了空间数据库区别于普通数据库,既揭示了空间数据库所应具有的共性。
本文对一种开源的对象——关系型数据库PostgreSQL,借助空间数据扩展模块PostGIS,成为空间数据库的空间数据模型实现方案进行重点分析,从而明显得到作为空间数据库的特点及其优势所在。并对现今空间数据库表达存在的空间数据模型表达不成熟等问题进行揭示,对空间数据库的发展方向作出展望。
空间数据是指用来表示空间现象(实体)的位置、形状、大小及其分布特征诸多方面信息的数据,主要包括属性数据和几何特征数据两个方面。属性数据通常表现空间现象的非空间特征或与空间特征并无直接联系的特征,因此这一方面数据的表达与管理可以采用一般信息数据的表达和分析方式;对于空间数据的几何特征则是对空间现象(实体)在空间上的与位置有关的数据,其模型复杂,不能采用一般信息数据的表达和分析方式,需要采用具有针对几何特征属性的表达方式。OGC在对空间数据研究的基础上,对空间数据的几何特征制定了相关标准,将空间数据的几何特征规范为简单要素模型。
OGC按照面向对象的方法对空间数据在二维空间里统一建立了一个名为几何体的抽象类。通过这个抽象类生成了可以实例化的点、曲线、面,以及多边、多线、多面等集合体子类。这个抽象类几何体所占用的空间可以是一个空间坐标系,也可以是一个测量参考系统。其相互间的关系如图1所示。
对于简单要素的具体表达则采用了WKT(wellknown text)和WKB(well-known binary)方式。两种方式的主要区别和用途在于:WKT便于人的阅读与理解,WKB便于机器的高速处理。如一个点状几何体用WKT表示为
用WKB表示为
对于其他类型几何体的表示方法都在OGC的相关规范里,在此不再赘述。
图1 简单几何体的模型
简单要素的基本方法定义了空间数据在几何上的一些特性。这些特性中,一部分是关于空间数据的简单要素模型本身的一些性质,包括空间数据的维度、几何体类型、空间参考系,以及是否是简单要素等方法;另一部分是用来表现空间数据的具体形式的,包括采用WKT和WKB存取空间数据的几何特征,得到几何的外壳、边界等方法。通过简单要素的基本方法,对空间数据的几何特征能够作出较全面的描述。地理学第一定律说明仅仅考虑空间对象自身的特征是不够的,空间对象间的关系在一定程度上更为重要。
多个简单要素间的空间关系,是空间数据所特有的性质。最简单的多个简单要素间的空间关系就是两个简单要素间的空间关系。对两个以上的简单要素间的空间关系可以通过研究两个简单要素间的空间关系而得到。两个简单要素在二维平面上的拓扑空间关系,可以通过它们相互间的内部、边界和外部这9种关系,建立九交错模型,确定二者的关系。
通过对任意两个简单要素间的所有空间关系的确定,可以得到相同、分离、相交、相接、相交、在内、包含、叠置8种具有明确意义的空间关系,以及可供特殊使用的任意关系。从而确定任意两个几何对象的拓扑关系,在此基础上可以对任意多个简单要素间的空间关系进行表述,以及定义更加复杂的空间关系。
简单要素的空间分析更强调地理空间本身的特征。这一方面主要包括长度、面积、凸包、质心、缓冲区等强调简单要素的自身形态的方法;另一方面包括要素间的交集、并集和差集,根据要素间的空间关系生成新的简单要素。在此基础上可以构造出更复杂和更具实际意义的应用。例如,对于查询离学校不超过2 km的公交车站。可以转化求学校2 km的缓冲区,然后再求出该公交车站与缓冲区的交集,得到的结果就为离学校不超过2 km的公交车站,如图2所示。
图2 通过缓冲区和交集方法求得距学校2 km内的公交车站
PostGIS在简单要素的实现上完全遵守了OGC关于简单要素的定义,并根据简单要素的几何体特征主要形成了 Geometry和 Geography两个大类。Geometry类型表示平面上的空间数据,即通常使用的各种地图投影,也可以是任意定义的坐标系;而Geography则定义了一个在椭球体上的曲面,现在它仅支持WGS-84椭球体及其水准面。这两种本质上有差别的数据类型,由于在平面上便于各种计算,因此,Geometry类型使用方便,然而虽然对于Geography类型的数据更接近空间数据本质,但由于在曲面上的各种计算较为复杂,所以支持有限。
采用空间数据库,最主要的目的是对空间数据进行统一管理。空间对象一般可将其属性分为普通属性和空间属性。普通属性是与空间对象的空间位置和分布不直接相关的属性,而空间属性则通常表示空间对象所在位置及与位置直接相关的属性。PostGIS利用 PostgreSQL的 UDT(user defined type)功能对空间对象的几何体进行实现,将普通属性与空间属性存储在一张表里对空间对象进行了完整的表达。
在简单要素的存取上,空间数据库在遵守OGC关于简单要素的WKT和WKB表达规范的基础上,在数据的交互性上进行了扩展,以增强空间数据的互操作。几何体的构造器用来生成一个PostGIS的标准几何体,其支持多种形式的构造方法。包括OGC所规定的简单要素的WKT和WKB表达规范,以及GML和Google Earth所使用的KML表达方式,甚至是包含空间坐标的文本也可以进行构造,对于常于的Esri的SHP文件更是提供了专门的导入工具。几何体生成器则是对存储几何体的规范化输出,在生成器里,也是对OGC所规定的简单要素的WKT和WKB表达进行,同时也支持多格式的输出,包括了以 GML,KML,SVG,GeoJSON格式输出。多元的构造器和生成器为满足不同需求的应用和用户提供了便捷的方法,增加了空间数据的易用性和互操作。
由于PostGIS将空间数据主要分为Geometry和Geography两种类型。因为Geography类型直接代表真实的地理坐标系统,坐标系单一,对于这种类型仅对应有一种地理坐标系统,即WGS-84地理坐标系;而对于geometry类型,因其定义在平面上,本质上为笛卡儿坐标系,因为地图投影方法的不同,导制了Geometry类型所用参考系的不同。
PostGIS采用了EPSG(European Petroleum Survey Group)所定义的各种大地坐标系和地图投影,共支持3749种不同的空间参考系。对于每种参考信使用EPSG定义的数字代码,并有相应的用WKT和Proj4两种具体投影表示形式。空间对象的空间属性的空间参考系的定义是在定义几何体字段时预先定义的。同时,用户还可根据自身需要添加新的坐标参考系,这也体现了空间数据库的鲁棒性。
在空间数据分析上,PostGIS选择了OGC规定的部分几何体处理方法进行了实现。主要实现的方法有缓冲区生成,凸包分析,要素简化,几何体间的交集、并集、差集,以及点、线和面间的转化。这些方法的提供为实际中空间数据的查询提供简单明了的手段。
使用空间数据库管理空间数据的目的就是提高空间数据的查询效率。PostgreSQL数据库自身提供了B树索引,R树索引,以及特有的GiST(generalized search trees)。由于空间数据自身的特征,Post-GIS在GiST索引的基础上使用R树索引以提高空间数据的查询效率。这样做一方面可以确保数据索引安全,另一方面可以确保能够对超数据量大于8 KB的几何数据有效索引。
空间数据库作为一种存储、管理海量空间数据的手段。随着对空间数据研究的不断深入,空间数据库增加了对空间数据的各种查询、操作方法,并利用空间索引技术极大地提升了空间查询效率。
空间数据在数据库内存放唯一,而在存取空间数据时支持多样的存取方式。在存取格式上,空间数据库支持多样的数据格式;在空间数据的投影上,可供选择数千种不同的地图投影供存取。这样,为不同的用户提供不同的数据存取接口,最大限度地满足了不同的需求。
数据安全是数据库的主要特性之一。空间数据库是在普通数据库的基础上扩展而来。因此,在安全性上空间数据库具有很好的保证。空间数据库在空间数据的有效性检查,坐标系间的变换,访问控制等方面具有相较于文件管理更优异的安全特性。
通过对SQL语言在空间数据管理上的扩展,以及通过空间数据库内置的各种空间函数,可以在数据库内对空间数据进行形式多样的查询,甚至于编辑空间数据。通过空间数据库的空间索引的建立,在查询空间数据时效率极其高效。
开源空间数据库在具有以上空间数据库所有优点的基础上,还具有廉价性、研究性、借鉴性等优点。开源空间数据库作为一种供免费使用的空间数据库,使得管理空间数据的成本降低;同时,公开源代码使空间数据库的研究者可以全面的研究空间数据库,从而发展空间数据库;另一方向,开源空间数据库作为一种管理空间数据的形式,为空间数据管理者提供了借鉴方案。
开源空间数据库作为一种对空间数据研究最新进展的实现,在一定程度上体现了对空间数据研究的最新进展。通过开源空间数据库可以研究相应的空间数据模型,并学习相应数据模型表达手段和方法,有助于空间数据库的学习和理解。同时,开源空间数据库作为一种廉价但功能较为齐全的空间数据管理、分析和查询工具,在地理信息系统的建设中可以担负起管理、分析和查询空间数据的任务。本文中主要对OGC中所定义的简单要素的类型的空间数据在开源空间数据库的实现进行了论述,对于栅格数据类型由于对其模型研究还未形成一致,正处于研究试验阶段;对于网络数据模型和线性参考等其他方面的地理信息系统模型,开源空间数据库均有扩展,因其只在简单要素类型的基础上实现某一方面应用,故本文并未进行论述。本文在对OGC中所定义的简单要素进行详细论述,对简单要素模型的结构,构造存取方法,空间关系和空间分析等内容进行介绍。并在此基础上,对在开源空间数据库实现这些具体操作上进行了重点分析和介绍,突出地展示了使用空间数据库管理、分析空间数据的优越性。最后,对现阶段开源空间数据库在栅格类型数据管理上的不足进行了说明,这不仅是开源空间数据库存在的问题,也是所有空间数据存在的问题,这也是现今空间数据库研究的方向之一。可以期待随着对空间数据本质研究的不断深入,空间数据模型的表达必将统一。
[1]苏峰,黄正军.GIS空间数据管理模式探讨[J].计算机仿真,2003,20(8):140-143.
[2]黄波,徐冠华.基于扩展关系模型的整体空间数据管理[J].遥感学报,1997,1(1):69-73.