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

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 2002 | | pagina 19