den van de functie 'return_polygon'. In Oracle 9i wordt dit in twee stappen geïmplementeerd. Ten eerste door het toevoegen van een regel aan de tabel USER_SDO_GEOMJVIETADATA en ver volgens door het creëren van de ruim telijke index door het opgeven van de functienaam en de gebruikte para meters insert into user_sdo_geom_metadata values( 'LKI_PARCEL', 'RETURN_POLYGON(OBJECT_ID)\ mdsys.sdo_dim_array mdsys.sdo_dim_element('X', 82291, 84261, 0.0005), mdsys.sdo_dim_element('Y', 453039, 455632, 0.0005)), NULL); create index lki_parcel_idx on lki_parcel(return_polygon(object_id)) indextype is mdsys.spatialJndex; select municip, osection, parcel, sdo_geom.sdo_area (shape,0.5) from lki_parcel_pgn_vw; select max(sdo_geom. sdo_area(shape, 0.5)) from lki_parcel_pgn_vw; De volgende geometrische vraag levert alle percelen die bin nen een afstand van honderd meter van een gegeven recht hoek liggen (gespecificeerd door een linksonder- en rechts boven-punt). select parcel from lki_parcel where sdo_within_distance( return_polygon(objectJd),mdsys.sdo_geometry (2003,NULL,NULL, mdsyssdo_elem_info_array( 1,1003,3), mdsysSD0_0KDINATE_ ARRAY (832018,453536, 832824,453610)), 'distance 100')='TRUE'; Nu een topologische vraag die alle buren van perceel 'X' selecteert. select distinct l_obj_id neighbour_parcel from lMboundary where r_obj_id='X' union all select distinct r_obj_id neighbour_parcel from lMboundary where l_obj_id='X'; Een andere puur topologische vraag is het vinden van alle grenzen van perceel 'X'. select distinct object Jd pareel_boundary from lki_boundary where r_obj_id='X' or l_obj_id='X'; de exacte overlaptest kan worden uit gevoerd. In Informix is het mogelijk om een r-tree te bouwen die ook de po lygonen zelf opslaat in plaats van al leen de kleinst omhullende rechthoek; in dat geval behoeft bij overlap bevra ging de 'return_polygon' functie niet nogmaals te worden uitgevoerd. Bevragen van topologie en geometrie We zullen nu een aantal voorbeeldvra gen behandelen, die de eerder beschre ven functie gebruikt om geometrie te realiseren op basis van de topologische structuur. De eerste twee geometri sche vragen resulteren in respectieve lijk de oppervlakte per perceel en de maximum oppervlakte van alle perce len (met een tolerantie van 0,5) van de gerealiseerde polygonen. De eerder gecreëerde view (llci_parcel_ pgnjvw) kan nu deze index gebruiken om bij ruimtelijk zoeken een goede performance te realiseren. Zonder de functie-gebaseerde index zou het niet goed mogelijk zijn geweest om de faces goed te indexeren. Gedurende de overlap-query (of welke andere ruimte lijke zoekopdracht dan ook), worden de objecten nu snel uitgefilterd op basis van de index. Dat wil zeggen, de voorberekende kleinst omhullende rechthoeken (bounding boxes) uit de r-tree worden gebruikt voor deze filter operatie. Daarna moet de 'return_poly- gon'-functie worden uitgevoerd om het polygoon zelf te verkrijgen, zodat Fig. 4. Topologische data bekeken in een niet-topologische front-end. iediun-r-nornal"~Xd -■edlu«-r—nor«al"-ld 'I'll? uarnornal-~Zd Iki_paicel return _polygon(object_id) (return. rrrnrnTTig- Harning Warning Query SELECT return_polygon(obJect_id).rowid FR( lygon(object_id)ndsys.SD0_GE0HETRY<2003, 3).ndsys.SDO„ORDINATEJWRAY(8.180580444< 32349E8))"■ask=ANYINTERACT querytype Hl File Layer ect_id)rowid FROM lki_parcel WHERE adsys.sdo„relate NULL. NULL. adsys.S00jELEN_INF0„ARRAY(l .4.53039689E8.8.474704455967079E7 *aask=ANYINTERACT querytype HIND0M') 'TRUE' objecta loaded in 12.461 seconds (25 per second) tlki_parcel] Cancel Edit .Cancel" to type VirtualBinding egin" to type VirtualBinding p" to type VirtualBinding !ey_Nenu" to type VirtualBinding ley„Menu" to type VirtualBinding <Key>KP„Enter_Key_Execute" to type VirtualBinding -- -- - - type VirtualBinding tainwt tomr» rsrrrng1 TTWpf -i Cannot convert string Cannot convert string "Alt<Key>Return.Alt„Key_KP_Enter' GEODES1A 2003-2

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 2003 | | pagina 21