ORACLE SPATIAL 简介

一、 ORACLE SPATIAL 简介

      ORACLE SPATIAL 是Oracle 的支持GIS数据存储的空间数据处理系统,是 Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型、栅格数据类型和持续拓扑数据的原生数据类型。ORACLE SPATIAL使得我们能够在一个多用户环境中部署地理信息系统(GIS),并且与其它企业数据有机结合起来,统一部署电子商务、政务。有了 ORACLE SPATIAL 之后,即可用标准的 SQL 查询管理我们的空间数据。

 

二、 ORACLE SPATIAL 表结构简介

Oracle 支持自定义的数据类型,你可以用数组,结构体或者带有构造函数,功能函数的类来定义自己的对象类型。这样的对象类型可以用于属性列的数据类型,也可以用来创建对象表。而Oracle Spatial也正是基于此种特性所开发的一套空间数据处理系统。

Spatial 的自定义数据类型有很多,都在MDSYS方案下,经常使用的是SDO_GEOMETRY类型。SDO_GEOMETRY表示一个几何对象,可以是点、线、面、多点、多线、多面或混合对象。

Spatial 在此数据类型的基础上,实现了R树空间索引和四*树空间索引,还以sql函数的形式实现了多种空间分析功能。

   Oracle Spatial 使用:

1、将SDO_GEOMETRY数据类型作为数据表的一个列。

   CREATE TABLE cola_markets (

        mkt_id NUMBER PRIMARY KEY,

      name VARCHAR2(32),

        shape MDSYS.SDO_GEOMETRY);

   2、填写空间元数据。

   INSERT INTO USER_SDO_GEOM_METADATA

   VALUES (

        'cola_markets',

        'shape',

        MDSYS.SDO_DIM_ARRAY( -- 20X20 grid

              MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005),

              MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005)

        ),

        NULL -- SRID

);

3、创建空间索引。

   CREATE INDEX cola_spatial_idx

   ON cola_markets(shape)

   INDEXTYPE IS MDSYS.SPATIAL_INDEX;

   至此,空间数据表的创建才算正式完成 。

   4、插入空间数据。空间数据的插入要

   INSERT INTO cola_markets VALUES(

        2,

         'cola_b',

         MDSYS.SDO_GEOMETRY(

              2003, -- 2-dimensional polygon

              NULL,

              NULL,

              MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)

              MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)

        )

);

5、空间分析查询示例。

   -- Return the topological difference of two geometries.

   SELECT SDO_GEOM.SDO_DIFFERENCE(c_a.shape, m.diminfo, c_c.shape, m.diminfo)

   FROM cola_markets c_a, cola_markets c_c, user_sdo_geom_metadata m

   WHERE m.table_name = 'COLA_MARKETS' AND m.column_name = 'SHAPE'

   AND c_a.name = 'cola_a' AND c_c.name = 'cola_c';

三、 ORACLE SPATIAL 功能

由于传统的GIS技术已达到其本身可伸缩性和可靠性的极限,用户越来越多地转向以数据库为中心的空间计算。ORACLESPATIAL将空间过程和操作直接转移到数据库内核中,从而提高了性能和安全性。ORACLESPATIAL从1995年ORACLE7.1.6开始发展到2003年的10G版本,空间数据处理能力越来越强大。

ORACLESPATIAL将所有的地理空间数据类型(矢量、栅格、网格、影像、网络、拓扑)统一在单一、开放的、基于标准的数据管理环境中,这就减少了管理单独、分离的专用系统的成本、复杂性和开销。ORACLESPATIAL不但具有传统GIS的所有特性,,而且还具有关系数据库的特性,这些特性扩展了应用程序开发人员的工作范围并提供了他们的生产率,因而能支持更广泛的应用程序并提高性能主要表现在:

1)几何结构和空间参照

ORACLESPATIAL支持三种基本的几何形状,这些几何形状可分别用于表示那些通常构成空间数据库的特征,如道路、管理边界、公共设施等。这些空间基础元素包括:

点和点簇:点可以表示建筑、消防栓、电线杆、钻井、货车车厢或移动的交通工具等位置。

线和线串:线可以表示道路、铁路线、公用设施管线或故障线等。

多边形和带孔的复杂多边形:多边形可以表示城市、街区、河漫滩或油田和天然气田的轮廓。带孔的多边形可以表示由一片沼泽环绕的一小块土地。

为了有效地集成和表示空间信息,ORACLESPATIAL提供了丰富的工具来管理坐标系统和投影。支持950多种常用的制图坐标系统,而且用户还可以定义新的坐标系统。ORACLESPATIAL还支持在不同的坐标系统间任意转换数据。这些转换一次可以在一个几何级上或者整个图层上进行。

2)空间索引:R-tree

为了优化空间查询的性能,OracleLocator为关系数据库提供了空间索引功能。OracleLocator提供R-tree索引创建功能,该功能生成和存储几何结构的近似值作为索引。R-tree索引易于创建和使用—几乎不需要调整即可获得最佳性能。可以在空间数据的两个、三个或四个维度上创建R-tree索引。

3)空间操作符

各种几何特征的交互作用可以通过使用比较操作符来确定,如contains、covers和anyinteract(任何交互作用)。这样就可以答复类似下列的请求:“列出这条铁道线穿过的所有校区”或“找出这个城市中所有的花店”

4)基于函数的索引支持

