首页 > 数据库 > Oracle > 正文

Oracle Spatial 简介

2020-03-09 22:49:14
字体:
来源:转载
供稿:网友

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';


八风不动2004年11月23日涂鸦于大连
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表