Post on 15-Feb-2019
1
Corso di
Basi di Dati Spaziali
Angelo Montanari
Donatella Gubiani
Modello logico
2
Modelli logici
• Permettono una rappresentazione astratta dei dati
• La maggior parte dei sistemi di basi di dati oggi sul mercato si basa sul modello relazionale
3
Il modello relazionale
• Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati
• Disponibile in DBMS reali nel 1981 (non è facile coniugare l’indipendenza con l’efficienza e l’affidabilità!)
• Si basa sul concetto matematico di relazione (con una variante)
• Le relazioni hanno una naturale rappresentazione per mezzo di tabelle
4
Relazione matematica
• Dati n insiemi (anche non distinti) D1,…,Dn–prodotto cartesiano D1×…×Dn: l’insieme di tutte le n-uple (d1, …, dn) tali che d1∈D1, …, dn ∈ Dn
– relazione matematica su D1, …, Dn: un sottoinsieme di D1×…×Dn
5
Definizioni
• D1, …, Dn sono i domini (o tipi di dato) della relazione– possono essere definiti a prescindere dalle tabelle
• n è il grado della relazione– cambia molto raramente se lo schema èben fatto
• Il numero di tuple della relazione è la cardinalità della relazione– varia frequentemente
– ogni tabella ha cardinalità finita6
Esempio di relazione matematica
• una relazioner ⊆ D1 × D2
zb
yb
xb
za
ya
xa
•D1={a,b}
•D2={x,y,z}
•prodotto cartesiano D1×D2
za
ya
xa
2
7
Proprietà
• Una relazione matematica è un insieme di n-uple ordinate
– (d1, …, dn) tali che d1∈D1, …, dn ∈ Dn
• Una relazione è un insieme
– le n-uple sono distinte
– non c'è ordinamento fra le n-uple
8
Struttura posizionale
• Ciascuno dei domini svolge due ruolidiversi, distinguibili attraverso la posizione
Partite ⊆⊆⊆⊆ string × string × int × int
Milan
Roma
Milan
Lazio
0
0
2
3
1Roma
2Juve
0Lazio
1Juve
PARTITE
9
Struttura non posizionale
•A ciascun dominio si può associareun nome (attributo)
� danno significato (ruolo)
� possono portare problemi nella formalizzazione
RETI_FUORIRETI_CASAFUORICASA
Milan
Roma
Milan
Lazio
0
0
2
3
1Roma
2Juve
0Lazio
1Juve
PARTITE
10
Il modello è basatosu valori
• I riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple
11
STUDENTI
CORSI
ESAMI
Chimica
Chimica
Analisi
TITOLO
Verdi
Bruni
Mario
DOCENTE
04
02
01
CODICE
01306554
27
26
28
VOTO
01
02
04
CORSO
9283
3456
3456
STUDENTE
01/02/1984AlessandraRossi3456
Maria
Marco
Paolo
NOME
Verdi
Neri
Rossi
COGNOME
12/10/1979
03/11/1981
05/12/1983
NASCITA
9283
8765
6554
MATRICOLA
12
STUDENTI
CORSI
ESAMI
Chimica
Chimica
Analisi
TITOLO
Verdi
Bruni
Mario
DOCENTE
04
02
01
CODICE
30
27
26
28
VOTO CORSOSTUDENTE
01/02/1984AlessandraRossi3456
Maria
Marco
Paolo
NOME
Verdi
Neri
Rossi
COGNOME
12/10/1979
03/11/1981
05/12/1983
NASCITA
9283
8765
6554
MATRICOLA
3
13
Struttura basata su valori: vantaggi
• Rispetto ai modelli basati su record e puntatori:– richiede di rappresentare solo ciò che èrilevante dal punto di vista dell‘applicazione
– la rappresentazione logica non fa nessun riferimento a quella fisica
– è relativamente semplice il trasferimento da un calcolatore ad un‘altro
• A livello fisico i dati possono essere rappresentati secondo modalità che prevedono l‘uso di puntatori
14
Definizioni e notazioni - 1
• Schema di relazione:
un nome R con un insieme di attributi
X = {A1, ..., An}:
R(X) = R(A1,..., An)
• Schema di base di dati:
insieme di schemi di relazione:
R = {R1(X1), ..., Rk(Xk)}
15
Definizioni e notazioni - 2
• Una n-pla su un insieme di attributi X è una funzione che associa a ciascun attributo A in Xun valore del dominio di A
– t[X] denota il valore della ennupla t sull’insieme di attributi X
– t[A] denota il valore della ennupla t sull'attributo A
16
Definizioni e notazioni - 3
• Istanza di relazione su uno schema
R(X) è un insieme r di ennuple su X
r(R) o r∈R(X)
• Istanza di base di dati su uno schema
R= {R1(X1), ..., Rn(Xn)} è un insieme
di istanze di relazioni r = {r1,..., rn}
(con ri relazione su Ri)
17
Strutture nidificate
Da Filippo
Via Roma 2, Roma
Ricevuta Fiscale
1235 del 12/10/2000
3 Coperti 3,00
2 Bistecche 18,00
3 Primi 12,00
2 Antipasti 6,20
Totale 39,20
Da Filippo
Via Roma 2, Roma
Ricevuta Fiscale
1240 del 13/10/2000
2 Coperti 2,00
2 Orate 20,00
2 Primi 8,00
2 Antipasti 7,00
2 Caffè 2,00
Totale 39,0018
Relazioni che rappresentano strutture nidificate
13/10/2000
12/10/2000
DATA
39,00
39,20
TOTALE
1240
1235
NUMERORICEVUTE
DETTAGLIO
…………
2,00Coperti21240
18,00Bistecche21235
12,00Primi31235
Antipasti
Coperti
DESCRIZIONE
2
3
Q.TA’
6,20
3,00
IMPORTO
1235
1235
NUMERO
4
19
Strutture nidifcate, riflessione
• Abbiamo rappresentato veramente tuttigli aspetti delle ricevute?
• Dipende da che cosa ci interessa! – l'ordine delle righe è rilevante?
– possono esistere linee ripetute in unaricevuta?
• Sono possibili rappresentazioni diverse?
20
Rappresentazione alternativa per strutture nidificate
13/10/2000
12/10/2000
DATA
39,00
39,20
TOTALE
1240
1235
NUMERORICEVUTE
DETTAGLIO
…
1
4
3
2
1
RIGA
…………
2,00Coperti21240
18,00Bistecche21235
12,00Primi31235
Antipasti
Coperti
DESCRIZIONE
2
3
Q.TA’
6,20
3,00
IMPORTO
1235
1235
NUMERO
21
Informazione incompleta - 1
Piazza S.Lorenzo, 5 Trieste
Via Roma, 15 Udine
INDIRIZZO
BianchiMaria
Rossi
Verdi
COGNOME
043244567
TELEFONO
Antonio
Marco
NOME
22
Informazione incompleta - 2
• Non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, “99”, ...)
• Tecnica rudimentale ma efficace:– valore nullo: denota l’assenza di un valore del dominio (e non è un valore del dominio)
• t[A], per ogni attributo A, è un valore del dominio dom(A) oppure il valore nullo NULL
• Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli
23
Tipi di valore nullo
• (Almeno) Tre casi differenti
–valore sconosciuto/non disponibile
– valore non esistente
– valore senza informazione
• I DBMS non distinguono i tipi di valore nullo
24
Basi di dati scorrette
• Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse
5
25
AntonioBianchi787643
Neri
Rossi
COGNOME
Maria
Paolo
NOME
787643
276545
MATRICOLA
Base di dati scorretta
0424739430
03e lode27787643
e lode
LODE
30
32
VOTO
02
01
CORSO
276545
276545
STUDENTEESAMI
STUDENTI
787643
787643
32
27 e lode
739430
26
Vincolo di integrità
• Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione
• I diversi vincoli possono essere classificazione a seconda degli elementi coinvolti:– vincoli intrarelazionali
– vincoli interrelazionali
27
Vincoli intrarelazionali
• I vincoli intrarelazionali sono definitirispetto a singole relazioni
• Si distinguono:– vincoli di tupla
– vincoli che coinvolgono più tuple
28
Vincoli di tupla - 1
• I vincoli di tupla sono vincoli chepossono essere valutati all’interno di ogni singola tupla, indipendentementedalle altre tuple
• Possono essere relativi ad un singoloattributo– vincoli di dominio
(Voto≥18) AND (Voto≤30)
29
Vincoli di tupla - 2
– vincolo NOT NULL
Matricola IS NOT NULL
• Possono coinvolgere diversi attributi
(NOT(Lode="e lode")) OR (Voto=30)
30
Vincolo di chiave
• Il vincolo intrarelazionalefondamentale per il modellorelazionale è il vincolo di chiave
• Intuitivamente, una chiave è uninsieme di attributi utilizzato per identificare univocamente le tupledi una relazione
6
31
Esempio di chiave - 1
– Non ci sono due n-ple con lo stesso valore sull’attributo Matricola
– Non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita
5/12/78IngegneriaPieroRossi67653
3/11/76InformaticaMarioNeri87654
Ingegneria
Matematica
Informatica
CORSO
10/11/79PieroNeri65432
Mario
Mario
NOME
Rossi
Rossi
COGNOME
3/11/76
5/12/78
NASCITA
78763
27655
MATRICOLA
32
Chiave
• Formalmente:
–un insieme di attributi K è superchiave di una relazione r se r non contiene duetuple distinte t1 e t2 con t1[K] = t2[K]
–K è chiave di r se è una superchiaveminimale di r (cioè non esiste un’altrasuperchiave K’ di r che sia contenuta in K come sottoinsieme proprio)
33
Esempio di chiave - 2
• Matricola è una chiave:– è superchiave
– contiene un solo attributo e quindi è minimale
• Cognome, Nome, Nascita è un’altra chiave:– è superchiave
– minimale
5/12/78IngegneriaPieroRossi67653
3/11/76InformaticaMarioNeri87654
Ingegneria
Matematica
Informatica
CORSO
10/11/79PieroNeri65432
Mario
Mario
NOME
Rossi
Rossi
COGNOME
3/11/76
5/12/78
NASCITA
78763
27655
MATRICOLA
34
Considerazioni sulle chiavi
• Ogni relazione ha una chiave• Fra le possibili chiavi di una relazione deve essere selezionata una chiave primaria
• Per garantire l‘identificazione univoca di ogni tupla, la chiave primaria non può assumere valori nulli
• Quando non è possibile trovare degli attributi identificanti è necessario introdurre un attributo aggiuntivo, un codice
35
• Vincoli interrelazionali coinvolgono piùrelazioni
• La più importante classe di vincoli interrelazionali sono i vincoli di integritàreferenziale
• Informazioni in relazioni diverse sono correlate attraverso valori comuni– valori delle chiavi primarie
Vincoli interrelazionali
36
VIGILI
839548PE93455/2/200673321
PE
TO
MI
PROVINCIA
83954832955/4/200564521
3295
3987
VIGILE
4/3/2005
1/2/2004
DATA
E39548
39548K
NUMERO
53524
34321
CODICE
INFRAZIONI
AntonioMori7543
PieroNeri9345
Mario
Luca
NOME
Neri
Rossi
COGNOME
3295
3987
MATRICOLA
3987
3987
3295
3295
9345
3295
9345
7
37
AUTO
839548PE93455/2/200673321
PE
TO
MI
PROVINCIA
83954832955/4/200564521
3295
3987
VIGILE
4/3/2005
1/2/2004
DATA
E39548
39548K
NUMERO
53524
34321
CODICE
INFRAZIONI
839548
E39548
39548K
NUMERO
PieroVerdiPE
Paolo
Marco
NOME
Neri
Bianchi
COGNOME
TO
MI
PROVINCIA
MI 39548K
TO E39548
PE
PE
839548
839548
MI 39548K
TO E39548
PE 839548
38
• Un vincolo di integrità referenziale(o references key) fra gli attributi X di una relazione R1 e un’altra relazione R2impone ai valori su X in R1 di comparire come valori della chiave primaria di R2
• Esempio precedente: – l’attributo Vigile della relazione INFRAZIONI e la relazione VIGILI
– gli attributi Prov e Numero di INFRAZIONI e la relazione AUTO
Vincolo di integritàreferenziale - 1
39
AUTO
839548PE93455/2/200673321
PE
TO
MI
PROVINCIA
83954832955/4/200564521
3295
3987
VIGILE
4/3/2005
1/2/2004
DATA
E39548
E39548
NUMERO
53524
34321
CODICE
INFRAZIONI
839548
F39548
E39548
NUMERO
PieroVerdiPE
Paolo
Marco
NOME
Neri
Bianchi
COGNOME
TO
MI
PROVINCIA
TO E39548
TO
E39548
Violazione di vincolo di integritàreferenziale
40
Vincoli di integritàreferenziale - 2
• Giocano un ruolo fondamentale nel concetto di “modello basato su valori”
– in presenza di valori nulli i vincoli possono essere resi meno restrittivi
– sono possibili meccanismi per il supporto alla loro gestione ("azioni" compensative a seguito di violazioni)
– attenzione ai vincoli su più attributi
41
Integrità referenzialee valori nulli
IDEAMariaBianchi73032
Verdi
Neri
Bianchi
COGNOME
Piero64521
XYZ
IDEA
PROGETTO
Paolo
Marco
NOME
53524
34321
MATRICOLA
PROGETTI
IMPIEGATI
01/2007
07/2006
01/2006
INIZIO
15024BOH
120
200
COSTO
24
36
DURATA
XYZ
IDEA
CODICE
42
Violazione di vincolidi integrità: soluzioni
• La violazione di un vingolo di integritareferenziale può verificarsi in diverse situazioni– inserimento di una nuova tupla
– eliminazione di una tupla
– aggiornamento di una tupla
• Diverse sono le soluzioni che possono essereadottate– rifiuto dell’operazione (comportamento standard)
– eliminazione in cascata
– introduzione di valori nulli
8
43
Eliminazione in cascata
IDEAMariaBianchi73032
Verdi
Neri
Bianchi
COGNOME
Piero64521
XYZ
IDEA
PROGETTO
Paolo
Marco
NOME
53524
34321
MATRICOLA
PROGETTI
IMPIEGATI
01/2007
07/2006
01/2006
INIZIO
15024BOH
120
200
COSTO
24
36
DURATA
XYZ
IDEA
CODICE
XYZ 07/2001 24 120
44
Introduzione di valori nulli
IDEAMariaBianchi73032
Verdi
Neri
Bianchi
COGNOME
Piero64521
XYZ
IDEA
PROGETTO
Paolo
Marco
NOME
53524
34321
MATRICOLA
PROGETTI
IMPIEGATI
01/2007
07/2006
01/2006
INIZIO
15024BOH
120
200
COSTO
24
36
DURATA
XYZ
IDEA
CODICE
XYZ 07/2001 24 120
45
AUTO
Vincoli multipli su piùattributi
5/6/06
1/2/06
DATA
TO
MI
PR_A
E39548
39548K
NUM_A
PE
TO
PR_A
839548
E39548
NUM_A
64521
34321
CODICE
•Vincoli di integrità referenziale fra:
–gli attributi ProvA e NumeroA di INCIDENTI e la relazione AUTO
–gli attributi ProvB e NumeroB di INCIDENTI e la relazione AUTO
INCIDENTI
839548
E39548
39548K
NUMERO
PieroVerdiPE
Paolo
Marco
NOME
Neri
Bianchi
COGNOME
TO
MI
PROVINCIA
46
Per trattare dati spaziali…
• Dato un modello logico tradizionale (modello relazionale)
� introduzione di uno o più tipi di dato spaziale
47
Modello GEO-relazionale
• Il modello relazionale prevede unaserie di tipi di dato di base:– INTEGER: numeri interi
– REAL: numeri reali approssimati
– STRING: stringhe di caratteri
– BOOLEAN: valori booleani (vero, falso)
• Per trattare dati spaziali vengonointrodotti uno o più tipi di dato spaziale (SDT)
48
Tipi di dato spaziale (SDT)
• Geometria lineare
– i componenti di base sono punti, segmenti di retta, spezzate, spezzate chiuse
• Si definisce uno SDT specifico per ogni dimensione– dimensione 0 � punto
– dimensione 1 � spezzata
– dimensione 2 � poligono
9
49
Elementi di geometria - 1
• Spazio di riferimento: R2
• Punto: P(x,y)
– a è il vettore che individua il punto P in R2
50
Elementi di geometria - 2
• Segmento di retta per i punti P e Q individuati dai vettori a e b:
s={λa+(1-λ)b|λ∈[0,1]}– chiamiamo estremi del segmento i punti s.E1=Q(λ=0) e s.E2=P(λ=1)
• Spezzata è un insieme di segmenti di retta sp={s1,…,sn} tale che ogni estremo di segmento è condiviso da esattamente due segmenti, eccetto al massimo due estremi, detti estremi della spezzata
51
Elementi di geometria - 3
– se la spezzata non si interseca si dice spezzata semplice
– se la spezzata non ha estremi si dice spezzata chiusa
– una spezzata si dice monotona rispetto a una retta L se ogni retta L’ ortogonale a L incontra la spezzata in al più un punto
52
Elementi di geometria - 4
a) segmento
b) spezzata semplice
c) spezzata non semplice
d) spezzata chiusa
e) spezzata monotona
f) spezzata non monotona
53
Elementi di geometria - 5
• Poligono semplice: data una spezzata chiusa sp, è la porzione di R2 delimitata da sp– sp fa parte del poligono
54
Elementi di geometria - 6
• Poligono bucato: data una spezzata chiusa sp e un insieme di spezzate chiuse H={sp1,…,spn}, è la porzione di R2 delimitata da sp alla quale siano tolte le porzioni di piano delimitate da spi∈H, a condizione che:– sp e tutte le spi∈H siano parte del poligono
– tutte le spi∈H siano contenute nel poligono semplice delimitato da sp
– tutte le spi∈H non intersechino sp
– per ogni spi,spj∈H, spi non intersechi spj ed spinon contenga spj
10
55
Elementi di geometria - 7
– Un poligono P si dice convesso se per ogni coppia di punti A e B in P il segmento AB ècompletamente incluso in P
– Un poligono monotono è un poligono semplice tale che la sua frontiera si può spezzare esattamente in due spezzate monotone
– Una regione è un insieme di poligoni
56
Elementi di geometria - 8
Esempi di poligoni:
a) semplice
b) non semplice
c) convesso
d) monotono
e) bucato
f) regione
57
Punto - 1
• POINT è un insieme finito P di punti di R2
• Boundary di P è l'insieme vuoto
• Interior di P è P stesso
58
Punto - 2
• Dato P: POINT sono definite le seguenti operazioni:– P.X: REAL coordinata x del baricentro di P;
– P.Y: REAL coordinata y del baricentro di P;
– P.Distanza(Q: POINT): REAL distanza euclidea tra il baricentro di P e il baricentro di Q;
– P.NumPunti: INTEGER numero di punti presenti in P;
– P.Punto(I: INTEGER): POINT i-esimo punto presente in P;
– P.Unione(Q: POINT): POINT genera l'unione dei due insiemi di punti.
• Si suppone definito anche l'operatore di uguaglianza: P = Q
59
Linea - 1
• LINE è un insieme di spezzate L di R2 tale che nessuna coppia di spezzate abbia come intersezione una spezzata
• Boundary di L è l'insieme di punti di R2
costituito dagli estremi delle spezzate tolti gli estremi che appartengono a piùdi una spezzata
• Interior di L è l'insieme di punti di R2
costituito dalle spezzate private degli estremi che costituiscono il Boundary di L
60
Linea - 2
• Data L: LINE sono definite le seguenti operazioni:– L.Boundary: POINT boundary di L;
– L.NumSpezzate: INTEGER numero di spezzate di L
– L.Lunghezza: REAL lunghezza di L ottenuta sommando la lunghezza di tutte le spezzate che la compongono;
– L.Semplice: BOOLEAN vero se l'unione delle spezzate di L è una spezzata semplice;
– L.Chiusa: BOOLEAN vero se l'unione delle spezzate di L è una spezzata chiusa;
– L.Unione(K: LINE): LINE genera un valore di tipo LINE che rappresenta l'unione di L e K;
11
61
Linea - 3
– L.IntersezioneL(K: LINE): LINE genera un valore di tipo LINE che rappresenta l'intersezione di L e K. Se l'intersezione è costituita solo da punti, allora produce l'insieme vuoto;
– L.IntersezioneP(K: LINE): POINT genera un valore di tipo POINT che rappresenta l'intersezione di L e K. Se l'intersezione è costituita solo da spezzate, allora produce l'insieme vuoto. Se nell'intersezione sono presenti spezzate e punti isolati, restituisce solo questi ultimi.
• Si suppone definito anche l'operatore di uguaglianza: L = L'
62
Poligono - 1
• POLYGON è un insieme G di poligoni bucati di R2, tale che ogni coppia di poligoni costituisce un insieme di punti non connesso
Definizione. Un insieme di punti si dice (path-)connesso se per ogni coppia di suoi punti esiste un cammino (path) completamente contenuto nell’insieme che li connette
• Boundary di G è costituito dalle spezzate che delimitano i poligoni di G
• Interior di G è costituito dai poligoni privati delle spezzate che li delimitano
63
Poligono - 2
• Dato G: POLYGON sono definite le seguenti operazioni (per semplicitàconsideriamo insiemi singoletti):– G.Frontiera: LINE valore geometrico di tipo LINE che costituisce la frontiera esterna del poligono;
– G.Boundary: LINE valore geometrico di tipo LINE che costituisce la frontiera del poligono;
– G.Semplice: BOOLEAN vero se G e semplice;
– G.NumBuchi: INTEGER numero di buchi presenti nel poligono G;
– G.Perimetro: REAL lunghezza del perimetro di G ottenuto sommando la lunghezza di tutte le spezzate che lo delimitano;
– G.Area: REAL misura dell'area del poligono G; 64
Poligono - 3
– G.Unione(H: POLYGON): POLYGON genera un valore di tipo POLYGON che rappresenta l'unione dei due poligoni G e H;
– G.IntersezioneG(H: POLYGON): POLYGON genera un valore di tipo POLYGON che rappresenta l'intersezione dei due poligoni G e H. Se l'intersezione è costituita solo da punti e/o linee allora produce l'insieme vuoto;
– G.IntersezioneL(H: POLYGON): LINE genera un valore di tipo LINE che rappresenta l'intersezione dei due poligoni G e H. Se l'intersezione è costituita solo da punti e/o da poligoni allora produce l'insieme vuoto. Se l'intersezione presenta oltre a spezzate anche poligoni e/o punti restituisce solo le spezzate;
65
Poligono - 4
– G.IntersezioneP(H: POLYGON): POINT genera un valore di tipo POINT che rappresenta l'intersezione dei due poligoni G e H. Se l'intersezione è costituita solo da linee e/o poligoni allora produce l'insieme vuoto. Se l'intersezione presenta oltre a punti isolati anche linee e/o poligoni restituisce solo i punti isolati.
• Si suppone definito anche l'operatore di uguaglianza: G = G’
66
Poligono - 5
12
67
Relazioni (o tabelle) - 1
• Uno schema di tabella è definito come R(X1:D1,...,Xn:Dn) dove D1,...,Dn rappresentano domini di base o geometrici
• Un'istanza di tale schema è r di R(X1: D1,...,Xn: Dn) dove r ⊆ D1x…xDn
68
Relazioni (o tabelle) - 2
COMUNE( Nome: STRING,NumAbitanti: INTEGER,Estensione: POLYGON)
69
Rappresentazionedei dati spaziali: problemi
• La rappresentazione dei valori geometrici in un GEO-DBMS presenta alcuni problemi:– l'occupazione di memoria di un valore geometrico
– l'imprecisione nelle coordinate (rappresentazione approssimata dei numeri reali)
– i valori geometrici sono fortemente correlati
70
Rappresentazionedei dati spaziali: metodi
• Due metodi:
– insieme di liste di coordinate
– struttura basata sulla topologia dei dati
71
Liste di coordinate - 1
• Ogni tipo di dato spaziale è definito in modo analogo
–poligono come insieme di coordinate
– linee come insieme di coordinate
–punti come un singoletto di coordinate
72
Liste di coordinate - 2
G1=(ln,(<0,0>,<1,2>,<1,7>,<13,11>,<15,10>,<20,4>,<24,6>))
G2=(ln,(<-2,10>,<1,7>,<13,11>,<14,13>,<20,13>))
G3=(pg,(<5,14>,<10,13.5>,<11,12>,<13,11>,<1,7>,<0,10>,<0,12.5>))
13
73
Liste di coordinate - 3
• Vantaggi:– l'indipendenza tra i valori geometrici
– le buone prestazioni dell'operazione di visualizzazione grafica della geometria di un sottoinsieme limitato di valori
• Svantaggi:– tutte le selezioni spaziali e le operazioni di manipolazione richiedono l'applicazione di algoritmi di geometria computazionale
– la ridondanza nella rappresentazione della geometria
74
Struttura basatasulla topologia - 1
• Ogni tipo di dato spaziale è definito in modo diverso a seconda della sua struttura topologica
–poligono come insieme di linee
– linee come insieme di punti
– punti come coppia di coordinate
75
Struttura basatasulla topologia - 2
76
Struttura basatasulla topologia - 3
77
Struttura basatasulla topologia - 4
G1 = <ln, {a1,a2,a3}>
G2 = <ln,{a1,a4,a5}>
G3 = <pg,{a1,a6,a7}>
a1 = (P2, (), P3)
a2 = (P1, (<1,2>), P2)
a3 = (P3, (<15,10>, <20,4>), P4)
a4 = (P3, ( <14,13>),P5)
a5 = (P6, (),P2)
a6 = (P2, (<0,10>, <0,12.5>), P7)
a7 = (P7, (<10,13.5>, <11,12>), P3) 78
Struttura basatasulla topologia - 5
P1 = <0,0>
P2 = <1,7>
P3 = <13,11>
P4 = <24,6>
P5 = <20,13>
P6 = <-2,10>
P7 = <5,14>
14
79
Struttura basatasulla topologia - 6
• Vantaggi:– l'eliminazione della ridondanza
– la riduzione di alcune operazioni geometriche a selezione di un insieme di identificatori o puntatori a valori geometrici elementari precalcolati
– la riduzione della ricerca via predicati topologici ad un confronto tra identificatorio puntatori a valori geometrici elementari precalcolati
– la verifica dei vincoli spaziali immediata e supportata dalla struttura topologica
80
Struttura basatasulla topologia - 7
• Svantaggi:– il ripristino della topologia corretta a valle di ogni inserimento di un nuovo valore geometrico
– la pura visualizzazione di un valore geometrico richiede il ritrovamento della geometria attraverso una catena di puntatori (indirettezze)