oracle 创建SDO_Geometry表
时间:2021-07-01 10:21:17
帮助过:6人阅读
- CREATE TABLE cola_markets (
- mkt_id NUMBER PRIMARY KEY,
- name VARCHAR2(32),
- shape SDO_GEOMETRY);
[sql] view plain
copy
- INSERT INTO cola_markets VALUES(
- 1,
- ‘cola_a‘,
- SDO_GEOMETRY(
- 2003,
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,3),
- SDO_ORDINATE_ARRAY(1,1, 5,7)
-
-
- )
- );
- INSERT INTO cola_markets VALUES(
- 2,
- ‘cola_b‘,
- SDO_GEOMETRY(
- 2003,
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,1),
- SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)
- )
- );
- INSERT INTO cola_markets VALUES(
- 3,
- ‘cola_c‘,
- SDO_GEOMETRY(
- 2003,
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,1),
- SDO_ORDINATE_ARRAY(3,3, 6,3, 6,5, 4,5, 3,3)
- )
- );
- INSERT INTO cola_markets VALUES(
- 4,
- ‘cola_d‘,
- SDO_GEOMETRY(
- 2003,
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,4),
- SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11)
- )
- );
需要写将建立的表的空间图层的信息插入一条到USER_SDO_GEOM_METADATA
[sql] view plain
copy
- INSERT INTO user_sdo_geom_metadata
- (TABLE_NAME,
- COLUMN_NAME,
- DIMINFO,
- SRID)
- VALUES (
- ‘cola_markets‘,
- ‘shape‘,
- SDO_DIM_ARRAY(
- SDO_DIM_ELEMENT(‘X‘, 0, 20, 0.005),
- SDO_DIM_ELEMENT(‘Y‘, 0, 20, 0.005)
- ),
- NULL
- );
[sql] view plain
copy
USER_SDO_GEOM_METADATA 在登陆PL/SQL后,Users→MDSYS→Objects→Views→USER_SDO_GEOM_METADATA
打开可以查看到下图(我已经插入了2个空间表的记录了)
可以看到这个插入的记录,点击红色方框初的任意一个,会出现下图:
[sql] view plain
copy
- SDO_DIM_ARRAY(
- SDO_DIM_ELEMENT(‘X‘, 0, 20, 0.005),
- SDO_DIM_ELEMENT(‘Y‘, 0, 20, 0.005)
- ),
就是这句sql的意思了,其中SDO_DIMNAME是一个二维的最大值和最小值的描述,SDO_LB是在X上面最小值,SDO_UB是X上面的最大值,SDO_TOLERANCE是指误差的大小,这里就是指0.005内的数据都会默认为一个数据。
第四步就是,建立空间索引(COLA_SPATIAL_IDX)
[sql] view plain
copy
- CREATE INDEX cola_spatial_idx
- ON cola_markets(shape)
- INDEXTYPE IS MDSYS.SPATIAL_INDEX;
建立索引的目的是增加查询速度(理论上也可以不建立索引进行查询,但是实际中基本无法查询的出来)
建立好索引后会在tables中生成一个下面的表:
这个是个索引表:
可以在系统的索引表中找的到。
以上就创建完成了SDO_Geometry表了;可以开始空间分析了。
oracle 创建SDO_Geometry表
标签:circle http nbsp mod 数据 null bsp sys number