Oracle Spatial 简介(转)

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-122281/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-122281/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值