数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

OracleSpatial简介


发布日期:2018年08月28日
 
OracleSpatial简介

Oracle Spatial 简介

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

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

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

Oracle Spatial 使用

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

CREATE TABLE cola_markets (

mkt_id NUMBER PRIMARY KEY

name VARCHAR()

shape MDSYSSDO_GEOMETRY);

填写空间元数据

INSERT INTO USER_SDO_GEOM_METADATA

VALUES (

cola_markets

shape

MDSYSSDO_DIM_ARRAY( X grid

MDSYSSDO_DIM_ELEMENT(X )

MDSYSSDO_DIM_ELEMENT(Y )

)

NULL SRID

);

创建空间索引

CREATE INDEX cola_spatial_idx

ON cola_markets(shape)

INDEXTYPE IS MDSYSSPATIAL_INDEX;

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

插入空间数据空间数据的插入要

INSERT INTO cola_markets VALUES(

cola_b

MDSYSSDO_GEOMETRY(

dimensional polygon

NULL

NULL

MDSYSSDO_ELEM_INFO_ARRAY() one polygon (exterior polygon ring)

MDSYSSDO_ORDINATE_ARRAY( )

)

);

空间分析查询示例

Return the topological difference of two geometries

SELECT SDO_GEOMSDO_DIFFERENCE(c_ashape mdiminfo c_cshape mdiminfo)

FROM cola_markets c_a cola_markets c_c user_sdo_geom_metadata m

WHERE mtable_name = COLA_MARKETS AND lumn_name = SHAPE

AND c_aname = cola_a AND c_cname = cola_c;

上一篇:深入了解Oracle 10g新的多重集运算符

下一篇:如何有效的利用ORACLE数据字典