Oracle Spacial(空间数据库)创建空间字段示例

示例:插入/索引/查询

SDO_GEOMETRY对象类型

Geometry示例

Geometry元数据结构

度量单位

创建Feature表“可乐市场”

CREATE TABLECOLA_MARKETS

         ("MKT_ID"NUMBER(10) NOT NULL,

         "NAME"  VARCHAR2(10),

         "SHAPE""MDSYS"."SDO_GEOMETRY",

   CONSTRAINT "COLAKEY" PRIMARY KEY("MKT_ID"));

insert into cola_markets values(

  1,

 ‘cola_a’,

 MDSYS.SDO_GEOMETRY(

   2003, -- 2维多边形

   NULL,

   NULL,

   MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), --矩形,外部

   MDSYS.SDO_ORDINATE_ARRAY(1,1, 5,7) --顶点数据

  )

);

更新元数据视图

         创建空间索引前必需工作,相当于创建图层

insert into USER_SDO_GEOM_METADATAvalues(

 'cola_markets',

 'shape',

 MDSYS.SDO_DIM_ARRAY(

   MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005),

   MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005)),

 NULL

);

MDSYS.SDO_DIM_ARRAY

         由最多4个SDO_DIM_ELEMENT组成,每个SDO_DIM_ELEMENT描述一个维度的信息

         SDO_DIMNAME:维度名称,如“x”

         SDO_LB, SDO_UB:上下限

         SDO_TOLERANCE:容差值

创建空间索引

create index cola_spatial_idx

on cola_markets(shape)

indextype isMDSYS.SPATIAL_INDEX;

--建立r-tree索引

--下面的语句建立quad-tree索引

--parameters(‘SDO_LEVEL=8’);


查询示例

返回a/c市场的交集

select SDO_GEOM.SDO_INTERSECTION(c_a.shape,c_c.shape,0.005) from cola_markets c_a, cola_markets c_c where c_a.name=‘cola_a’ and c_c.name=‘cola_c’;

返回所有市场的面积

select name, SDO_GEOM.SDO_AREA(shape, 0.005) from cola_markets

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值