文章詳情頁
Oracle Spatial 簡(jiǎn)介
瀏覽:4日期:2023-11-15 19:07:04
Oracle Spatial 簡(jiǎn)介: 首先,Oracle 支持自定義的數(shù)據(jù)類型,你可以用數(shù)組,結(jié)構(gòu)體或者帶有構(gòu)造函數(shù),功能函數(shù)的類來定義自己的對(duì)象類型。這樣的對(duì)象類型可以用于屬性列的數(shù)據(jù)類型,也可以用來創(chuàng)建對(duì)象表。 而Oracle Spatial也正是基于此種特性所開發(fā)的一套空間數(shù)據(jù)處理系統(tǒng)。 Spatial 的自定義數(shù)據(jù)類型有很多,都在MDSYS方案下,經(jīng)常使用的是SDO_GEOMETRY類型。SDO_GEOMETRY表示一個(gè)幾何對(duì)象,可以是點(diǎn)、線、面、多點(diǎn)、多線、多面或混合對(duì)象。 Spatial 在此數(shù)據(jù)類型的基礎(chǔ)上,實(shí)現(xiàn)了R樹空間索引和四叉樹空間索引,還以sql函數(shù)的形式實(shí)現(xiàn)了多種空間分析功能。Oracle Spatial 使用: 1、將SDO_GEOMETRY數(shù)據(jù)類型作為數(shù)據(jù)表的一個(gè)列。CREATE TABLE cola_markets ( mkt_id NUMBER PRIMARY KEY, name VARCHAR2(32), shape MDSYS.SDO_GEOMETRY);2、填寫空間元數(shù)據(jù)。INSERT INTO USER_SDO_GEOM_METADATA VALUES ( 'cola_markets', 'shape', MDSYS.SDO_DIM_ARRAY(-- 20X20 grid MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005), MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005) ), NULL-- SRID);3、創(chuàng)建空間索引。CREATE INDEX cola_spatial_idxON cola_markets(shape)INDEXTYPE IS MDSYS.SPATIAL_INDEX;至此,空間數(shù)據(jù)表的創(chuàng)建才算正式完成;。4、插入空間數(shù)據(jù)??臻g數(shù)據(jù)的插入要INSERT INTO cola_markets VALUES( 2, 'cola_b', MDSYS.SDO_GEOMETRY( 2003,; -- 2-dimensional polygon NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring) MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1) ));5、空間分析查詢示例。-- Return the topological difference of two geometries.SELECT SDO_GEOM.SDO_DIFFERENCE(c_a.shape, m.diminfo, c_c.shape, m.diminfo) FROM cola_markets c_a, cola_markets c_c, user_sdo_geom_metadata m WHERE m.table_name = 'COLA_MARKETS' AND m.column_name = 'SHAPE' AND c_a.name = 'cola_a' AND c_c.name = 'cola_c';八風(fēng)不動(dòng)2004年11月23日涂鴉于大連
標(biāo)簽:
Oracle
數(shù)據(jù)庫
排行榜
