当前位置:Gxlcms > 数据库问题 > oracle 创建SDO_Geometry表

oracle 创建SDO_Geometry表

时间:2021-07-01 10:21:17 帮助过:6人阅读

 
  1. CREATE TABLE cola_markets (  
  2.   mkt_id NUMBER PRIMARY KEY,  
  3.   name VARCHAR2(32),  
  4.   shape SDO_GEOMETRY);  

 

[sql] view plain copy  
  1. INSERT INTO cola_markets VALUES(  
  2.   1,  
  3.   ‘cola_a‘,  
  4.   SDO_GEOMETRY(  
  5.     2003,  -- two-dimensional polygon  
  6.     NULL,  
  7.     NULL,  
  8.     SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior)  
  9.     SDO_ORDINATE_ARRAY(1,1, 5,7) -- only 2 points needed to  
  10.           -- define rectangle (lower left and upper right) with  
  11.           -- Cartesian-coordinate data  
  12.   )  
  13. );  
  14. -- The next two INSERT statements create areas of interest for   
  15. -- Cola B and Cola C. These areas are simple polygons (but not  
  16. -- rectangles).  
  17. INSERT INTO cola_markets VALUES(  
  18.   2,  
  19.   ‘cola_b‘,  
  20.   SDO_GEOMETRY(  
  21.     2003,  -- two-dimensional polygon  
  22.     NULL,  
  23.     NULL,  
  24.     SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)  
  25.     SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)  
  26.   )  
  27. );  
  28. INSERT INTO cola_markets VALUES(  
  29.   3,  
  30.   ‘cola_c‘,  
  31.   SDO_GEOMETRY(  
  32.     2003,  -- two-dimensional polygon  
  33.     NULL,  
  34.     NULL,  
  35.     SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)  
  36.     SDO_ORDINATE_ARRAY(3,3, 6,3, 6,5, 4,5, 3,3)  
  37.   )  
  38. );  
  39. -- Now insert an area of interest for Cola D. This is a  
  40. -- circle with a radius of 2. It is completely outside the  
  41. -- first three areas of interest.  
  42. INSERT INTO cola_markets VALUES(  
  43.   4,  
  44.   ‘cola_d‘,  
  45.   SDO_GEOMETRY(  
  46.     2003,  -- two-dimensional polygon  
  47.     NULL,  
  48.     NULL,  
  49.     SDO_ELEM_INFO_ARRAY(1,1003,4), -- one circle  
  50.     SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11)  
  51.   )  
  52. );  


需要写将建立的表的空间图层的信息插入一条到USER_SDO_GEOM_METADATA

 

[sql] view plain copy  
  1. INSERT INTO user_sdo_geom_metadata  
  2.     (TABLE_NAME,  
  3.      COLUMN_NAME,  
  4.      DIMINFO,  
  5.      SRID)  
  6.   VALUES (  
  7.   ‘cola_markets‘,  
  8.   ‘shape‘,  
  9.   SDO_DIM_ARRAY(   -- 20X20 grid  
  10.     SDO_DIM_ELEMENT(‘X‘, 0, 20, 0.005),  
  11.     SDO_DIM_ELEMENT(‘Y‘, 0, 20, 0.005)  
  12.      ),  
  13.   NULL   -- SRID  
  14. );  
[sql] view plain copy  
  1. -- SRID  

USER_SDO_GEOM_METADATA 在登陆PL/SQL后,Users→MDSYS→Objects→Views→USER_SDO_GEOM_METADATA 

打开可以查看到下图(我已经插入了2个空间表的记录了)

技术分享图片

可以看到这个插入的记录,点击红色方框初的任意一个,会出现下图:

技术分享图片

 

[sql] view plain copy  
  1. SDO_DIM_ARRAY(   -- 20X20 grid  
  2.     SDO_DIM_ELEMENT(‘X‘, 0, 20, 0.005),  
  3.     SDO_DIM_ELEMENT(‘Y‘, 0, 20, 0.005)  
  4.      ),  


就是这句sql的意思了,其中SDO_DIMNAME是一个二维的最大值和最小值的描述,SDO_LB是在X上面最小值,SDO_UB是X上面的最大值,SDO_TOLERANCE是指误差的大小,这里就是指0.005内的数据都会默认为一个数据。

 

第四步就是,建立空间索引(COLA_SPATIAL_IDX)

 

[sql] view plain copy  
  1. CREATE INDEX cola_spatial_idx  
  2.    ON cola_markets(shape)  
  3.    INDEXTYPE IS MDSYS.SPATIAL_INDEX;  


建立索引的目的是增加查询速度(理论上也可以不建立索引进行查询,但是实际中基本无法查询的出来)

建立好索引后会在tables中生成一个下面的表:

技术分享图片

这个是个索引表:

可以在系统的索引表中找的到。

以上就创建完成了SDO_Geometry表了;可以开始空间分析了。

oracle 创建SDO_Geometry表

标签:circle   http   nbsp   mod   数据   null   bsp   sys   number   

人气教程排行