示例:插入/索引/查询
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