basi di dati spaziali - dipartimento di matematica e ...donatella.gubiani/... · verso una o...
TRANSCRIPT
1
Corso Corso di di
Basi di Dati SpazialiBasi di Dati Spaziali
Angelo Montanari Angelo Montanari
Donatella GubianiDonatella Gubiani
La progettazione fisica: La progettazione fisica:
gli indici spaziali gli indici spaziali -- 22
22
IndiciIndici datadata--drivendriven•• GliGli indiciindici datadata--driven driven sisi adattanoadattano allaalladistribuzionedistribuzione degli degli oggettioggetti ((rettangolirettangoli) ) sulsulpianopiano
•• Ad Ad ogniogni nodonodo èè associatoassociato un un rettangolorettangolo, , dettodettoDirectory RectangleDirectory Rectangle (DR), (DR), cheche rappresentarappresental'MBBl'MBB deidei rettangolirettangoli deidei nodinodi figlifigli (o degli (o degli oggettioggetti ad ad essoesso associatiassociati))
•• Per Per accedereaccedere ad un ad un rettangolorettangolo delladella collezionecollezioneindicizzataindicizzata, , sisi percorrepercorre l'alberol'albero dalladalla radiceradiceverso verso unauna o o pipiùù fogliefoglie, , verificandoverificando, per , per ogniogniDirectory Rectangle Directory Rectangle incontratoincontrato, le , le relazionirelazioni didisovrapposizionesovrapposizione o o didi inclusioneinclusione
33
TipologieTipologie didi indiciindici
•• La La strutturastruttura originariaoriginaria
RR--alberialberi
•• Diverse Diverse variantivarianti, , tratra le le qualiquali
R*R*--alberialberi
RR++--alberialberi
44
RR--alberialberi•• SonoSono unauna estensioneestensione multidimensionale multidimensionale deidei BB++--alberialberi ((strutturastruttura ad ad alberoalbero bilanciatabilanciata e e paginatapaginata))
•• OgniOgni nodonodo rappresentarappresenta un un rettangolorettangolo. I . I nodinodisonosono organizzatiorganizzati in base in base allaalla relazionerelazione didiinclusioneinclusione::
–– ogniogni nodonodo fogliafoglia contienecontiene un un vettorevettore didi entry entry [MBB,OID] e [MBB,OID] e rappresentarappresenta un un contenitorecontenitore didioggettioggetti
–– ogniogni nodonodo internointerno contienecontiene un un vettorevettore didientry [DR,NODEID] e entry [DR,NODEID] e rappresentarappresenta la la pipiùùpiccolapiccola area area rettangolarerettangolare (MBB) (MBB) cheche contienecontienegligli oggettioggetti rappresentatirappresentati daidai corrispondenticorrispondentinodinodi figlifigli
55
StrutturaStruttura delldell’’RR--alberoalbero
–– per per ogniogni nodonodo dell'alberodell'albero, ad , ad eccezioneeccezione delladella radiceradice, , ililnumeronumero didi entry entry èè compresocompreso frafra m ed M con m m ed M con m ∈∈[0,M/2][0,M/2]
–– ogniogni nodonodo internointerno N N contienecontiene entry entry delladella forma forma
[DR,NODEID], dove DR [DR,NODEID], dove DR èè un Directory Rectangle un Directory Rectangle didi un un
nodonodo figliofiglio didi N e NODEID N e NODEID èè ll’’indirizzoindirizzo delladella paginapagina
corrispondentecorrispondente
–– ogniogni nodonodo fogliafoglia N N contienecontiene entry entry delladella forma forma
[MBB,OID], dove MBB [MBB,OID], dove MBB èè un minimal bounding box un minimal bounding box delladella
geometriageometria delldell’’oggettooggetto memorizzatomemorizzato allall’’indirizzoindirizzo OIDOID
–– la la radiceradice ha ha almenoalmeno due entry (due entry (assumendoassumendo cheche ll’’alberoalbero
contengacontenga almenoalmeno due entry)due entry)
–– tuttetutte le le fogliefoglie sisi trovanotrovano allaalla stessastessa profonditprofonditàà
66
RegioniRegioni: clipping : clipping vs. overlappingvs. overlapping
•• DatoDato un un poligonopoligono, , gligli RR--alberialberi assegnanoassegnano tale tale poligonopoligono ad ad unauna regioneregione in base in base allaalla tecnicatecnica didioverlapping overlapping delledelle regioniregioni
•• A A differenzadifferenza didi quantoquanto accadeaccade neinei metodimetodi spacespace--driven, un driven, un poligonopoligono èè assegnatoassegnato ad ad unauna sola sola regioneregione. Le . Le regioniregioni delldell’’indiceindice possonopossono, , peròperò, , sovrapporsisovrapporsi
2
77
EsempioEsempio 11
88
EsempioEsempio 22
RR--alberoalbero con m=2 ed M=4 (i con m=2 ed M=4 (i rettangolirettangoli delledellefogliefoglie sonosono rappresentatirappresentati dada lineelinee punteggiatepunteggiate))
99
Inserimenti/cancellazioniInserimenti/cancellazioni
•• Le Le proprietproprietàà delldell’’RR--alberoalbero sonosono preservatepreservatedalledalle operazionioperazioni didi inserimentoinserimento e e cancellazionecancellazione
•• La La strutturastruttura sisi adattaadatta allaalla distribuzionedistribuzione deideidatidati: a un : a un grangran numeronumero didi oggettioggetti presentepresente in in unauna certacerta regioneregione spazialespaziale corrispondecorrisponde un un grangrannumeronumero didi fogliefoglie ((vicinevicine) ) delldell’’RR--alberoalbero
1010
Un Un esempioesempio realereale
•• Directory rectangle Directory rectangle delledelle fogliefoglie didi un Run R--alberoalberocostruitocostruito per per raccogliereraccogliere i i datidati idrograficiidrografici dellodelloStatoStato del Connecticutdel Connecticut
1111
DimensionamentoDimensionamentodidi un Run R--alberoalbero
•• Il Il numeronumero massimomassimo M M didi entry in un entry in un nodonododipendedipende ovviamenteovviamente dalledalle dimensionidimensioni delldell’’entryentrye e delladella paginapagina
•• Come Come neinei BB++--alberialberi, M , M puòpuò assumereassumere un un valorevalorediversodiverso neinei nodinodi interniinterni e e neinei nodinodi fogliafoglia (OID (OID èèll’’indirizzoindirizzo didi un record un record appartenenteappartenente ad ad unaunadata data paginapagina ed ed èè, , didi normanorma, , pipiùù grandegrande didiNODEID, NODEID, indirizzoindirizzo didi unauna paginapagina))
•• La La sceltascelta del del valorevalore didi m m dipendedipende dalledallestrategiestrategie didi splitting splitting deidei nodinodi
1212
Point query in un RPoint query in un R--alberoalbero•• VieneViene eseguitaeseguita in due in due passipassi::
–– PRIMO PASSO: PRIMO PASSO: selezionaseleziona tuttitutti i i figlifigli delladella radiceradice
ilil cui Directory Rectangle cui Directory Rectangle contienecontiene ilil puntopunto P. P.
RipeteRipete tale tale operazioneoperazione per per tuttitutti nodinodi individuatiindividuati, ,
ad ad ogniogni livellolivello, , finofino a a raggiungereraggiungere ilil livellolivello delledelle
fogliefoglie
In In ogniogni nodonodo internointerno visitatovisitato N, N, sisi possonopossono
presentarepresentare due due situazionisituazioni::
•• se non se non esisteesiste alcunaalcuna entry entry ilil cui cui rettangolorettangolo
contengacontenga P, la P, la ricercaricerca terminatermina (P (P cadecade nellonello
spaziospazio mortomorto del del nodonodo))
•• se P se P èè contenutocontenuto nelnel rettangolorettangolo didi unauna o o pipiùù entry, entry,
sisi visitavisita il/iil/i corrispondente/icorrispondente/i sottoalbero/isottoalbero/i
3
1313
Point query in un RPoint query in un R--alberoalbero -- 2 2 –– SECONDO PASSO: SECONDO PASSO: l'insiemel'insieme delledelle fogliefoglie individuate individuate al al terminetermine del primo del primo passopasso vieneviene esaminatoesaminato per per stabilirestabilire se se ilil loroloro MBB MBB contienecontiene PP
NOTA.NOTA. Le window query Le window query sonosono moltomolto similisimili allealle point point query (query (dettaglidettagli omessiomessi))
1414
Point query: Point query: algoritmoalgoritmo -- 1 1 RTRT--PPOINTOINTQQUERYUERY ((P:point):set(oidP:point):set(oid))
beginbegin
result = result = ∅∅##passopasso 1: 1: attraversaattraversa l'alberol'albero dalladalla radiceradice e e calcolacalcola#SL, #SL, insiemeinsieme delledelle fogliefoglie ilil cui DR cui DR contienecontiene PPSL = RSL = RTREETREETTRAVERSALRAVERSAL(root,P)(root,P)##passopasso 2: 2: scorrescorre le le fogliefoglie e e determinadetermina le entry le entry ##cheche contengonocontengono PPforfor eacheach L L inin SL SL dodo
##scansionescansione entry entry nellanella fogliafoglia LLforfor eacheach e e inin L L dodo
ifif ((e.mbbe.mbb contains P) contains P) then then result+= {result+= {e.oide.oid}}end forend for
end forend for
returnreturn resultresultendend
1515
Point query: Point query: algoritmoalgoritmo -- 2 2 RRTREETREETTRAVERSALRAVERSAL ((nodeid:PageIDnodeid:PageID, P:point): set of leaves, P:point): set of leaves
beginbegin
result = result = ∅∅##restituiscerestituisce la la paginapagina associataassociata al al nodonodoN = N = RREADEADPPAGEAGE(nodeid(nodeid))ifif (N is a leaf) (N is a leaf) thenthen returnreturn {N}{N}elseelse
##scorrescorre le entry le entry didi N e N e visitavisita quellequelle##cheche contengonocontengono PPforfor eacheach e e inin N N dodo
ifif ((e.dre.dr contains P) contains P) thenthen
result+= result+= RRTREETREETTRAVERSALRAVERSAL(e.nodeid,P(e.nodeid,P))end ifend if
end forend for
end ifend if
returnreturn resultresultendend
1616
InserimentoInserimento
•• GliGli RR--alberialberi sonosono unauna strutturastruttura didiindicizzazioneindicizzazione dinamicadinamica gestitagestita in in modomodoanalogoanalogo aiai BB++--alberialberi
•• InserimentoInserimento: : sisi scendescende lungolungo ll’’alberoalberoscegliendoscegliendo ad ad ogniogni nodonodo ilil nodonodo figliofigliocorrispondentecorrispondente allaalla regioneregione cheche soddisfasoddisfaparticolariparticolari critericriteri (ad (ad esempioesempio, minor , minor incrementoincremento didi area)area)
•• SaturazioneSaturazione didi unauna fogliafoglia: : sisi esegueesegueunun’’operazioneoperazione didi split split cheche propagapropaga le le modifichemodifiche al al livellolivello superioresuperiore
1717
PiPiùù in in dettagliodettaglio.. .. -- 11
•• Per Per inserireinserire un un oggettooggetto in un Rin un R--alberoalbero sisi attraversaattraversal'alberol'albero a a partirepartire dalladalla radiceradice finofino a a raggiungereraggiungere unaunafogliafoglia ((funzionefunzione IINSERTNSERT))
•• Ad Ad ogniogni livellolivello ((nodinodi interniinterni), ), sisi selezionaseleziona un un nodonodo figliofigliotale tale cheche ll’’allargamentoallargamento del del suosuo DR DR necessarionecessario per per contenerecontenere ll’’MBBMBB delldell’’oggettooggetto dada inserireinserire risultirisulti minimominimo((funzionefunzione CCHOOSEHOOSESSUBTREEUBTREE); tale ); tale allargamentoallargamento èè nullonullo se se ll’’MBBMBB èè contenutocontenuto nelnel DRDR
•• RaggiuntaRaggiunta unauna fogliafoglia, , sisi possonopossono presentarepresentare due due situazionisituazioni::
–– fogliafoglia non non pienapiena: : unauna nuovanuova entry [MBB,OID] entry [MBB,OID] vieneviene
aggiuntaaggiunta allaalla paginapagina associataassociata allaalla fogliafoglia; se ; se ilil DR DR
delladella fogliafoglia vava allargatoallargato, , bisognabisogna propagarepropagare tale tale
allargamentoallargamento verso verso ll’’altoalto ((funzionefunzione AADJUSTDJUSTPPATHATH). ). NelNel
casocaso peggiorepeggiore, , finofino allaalla radiceradice1818
PiPiùù in in dettagliodettaglio.. .. -- 22
–– fogliafoglia l l pienapiena: : devedeve essereessere effettuatoeffettuato unouno split split
((funzionefunzione SSPLITPLIT). ). VieneViene creatacreata unauna nuovanuova fogliafoglia ll’’ e le e le
M+1 entry M+1 entry vannovanno distribuitedistribuite tratra l e ll e l’’. . TerminatoTerminato lo lo
split, split, vava aggiornataaggiornata ll’’entryentry didi l l nelnel nodonodo genitoregenitore f e f e
vava inseritainserita in f in f unauna nuovanuova entry per lentry per l’’ ((funzionefunzione
SSPLITPLITAANDNDAADJUSTDJUST). Tale ). Tale inserimentoinserimento puòpuò provocareprovocare lo lo
splitting splitting didi f (se f (se pienopieno). ). NelNel casocaso peggiorepeggiore, lo , lo
splitting splitting puòpuò propagarsipropagarsi finofino allaalla radiceradice
incrementandoincrementando didi 1 la 1 la profonditprofonditàà delldell’’alberoalbero
4
1919
EsempioEsempio 11
InserimentoInserimento del del rettangolorettangolo 15 (15 (assumiamoassumiamo M=4)M=4)
2020
EsempioEsempio 22
InserimentoInserimento del del rettangolorettangolo 16 (16 16 (16 vava inseritoinseritonellanella fogliafoglia b b cheche risultarisulta essereessere gigiàà pienapiena; ; unaunanuovanuova entry entry vava inseritainserita ancheanche nelnel genitoregenitore didi b b
cheche risultarisulta essereessere a a suasua voltavolta gigiàà pienopieno..)..)
2121
Insert: Insert: algoritmoalgoritmoIINSERTNSERT (e: (e: LeafEntryLeafEntry) )
beginbegin
##inizializzainizializza la la ricercaricerca dalladalla radiceradicenode = rootnode = root##scegliesceglie un un percorsopercorsowhilewhile (node is not a leaf) (node is not a leaf) dodo
node = Cnode = CHOOSEHOOSESSUBTREEUBTREE(node,e)(node,e)end whileend while
##inserisceinserisce nellanella fogliafogliaIINSERTNSERTIINNLLEAFEAF(node,e)(node,e)##eseguiesegui lo split e lo split e sistemasistema ll’’alberoalbero se la se la fogliafoglia vava in in #overflow, #overflow, altrimentialtrimenti sistemasistema ilil percorsopercorsoifif (node overflows) (node overflows) thenthen SSPLITPLITAANDNDAADJUSTDJUST (node)(node)else else AADJUSTDJUSTPPATHATH (node)(node)end ifend if
end end
2222
AdjustPathAdjustPath: : algoritmoalgoritmoAADJUSTPATHDJUSTPATH (node: Node) (node: Node)
beginbegin
ifif (node is root) (node is root) then returnthen return
elseelse
##trovatrova ilil genitoregenitore del del nodonodoparent = Gparent = GETETPPARENTARENT(node)(node)##sistemasistema ll’’entryentry del del nodonodo genitoregenitoreifif (A(ADJUSTDJUSTEENTRYNTRY ((parent,[node.mbb,node.idparent,[node.mbb,node.id]) ])
thenthen
#entry #entry modificatamodificata: : sistemasistema ilil genitoregenitoreAADJUSTDJUSTPPATHATH (parent)(parent)
end ifend if
end ifend if
endend
2323
SplitAndAdjustSplitAndAdjust: : algoritmoalgoritmoSSPLITPLITAANDNDAADJUSTDJUST (node: Node) (node: Node)
beginbegin
##creacrea un un nuovonuovo nodonodo e e distribuiscedistribuisce le entryle entry
newnew--node = Snode = SPLITPLIT (node)(node)
ifif (node is root) (node is root) then then
CCREATEREATENNEWEWRROOTOOT (node,new(node,new--node)node)elseelse
##trovatrova ilil genitoregenitore
parent = Gparent = GETETPPARENTARENT(node)(node)
##sistemasistema ll’’entryentry del del nodonodo genitoregenitore
AADJUSTDJUSTEENTRYNTRY ((parent,[node.mbb,node.idparent,[node.mbb,node.id]) ])
##inserisceinserisce ilil nuovonuovo nodonodo nelnel genitoregenitoreIINSERTNSERTNNODEODE (parent, [new(parent, [new--node.mbb,newnode.mbb,new--node.idnode.id]) ])
##sistemasistema ll’’entryentry del del nodonodo genitoregenitore
ifif (parent overflows) (parent overflows) thenthen SSPLITPLITAANDNDAADJUSTDJUST(parent)(parent)
else else AADJUSTDJUSTPPATHATH (parent)(parent)
end ifend if
end ifend if
endend 2424
StrategieStrategie didi splitsplit
•• OgniOgni strategiastrategia cheche rispettirispetti ilil vincolovincolo didi non non avereaveremenomeno didi m entry per m entry per nodonodo èè accettabileaccettabile
•• RequisitiRequisiti fondamentalifondamentali (non (non sempresempre compatibilicompatibili):):•• minimizzareminimizzare area (a)area (a)
•• minimizzareminimizzare la la sovrapposizionesovrapposizione (b)(b)
5
2525
PerchPerchéé ridurreridurre ll’’areaarea??
•• La La minimizzazioneminimizzazione delldell’’areaarea riduceriducegligli spazispazi mortimorti ((sisi vedaveda ll’’algoritmoalgoritmoper le point query)per le point query)
2626
PerchPerchéé ridurreridurre le le sovrapposizionisovrapposizioni??
•• La La presenzapresenza didi regioniregioni sovrappostesovrappostecreacrea deidei problemiproblemi nellanella ricercaricerca didiunouno o o pipiùù poligonipoligoni cheche contengonocontengonoun un puntopunto datodato
––Non Non èè notonoto a priori in a priori in qualequale regioneregionedelldell’’indiceindice un un poligonopoligono èè statostato inseritoinseritoe e bisognabisogna, , quindiquindi, , analizzareanalizzare diversidiversisottoalberisottoalberi
2727
CancellazioniCancellazioni
•• La La cancellazionecancellazione didi unun’’entryentry e e dada un Run R--alberoalbero èè effettuataeffettuata in 3 in 3 passipassi::
•• PASSO 1. PASSO 1. TrovareTrovare la la fogliafoglia L L cheche contienecontiene ee
•• PASSO 2. PASSO 2. RimuovereRimuovere e e dada LL
•• PASSO 3. PASSO 3. RiorganizzareRiorganizzare ll’’alberoalbero, se , se necessarionecessario..
I I passipassi 1 e 2 1 e 2 sonosono similisimili a a passipassi vistivisti in in precedenzaprecedenza. Il . Il passopasso 3 3 èè pipiùù complicatocomplicato. . SoluzioneSoluzione semplicesemplice: : cancellarecancellare ilil nodonodo e e inserireinserire nuovamentenuovamente le le restantirestanti mm--1 entry.1 entry.
2828
Delete: Delete: algoritmoalgoritmo
DDELETEELETE (e: (e: LeafEntryLeafEntry) )
beginbegin
##trovatrova la la fogliafoglia contenentecontenente ee
L = FL = FINDINDLLEAFEAF (e)(e)
##rimuoverimuove le entry e le entry e riorganizzariorganizza ll’’alberoalbero
##partendopartendo dada L ed e;L ed e;
##ilil risultatorisultato èè un un insiemeinsieme Q Q didi nodinodi
Q = RQ = REORGANIZEEORGANIZE (L,e)(L,e)
##reinseriscereinserisce le entry le entry neinei nodinodi didi QQ
RREINSERTEINSERT (Q)(Q)
endend
2929
Reorganize: Reorganize: algoritmoalgoritmoRREORGANIZEEORGANIZE (N:Node, e: Entry): set of node entries (N:Node, e: Entry): set of node entries
beginbegin
Q = Q = ∅∅
##rimuoverimuove e e dada NNN = N N = N –– {e}{e}
ifif (N is not root) (N is not root) thenthen
ifif (|N|<m) (|N|<m) thenthen
Q = Q U {N}Q = Q U {N}
##recuperarecupera ilil genitoregenitore e lo e lo riorganizzariorganizzaF = GF = GETETPPARENTARENT(N)(N)
Q = Q U RQ = Q U REORGANIZEEORGANIZE(F,entry of N in F)(F,entry of N in F)
elseelse
#N #N modificatomodificato: : sistemasistema ilil percorsopercorso
AADJUSTDJUSTPPATHATH(N) (N)
end ifend if
end ifend if
returnreturn QQ
endend
3030
SullSull’’ordineordine didi inserimentoinserimento
•• La La qualitqualitàà delldell’’indiceindice dipendedipende fortementefortementedalldall’’ordineordine didi inserimentoinserimento ((rettangolirettangoli distribuitidistribuitiin in modomodo random random possonopossono provocareprovocare fortifortisovrapposizionisovrapposizioni didi nodinodi e e infeliciinfelici collocazionicollocazionidelledelle entry). Si entry). Si vedaveda, ad , ad esempioesempio, la , la collocazionecollocazione del del rettangolorettangolo 4 al 4 al passopasso b b ((sprecospreco didi spaziospazio))
6
3131
R*R*--alberialberi e Packed Re Packed R--alberialberi
•• R*R*--alberialberi e packed Re packed R--alberialberi costituisconocostituiscono 2 2 tentativitentativi didi superaresuperare i i limitilimiti delldell’’organizzazioneorganizzazionespazialespaziale degli Rdegli R--alberialberi in in presenzapresenza didi inserzioniinserzionirandomrandom
•• R*R*--alberialberi: : sfruttanosfruttano ilil reinserimentoreinserimento delledelleentry per entry per miglioraremigliorare ilil clustering degli MBBclustering degli MBB
•• Packed RPacked R--alberialberi: : eseguonoeseguono un preun pre--processing processing didi un un datodato insiemeinsieme didi rettangolirettangoli per per determinaredeterminare ilil migliormiglior ordineordine didi inserimentoinserimento
3232
R*R*--alberialberi
•• R*R*--alberialberi realizzanorealizzano diversidiversi miglioramentimiglioramentiallall’’algoritmoalgoritmo didi inserimentoinserimento degli Rdegli R--alberialberi
•• ParametriParametri consideraticonsiderati::•• perimetroperimetro del Directory Rectangle del Directory Rectangle didi un un nodonodo
•• sovrapposizionesovrapposizione deidei nodinodi
•• area area copertacoperta dada un un nodonodo
3333
MiglioramentoMiglioramento delledellestrategiestrategie didi splitting splitting
•• (a) (a) nodonodo in in situazionesituazione didi overflow; (b) split overflow; (b) split delldell’’RR--alberoalbero ((definiscedefinisce la la partizionepartizione a a partirepartiredalledalle due entry due entry pipiùù lontanelontane); (c) split ); (c) split delldell’’RR**--alberoalbero ((esegueesegue lo split lo split lungolungo unouno deidei due due assiassi))
3434
UtilizzoUtilizzo forzatoforzato didi strategiestrategiedidi reinserimentoreinserimento
•• ReinserireReinserire alcunealcune entry entry ogniogni qualvoltaqualvolta sisi verificaverifica un un overflow in un overflow in un nodonodo. . NellNell’’esempioesempio, , ll’’inserimentoinserimento didi 8 8 causacausa un overflow (a). un overflow (a). AnzichAnzichéé limitarsilimitarsi ad ad unaunariorganizzazioneriorganizzazione locale (b), locale (b), sisi reinseriscereinseriscepreliminarmentepreliminarmente in v in v ilil nodonodo 4 4 cheche provocaprovoca la la maggiormaggiorquantitquantitàà didi spaziospazio mortomorto (c)(c)
3535
RR--alberialberi vs. R*vs. R*--alberialberi
•• ConfrontoConfronto tratra RR--alberialberi e R*e R*--alberialberi ((StatoStato del del Connecticut)Connecticut)
3636
RR--alberialberi vs. packed Rvs. packed R--alberialberi
•• Se la Se la collezionecollezione deidei rettangolirettangoli èè stabile stabile nelnel tempo, tempo, sisipuòpuò eseguireeseguire un preun pre--processing processing deidei datidati prima prima didicrearecreare ll’’RR--alberoalbero ((ordinareordinare i i rettangolirettangoli in base in base allaallaloroloro posizioneposizione per per massimizzaremassimizzare ll’’occupazioneoccupazione deideinodinodi delldell’’RR--alberoalbero))
7
3737
RR++--alberialberi•• ObiettivoObiettivo: : ridurreridurre i i problemiproblemi cheche nascononasconodalladalla presenzapresenza didi sovrapposizionisovrapposizioni frafra le le regioniregioni
•• LL’’ideaidea èè quellaquella didi::–– eseguireeseguire ilil clipping clipping delledelle regioniregioni in in modomodo dadaottenereottenere regioniregioni cheche non non sisi sovrappongonosovrappongono
–– replicarereplicare ll’’associazioneassociazione ad un MBR in ad un MBR in ogniogniregioneregione didi livellolivello superioresuperiore cheche lo lo contienecontiene
•• Un RUn R++--alberoalbero occupaoccupa normalmentenormalmente pipiùùspaziospazio didi un Run R--alberoalbero, ma , ma tendetende a a miglioraremigliorare le le prestazioniprestazioni in in ricercaricerca. . RichiedeRichiede algoritmialgoritmi pipiùù complessicomplessi per per ll’’aggiornamentoaggiornamento delladella strutturastruttura
3838
RR++--alberialberi: un : un esempioesempio
3939
RR--alberialberi vs. Rvs. R++--alberialberi
4040
OperazioniOperazioni suglisugli RR++--alberialberi
•• Clipping in Clipping in sottorettangolisottorettangoli (a)(a)
•• DeadllockDeadllock (b)(b)
•• PropagazionePropagazione downward downward didi unouno split (c)split (c)
4141
ProgettazioneProgettazione fisicafisica -- 11
•• PROBLEMA: Come PROBLEMA: Come suddivideresuddividere e e memorizzarememorizzare gligli insiemiinsiemi didi valorivalorigeometricigeometrici presentipresenti in in unauna base base didi datidatigeograficageografica??
•• OSSERVAZIONI:OSSERVAZIONI:–– Non Non èè possibilepossibile costruirecostruire un'unicaun'unica strutturastruttura datidatididi tipotipo topologicotopologico e/o un e/o un unicounico indiceindice spazialespazialeper per tuttitutti i i datidati contenuticontenuti nelnel sistemasistema
–– Non Non èè sempresempre utile utile costruirecostruire unauna strutturastrutturatopologica/indicetopologica/indice per per ogniogni attributoattributo didi tipotipoPOINT, LINE o POLYGON POINT, LINE o POLYGON contenutocontenuto in in unaunarelazionerelazione ((tabellatabella))
4242
ProgettazioneProgettazione fisicafisica -- 22
•• SOLUZIONE: SOLUZIONE: SuddivisioneSuddivisione delladellabase base didi datidati in in stratistrati ((layerlayer):):
–– Per i Per i datidati del del medesimomedesimo stratostrato vienevienemantenutamantenuta unauna strutturastruttura topologicatopologicae/o e/o indiceindice spazialespaziale
––Non Non esisteesiste topologia/indicetopologia/indice tratra stratistratidiversidiversi
8
4343
ProgettazioneProgettazione fisicafisica -- 33
•• VincoliVincoli tratra StratiStrati e e AttributiAttributi con con dominiodominiogeometricogeometrico in in unouno schema:schema:–– ogniogni stratostrato presentepresente in in unouno schema schema contienecontiene solo i solo i valorivalori geometricigeometrici didi unouno o o pipiùù attributiattributi geometricigeometriciappartenentiappartenenti a a relazionirelazioni dellodello schemaschema
–– i i valorivalori didi un un attributoattributo geometricogeometrico sonosono contenuticontenuti in in unouno e un sol e un sol stratostrato
•• DaDa ciòciò derivaderiva cheche::–– in in unouno schema schema cheche presentipresenti relazionirelazioni ((tabelletabelle) con ) con attributiattributi geometricigeometrici devedeve essereessere presentepresente almenoalmeno unounostratostrato
–– in in unouno schema schema cheche presentipresenti relazionirelazioni ((tabelletabelle) con ) con attributiattributi geometricigeometrici, , vava indicataindicata la la corrispondenzacorrispondenzaattributoattributo geometrico/stratogeometrico/strato
4444
EsempioEsempio -- 11
Relazioni
BOSCO (Tipo: STRING, Pg: POLYGON)
PRATO (Pascolo: BOOLEAN, Pg: POLYGON)
Strati
S_MONTAGNA ({POLYGON})
Mapping Attributi geometrici/Strati
BOSCO.Pg . S_MONTAGNA
PASCOLO.Pg . S_MONTAGNA
4545
EsempioEsempio -- 22