现在不需要将位置信息显式地存储为SDO_GEOMETRY类型的列即可在关系属性上执行空间查询。用户可以对存储在关系列(例如经度和纬度)中的空间数据上创建空间索引。然后用户可以在这些关系列上调用空间操作符,而无需创建一个SDO_GEOMETRY列。

5)大地坐标支持

就地表测量而言,无论坐标系统是什么,空间函数、操作符和公用程序都提供正确的结果。距离、面积和角度等单位都获得了全面的支持。

6)空间索引的分区支持

空间索引可以根据分区表进行分区。对空间数据分区并使用分区的本地索引,可以为大型数据集上的查询以及并发查询与更新提供性能增益。它还使索引的维护更加容易。

7)并行创建空间索引

索引创建可以被细分成能并行执行的更小的任务,以便利用未使用的硬件(CPU)资源。对于某些空间数据库以及索引类型和数据来说,并行索引创建能充分提高索引构建性能并显著节约时间。

8)线性参照支持

ORACLESPATIAL将“测量”信息存储为ORACLESPATIAL线性几何结构的一部分。此特性对于线性联网和动态分割应用程序很关键,这些应用程序常见于互联网街道路径搜索、运输、公用设施和电信网络以及管线管理。

9)空间聚集

空间聚集函数概括了与几何对象相关的SQL查询结果。空间聚集函数返回类型为SDO_GEOMETRY的几何对象。空间聚集的使用提高了性能,降低了底层代码的复杂性。

10)网络数据模型

在Oracle数据库10g中提供了一个存储网络(图形)结构的数据模型。它显式地存储和维护“连接—节点”网络的连通性并提供网络分析功能(如最短路径、连通性分析)。需要网络解决方案的应用程序包括运输、公共交通、公共设施和生命科学(生物化学路径分析)。

对于运输应用程序,该网络数据模型还支持一个路线搜索特性。Oracle引入了一个可伸缩的路线搜索引擎,该引擎提供了地址(或预先经过地理编码的位置)之间的驾驶距离、时间和方向。它作为一个Java客户端库提供给网络数据模型,这个网络数据模型可以容易地部署在Oracle应用服务器或独立的OC4J环境中。其他的特性包括:最快或最短路径的首选项,返回概要或详细的驾驶指导;并返回沿着一条街道网络从单个位置到多个目标位置的时间和距离。

11)拓扑数据模型

ORACLESPATIAL包含一个数据模型和模式,它们在Oracle数据库中持久存储拓扑结构。当进行大量特征编辑且对地图和地图图层间的数据完整性的有高度需求时,这非常有用。另一个好处是基于拓扑结构的查询一般比涉及到关系(如邻接性、连通性和包容性)的查询执行速度更快。土地管理(地籍)系统和空间数据提供商将从这些功能中获益。

12)GeoRaster

一种新的数据类型在Oracle数据库10g中以本地形式管理地理参照栅格成像(卫星成像、遥感数据、网格化数据)。ORACLESPATIAL的GeoRaster特性提供成像的地理参照、用于元数据管理的XML模式和基本操作,如形成分层、平铺和交*。环境管理、国防/国家安全、能源勘探和人造卫星影像门户方面的应用程序将会从中受益。

13)空间分析函数

新的基于服务器的空间分析功能包括分类、分装、关连空间关系—这些功能对于商务智能应用程序非常重要。

14)地理编码器

地理编码是将地理参照(比如地址和邮编)与位置坐标(经度和纬度)联系起来的过程。在ORACLESPATIAL10g中提供一个功能全面的地理编码引擎。它通过查询存储在Oracle数据库中的经过地理编码的数据,提供国际地址标准化、地理编码和POI匹配。它独特的非解析地址支持为客户应用程序增加了巨大的灵活性和便利性。ORACLESPATIAL地理编码器作为Java存储过程在Oracle数据库服务器内部实施。并提供了一个用于地理编码的PL/SQLAPI。

       从ORACLE SPATIAL的特性中可以看出, 在Oracle数据库内实现了所有的传统的GIS管理、分析功能,而且这些功能与ORACLE的强大数据仓库管理技术紧密的融合在一起,可以利用标准的SQL语言管理分析空间数据。因此,利用ORACLE SPATIAL我们完全可以部署适合各个领域的空间数据仓库服务。然后通过C/S、B/S与客户平台联系起来,和用户交互。

四、 ORACLE SPATIAL 优点

ORACLESPATIAL在数据库服务端集成了空间数据仓库高性能管理技术,使得地理信息可以其它业务结合起来,并可以分布式地布署在INTERNET上,所有的这些优势正在导致新型空间数据仓库应用程序的出现:

1)低拥有成本

在企业级别上部署应用程序,集中存储空间数据,从而降低了拥有成本。互联网/内联网体系结构不需要在台式机上安装和维护客户端软件,也不需要在企业数据库之外单独存储和管理数据。在客户机上只需要一个标准互联网浏览器。

2)低风险

空间信息直接集成到ORACLESPATIAL中。这就促成了可伸缩的、安全的和高性能的应用程序。开发人员可以选择部署在任何服务器平台上,包括Solaris、Unix、Linux、WindowsNT和Windows2000,并使用现有的IT资源来管理这些应用程序。

3)高价值

       利用互联网,更多用户可以在机会不增加机构成本的情况下访问应用程序。这意味着用户可以全天候地访问任务的关键信息。

相关推荐