SDO_GEOMETRY是空間資料中最基本的類型,此類型用於儲存幾何形狀。定義如下:
CREATE TYPE SDO_GEOMETRY AS OBJECT
(
SDO_GTYPE NUMBER,
SDO_SRID NUMBER,
SDO_POINT SDO_POINT_TYPE,
SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES SDO_ORDINATE_ARRAY
MEMBER FUNCTION GET_GTYPE RETURN NUMBER DETERMINISTIC,
MEMBER FUNCTION GET_DIMS RETURN NUMBER DETERMINISTIC,
MEMBER FUNCTION GET_LRS_DIM RETURN NUMBER DETERMINISTIC
);
其中包括了5個屬性和3個函數。
SDO_GTYPE
SDO_GTYPE用於定義SDO_GEOMETRY的類型,由四位元組成:
u 第一位代表了維數,可以是二維、三維、四維;
u 第二位標識Linear Referencing System (LRS),非LRS的類型,此值為0;
u 第三、四位代表形狀,從00到09共有10種類型。00 – 忽略此形狀;01 – 點;02 – 線;03 – 多邊形或面;04 – 類型的集合;05 – 01類型的集合,既多點集;06 – 02類型的集合;07 – 03類型的集合;08 – 體(三維空間中有多個面封閉起來的空間);09 – 08類型的集合;
SDO_SRID
座標系統的ID,可在MDSYS.SDO_COORD_REF_SYS表中找到座標資訊。
SDO_POINT
如果SDO_ELE_INFO與SDO_ORDINATES屬性為空白,此屬性不為空白,表示幾何形狀為“點”。
“點”是一種比較特殊的類型,如果SDO_ELE_INFO與SDO_ORDINATES屬性不為空白,即使給出了SDO_POINT的值也將會被忽略。SDO_POINT_TYPE類型由x, y, z定義一個點的座標,如果是二維點,z值為null。
此外,有向點不使用SDO_TYPE屬性。
SDO_ORDINATES
此屬性是一個數組,包含了幾何形狀所有的座標點。比如二維繫統中,SDO_ORDINATES(5, 4, 2, 12, 8, 15, 3, 7)包含了四個點,分別是(5, 4); (2, 12); (8, 15); (3, 7)。
SDO_ELEM_INFO
SDO_ELEM_INFO代表幾何形狀包含的元素的資訊,最基本的元素是點。比如,一個立方體包含多個面元素。元素還可以包含自己的子項目。
一個元素的資訊是一個數組,數組中有三個數。如(1, 1003, 1, 4, 2003, 1)包含兩個元素,第一個元素是(1, 1003, 1),第二個元素是(4, 2003, 1)。每一個數組的含義如下:
u 第一個數代表了元素在SDO_ORDINATES中起始位移位。如SDO_ORDINATES是(5, 4, 2, 12, 8, 15, 3, 7),元素的起始位移位是5,那麼(8, 15)是元素的第一個點。如果元素是串連的,那麼元素最後點的位移位就是下一元素的起始位移位,如(8, 15)是元素的終點,同時也是下一元素的起點。
u 第二個數代表了元素的類型,最多有四位。如果元素是複合類型,那麼在它之後跟著是它的子項目。
u 第三個數指名如何解釋元素。對複合元素來說,表明它子項目的個數。對單元素來說,通常元素類型的進一步解釋,比如(1, 1003, 3)代表矩形,(1, 1003, 4)代表圓形……