在oracle spatial 里怎么存储3D数据
给个列子
给个列子
解决方案 »
- shell中“<<!”是啥意思?
- Orcale中row_number()over()求所有非重复记录 问题
- 求个存储过程,周末假期还要麻烦大家了,谢谢
- 有关oracle查询语句性能的问题,附带执行计划。请有经验的朋友帮忙看看,谢谢。
- 关于根据字段中的一部分值分组
- oracle 时间问题 2分10秒 按 3分算
- 请教rownum问题,为何不支持>,>=,=,between...and
- 用时间戳timestamp字段做为select的条件时该怎么写?
- 请问在sl/sql中,怎样处理当要查询的表明也是变量的情况?请看例子。。。
- 在p4的机子oracle 8i安装好了以后net8 assiastant不能启动了
- 想要将Oracle数据转成Excel文件
- 帮忙写一条SQL语句
===================================
Oracle Spatial 简介:
首先,Oracle 支持自定义的数据类型,你可以用数组,结构体或者带有构造函数,功能函数的类来定义自己的对象类型。这样的对象类型可以用于属性列的数据类型,也可以用来创建对象表。而Oracle Spatial也正是基于此种特性所开发的一套空间数据处理系统。
Spatial 的自定义数据类型有很多,都在MDSYS方案下,经常使用的是SDO_GEOMETRY类型。SDO_GEOMETRY表示一个几何对象,可以是点、线、面、多点、多线、多面或混合对象。
Spatial 在此数据类型的基础上,实现了R树空间索引和四叉树空间索引,还以sql函数的形式实现了多种空间分析功能。Oracle Spatial 使用:
1、将SDO_GEOMETRY数据类型作为数据表的一个列。 CREATE TABLE cola_ets (
mkt_id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape MDSYS.SDO_GEOMETRY); 2、填写空间元数据。 INSERT INTO USER_SDO_GEOM_METADATA
VALUES (
'cola_ets',
'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_ets(shape)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
至此,空间数据表的创建才算正式完成 。 4、插入空间数据。空间数据的插入要INSERT INTO cola_ets 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_ets c_a, cola_ets 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日涂鸦于大连