Oracle空间数据库spatial之初体验

日期: 2010-08-05 作者:Oracle DBA 来源:TechTarget中国 英文

1引言   Oracle Spatial主要通过元数据表、空间数据字段(即sdo_Geometry字段)和空间索引来管理空间数据,并在此基础上提供一系列空间查询和空间分析的程序包,让用户进行更深层次的GIS应用开发。Oracle Spatial使用空间字段sdo_Geometry存储空间数据,用元数据表来管理具有sdo_Geometry字段的空间数据表,并采用R树索引和四叉树索引技术来提高空间查询和空间分析的速度。   2 Spatial数据库安装   2.1没有安装Oracle时Spatial的安装   在Oracle安装时需要选择安装Spatial组件,然后:   1. 以sys用户执行D……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

1引言

  Oracle Spatial主要通过元数据表、空间数据字段(即sdo_Geometry字段)和空间索引来管理空间数据,并在此基础上提供一系列空间查询和空间分析的程序包,让用户进行更深层次的GIS应用开发。Oracle Spatial使用空间字段sdo_Geometry存储空间数据,用元数据表来管理具有sdo_Geometry字段的空间数据表,并采用R树索引和四叉树索引技术来提高空间查询和空间分析的速度。

  2 Spatial数据库安装

  2.1没有安装Oracle时Spatial的安装

  在Oracle安装时需要选择安装Spatial组件,然后:

  1. 以sys用户执行D:oracleproduct10.2.0db_1ordadminordinst.sql创建MDSYS用户并相应的权限。

  2. 以sys用户再执行D:oracleproduct10.2.0db_1mdadminmdinst.sql创建所需的地理信息相关的包。

  2.2已经安装Oracle时Spatial的安装

  如果之前在安装数据库的时候没有安装对oracle Spatial的支持!

  可以:

  1.在高级安装->定制,添加上spatial组件。

  2. 以sys用户执行D:oracleproduct10.2.0db_1ordadminordinst.sql创建MDSYS用户并相应的权限。

  3. 以sys用户再执行D:oracleproduct10.2.0db_1mdadminmdinst.sql创建所需的地理信息相关的包。

  3 Spatial数据库使用

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

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

  Spaital在此数据类型的基础上,实现了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;

  4结论

  空间数据库技术用关系数据库管理系统(RDBMS) 来管理空间数据,主要解决存储在关系数据库中的空间数据与应用程序之间的数据接口问题, 即空间数据库引擎( Spatial Database Engine) 。更确切地说,空间数据库技术是解决空间数据对象中几何属性在关系数据库中的存取问题,其主要任务是:

  1) 用关系数据库存储管理空间数据;

  2) 从数据库中读取空间数据,并转换为GIS 应用程序能够接收和使用的格式;

  3) 将GIS 应用程序中的空间数据导入数据库,交给关系数据库管理。因此空间数据库技术是空间数据进出关系数据库的通道。

  以上介绍了Oracle空间数据库的安装和简单应用,希望能对今后开发GIS类项目起到抛砖引玉的作用。

相关推荐