Oracle Spatial 实例简介

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 字串4

);

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

转载自:https://blog.csdn.net/hengcai001/article/details/4394600

You may also like...