oracle spatial空间类型创建
oracle空间表创建
使用oracle11G创建空间表数据,基于Oracle Spatial的存储方式,通过这种存储方式的几何列Shape的字段类型为MDSYS.SDO_GEOMETRY类型,个人觉得关于操作空间数据的SQL语句来说,相交于PostgreSQL、MS SQLServer麻烦一些
创建空间表SQL
空间字段:location
CREATE TABLE mylake (
feature_id NUMBER PRIMARY KEY,
name VARCHAR2(32),
location MDSYS.SDO_GEOMETRY);
在user_sdo_geom_metadata 表中插入新记录,用于描述空间字段
INSERT INTO user_sdo_geom_metadata VALUES (
'mylake', ---表名
'location', ---字段名
MDSYS.SDO_DIM_ARRAY(
MDSYS.SDO_DIM_ELEMENT('X', 0, 100, 0.05), ---X维最小,最大值和容忍度。
MDSYS.SDO_DIM_ELEMENT('Y', 0, 100, 0.05) ---Y维最小,最大值和容忍度
),
'8307'//---坐标系,缺省为笛卡尔坐标系
);
创建空间索引
CREATE INDEX MYLAKE_SIDX ON MYLAKE(LOCATION)
INDEXTYPE IS MDSYS.SPATIAL_INDEX
创建一条空间点数据
INSERT INTO mylakepoint
VALUES
(11,
'UpDooGIS',
(MDSYS.SDO_GEOMETRY(2001,
8307,
MDSYS.SDO_POINT_TYPE(t.jd, t.wd, NULL),
NULL,
NULL)))
插入一条空间线数据
INSERT INTO mylakeline VALUES(
11,
'UpDooGIS',
MDSYS.SDO_GEOMETRY(2002,8307,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),MDSYS.SDO_ORDINATE_ARRAY(118.158115,29.491359,118.159059,29.492015,118.164604,29.496581)
)
)
插入多边形数据
INSERT INTO mylake VALUES(
10,
'Lake Calhoun',
MDSYS.SDO_GEOMETRY(
2003,
8307,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
MDSYS.SDO_ORDINATE_ARRAY(118.5482066778768,31.489250722082257,118.54821566102964,31.489235401526255,118.5482066778768,31.489227741247323)
));