oracle 建立SDO_Geometry表

來源:互聯網
上載者:User

標籤:circle   http   nbsp   mod   資料   null   bsp   sys   number   

Oracle Spatial由一坨的對象資料類型,類型方法,操作子,函數與過程組合而成。一個地理對象作為一個SDO_GEOMETRY對象儲存在表的一個欄位裡。空間索引則由普通的DDL和DML語句來建立與維護。
 本章主要說了一些例子示範如何建立,查詢,索引空間資料。

簡單的插入,索引與查詢空間資料例子
 本節示範一個很簡單建立空間表,插入,建立索引,查詢資料的過程。
 情境是一個軟飲料公司,用地理資訊來表示他們的產品(可樂)在各個地區的情況。這些情況可以是:市場份額,競爭壓力,增長潛力等等。而地區可以是鄰近的市,州,省或國家。
 我們要作的是:
 1.建立一個表(COLA_MARKETS)來儲存空間資料
 2.插入四個(cola_a, cola_b, cola_c, cola_d)地區的資料
 3.升級USER_SDO_GEOM_METADATA視圖來反正這些地區的維度資訊
 4.建立空間索引(COLA_SPATIAL_IDX)
 5.進行一些空間查詢

 

 

[sql] view plain copy 
  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表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.