dat in dit onderzoek wordt gebruikt,
zijn punt, lijn en polygoon, inclusief
cirkelbogen en combinaties van deze
objecttypen (zie kader).
Het object-relationele model in Oracle definieert een
ruimtelijk object type sdo_geometry als:
CREATE TYPE sdo_geometry AS OBJECT
SDO.GTYPE NUMBER,
SD0J3RID NUMBER,
SDO_POINT SDO_POINT_TYPE
SDO_ELEM_INEO MDSYSSDO_ELEM_INFO_ARRAY,
SDO_ORDINATES MDS YSSDO_ORDINATE_ARRAY)
Waarbij:
sdo_gtype: het type geometrie (punt, lijn, polygoon, multi-
punt, multilijn, multipolygoon)
sdo_srid: het referentiesysteem dat gebruikt wordt voor
de coördinaten
sdo_elem_info: een lijst met een aantal parameters die
vertellen hoe de lijst met coördinaten geïnterpreteerd
dient te worden. Een ruimtelijk object is samengesteld uit
één of meerdere elementen. Voor elk element wordt aan
gegeven:
bij welk coördinaat het element begint;
het elementtype (punt, lijn,polygoon);
een interpretatiecode (rechte lijn of een cirkelboog,
rechthoek, enzovoort).
Een voorbeeld van het gebruik van het object-relationele
model in Oracle is een rechthoek met (6,21) als linker
onderhoek en (9,30) als rechter bovenhoek:
SD0_GE0METRY Column
SD0_GTYPE 2003
SD0_SRID NULL
SD0JP0INT NULL
SD0_ELEMJNP0 (1,1003,3)
SD0_0RDINATES (6,21,9,30))
In sdo_gtype=2003 geeft de eerste positie de dimensie aan
(2D in dit geval), de laatste positie geeft het type weer (3 is
een polygoon). In sdo_elem_info geeft de laatste 3 in
1,1003,3 aan dat dit een rechthoek is en daarom slechts
twee punten nodig heeft voor de definitie (6,21 en 9,30).
De 1003 (sdo_etype) geeft een buitengrens van een poly
goon aan. De 1 (sdo_starting_offset) geeft aan dat dit ele
ment op positie 1 van de coördinatenlijst begint.
De volgende queries laten zien hoe een rechthoek (met 0,0
linksonder en 100,100 rechtsboven) wordt opgeslagen als
een ruimtelijk datatype in Oracle (sdo_geometry type) in
de 'geom2d'-tabel. Dezelfde rechthoek op een hoogte van
50 wordt opgeslagen in 'geom3d'. Eerst worden de tabel
len aangemaakt, vervolgens gevuld, daarna worden de
metadata opgeslagen en tenslotte worden de data gein-
Zoals blijkt uit het voorbeeld in het kader kunnen z-waar-
den worden gebruikt om 3D-objecten (3D-lijnen, 3D-polygo-
nen en 3D-punten) op te slaan. Echter 3D-geometrieprimi-
tieven worden niet ondersteund in Oracle Spatial 9i. Daar-
dexeerd (d.m.v. een r-tree index die default is voor de
ruimtelijke indexering). De metadata beschrijft de dimen
sies van de data en het bereik en de tolerantie van iedere
dimensie.
creation of the tables
create table geom2d
shape mdsys.sdo_geometry not null,
TAG number(11) not null);
create table geom3d
shape mdsys.sdo_geometry not null,
TAG number(11) not null);
inserting the data
a 2D box
insert into geom2d (shape,TAG) values
mdsysSD0_GE0METRY(2003, NULL, NULL,
mdsysSD0_ELEM_INE0_ARRAY11003, 3),
mdsys.SD0_0RDINATE_ARRAY(0,0,100,100)),
1);
a 3D box
insert into geom3d (shape,TAG) values
mdsysSDO_GE0METRY(3O03NULL, NULL,
mdsysSD0_ELEM_INE0_ARRAY11003, 3),
mdsys.SD0_0RDINATE_ARRAY(0,0,50,100,100,50)),
2);
inserting metadata
2D table*/
insert into user_sdo_geom_metadata values
('GE0M2D', 'SHAPE', mdsys.sdo_dim_array(
mdsys.sdo_dim_element('X', 0, 500, 0.5),
mdsys.sdo_dim_element('Y', 0, 500, 0.5) NULL);
/*3D table*/
insert into user_sdo_geom_metadata values
('GE0M3D', 'SHAPE', mdsys.sdo_dim_array(
mdsys.sdo_dim_element('X', 0, 500, 0.5),
mdsys.sdo_dim_element('Y', 0, 500, 0.5),
mdsys.sdo_dim_element('Z', 0, 300, 0.5)
NULL);
index creation
geom2d*/
create index GE0M2DJ on GE0M2D(SHAPE)
indextype is mdsys.spatialJndex;
analyze table GE0M2D compute statistics;
geom3d*/
create index GE0M3D_I on GE0M3D(SHAPE)
indextype is mdsys.spatialjndex;
analyze table GE0M3D compute statistics;
GEODESIA 2002-7/8