时间:2022-11-01 00:30:01 | 来源:信息时代
时间:2022-11-01 00:30:01 来源:信息时代
空间查询语言 : 在空间数据库中定义和操作空间数据类型及其关联的空间操作的结构化查询语言。通常是在SQL语言的基础上进行空间数据类型及其相关的空间操作的扩展以支持空间查询。
空间查询语言的基本要求是,采用更贴近人们对空间理解的概念,为空间数据提供更高层次的抽象。关系代数理论和SQL通常只提供简单的数据类型: 整型、日期型、字符串型等,而空间数据库的应用需要处理点、线和多边形等复杂数据类型。为此,数据库厂商采取了两个对策: 一个是用大型二进制对象(blob)来存储空间数据;另一个是建立一种混合方式,即通过GIS软件把空间属性存储在操作系统的文件中。SQL不能处理以blob形式存储的数据,解释和操作空间数据的任务就交给了应用程序,使得数据必须依赖于宿主语言的应用程序代码,这既低效又缺乏美感。对于混合方式,空间属性数据单独存储在一个操作系统文件中,这就无法利用传统数据库的服务功能。因此需要扩展SQL语言来支持空间数据类型及其相应的空间操作。
空间查询语言可以通过引入面向对象中用户自定义抽象数据类型的思想来实现。抽象数据类型由用户自定义类型和相关的函数组成。面向对象理论为扩展数据库以支持空间(复杂)对象能力发挥了重要作用。它扩展了关系数据库的面向对象特性,最终产生对象关系数据库(OR-DBMS)的通用框架。OR-DBMS的关键要素是它支持SQL的最新版本:SQL3/SQL99,加入了对用户自定义类型的支持。可以通过在SQL3/SQL99中定义空间数据类型和操作,以作为操纵和获取空间数据的工具。其中广为接受的SQL扩展标准为OGC所制定。
OGC标准规定了对空间应用必不可少的数据类型及与其相关的运算,其空间数据模型可以嵌入到各种不同的编程语言中。OGC的几何数据模型包括一个基类:GEOMETRY,这个基类是不能实例化的,但是它规定了适用于其子类的空间参照系统。从GEOMETRY继承下来的有四个主要的子类:Point、Curve 、Surface和GeometryCollection,每类还关联一组作用于其实例上的操作。OGC标准相当于实现了SQL3的一个子集。
对象关系数据库或面向对象数据库提供了内嵌机制来支持用户自定义类型,这对于需要处理非传统数据类型的应用(如GIS)十分有用。不过也增加了数据库应用开发者的负担,需要由他们来负责构建符合语法和语义的数据类型。所以商业数据库厂商一般会为数据库用户提供包含无缝接口的特殊应用包。
空间查询语言提供了插入(insert)、删除(delete)和成员查询(member)等操作,用于管理空间数据类型的集合。此外还支持下面重要的查询操作:
(1)点查询(point query): 找出所有包含给定点的空间对象。
(2)范围查询(range query): 找出所有在给定空间范围中的空间对象。
(3)最近邻居(nearest neighbor): 找出距给定空间对象最近的对象。
(4)距离扫描(distance scan): 按与给定点距离的增序列出所有点。
(5)相交查询(intersection query):找出所有与给定空间对象相交的空间对象。
(6)包含查询(containment query): 找出所有完全包含在给定空间对象中的空间对象。
(7)空间连接查询(spatial join query):找出所有相互交叠的空间对象对。