Database Spaziali:
PostGIS
Alessia Saggese
[email protected]
Outline
∗ Database Spaziali
∗ PostGis
∗ Applicazioni di video retrieval: Traj3D
I DATABASE SPAZIALI
Le operazioni sui dati
∗ Sui “record” si compiono
operazioni di :
∗ Ricerca
∗ Inserimento
∗ Modifica
∗ Cancellazione
∗ File non ordinati:
∗ i record sono aggiunti in
fondo al file
∗ Ricerca inefficiente
∗ Inserimento efficiente
∗ La cancellazione crea “buchi”
∗ File ordinati sulla base di
uno o più campi:
∗ I record devono essere
aggiungi “al posto giusto”
∗ Ricerca veloce
∗ Inserimento lento (shift di
tutti i record nel caso
peggiore)
∗ L’ordinamento potrebbe
non essere adatto alla
ricerca
Come trovare velocemente i dati?
∗ Creo degli altri File che
contengano i riferimenti ai
Record in modo da
costituire un ordinamento.
∗ In un Record di un file indice
ci sono in genere almeno
due campi:
∗ Il valore del campo
originario
∗ Il puntatore al record che
contiene quel valore
∗ Svantaggi:
∗ Spazio fisico
∗ Mantenimento di una
struttura aggiuntiva
(disallineamenti)
∗ Gestione di diversi file per
ogni tipo di ordinamento
Come trovare velocemente i dati?
∗ Un indice è qualcosa di “utile” per le ricerche che
verranno effettuate;
∗ Un indice su dati
alfanumerici è un
ordinamento basato su una
“vicinanza” alfanumerica.
∗ Un indice su dati spaziali
deve essere un
ordinamento basato su
una “vicinanza”
spaziale.
Perché i Database Spaziali?
∗ I dati territoriali sono
ormai pervasivi in molte
Organizzazioni.
∗ GIS - Geographic(al)
Information System - si
occupa dell'elaborazione
e della manipolazione dei
dati georeferenziati un
database relazionale.
Perché i Database Spaziali?
∗ La distribuzione di dati GIS in forma di file secondo
standard di fatto non è più possibile perchè:
∗ la quantità di dati ed il numero di sistemi eterogenei è
cresciuto molto;
∗ il numero ed il tipo di utenti è cresciuto molto;
∗ si deve disporre di meccanismi di controllo del flusso delle
informazioni;
∗ L'utilizzo di server database con estensione spaziale
risponde a queste esigenze permettendo flessibilità,
affidabilità e controllo sui flussi informativi
Che cosa è un DB spaziale?
∗ Una “estensione spaziale” di un DBMS permette la
gestione integrata di dati alfanumerici, geometrici e
topologici;
∗ Un Database Spaziale memorizza oggetti spaziali
(punti, linee, poligoni ecc.);
∗ Gli oggetti spaziali sono dati che descrivono la
geometria, in termini di forma e posizione;
∗ Un Database Spaziale manipola oggetti spaziali allo
stesso modo degli altri oggetti.
Che cosa è un DB spaziale?
LINEE -> Strade
PUNTI -> Negozi
POLIGONI:
Classificazione dell’uso del suolo
I dati spaziali descrivono forma e posizione:
Che cosa è un DB spaziale?
Che cosa è un DB spaziale?
Distanza tra pubs
La distanza tra una discarica e
un pezzo di proprietà che sto
pensando di acquistare.
Che cosa è un DB spaziale?
ADIACENZA: Tutti i lotti
confinanti
CONNETTIVITÀ : i collegamenti
di una rete fluviale
Perchè usare database spaziali?
∗
∗
∗
∗
∗
∗
∗
∗
Geocodable addresses
Customer location
Store locations
Transportation tracking
Statistical/Demographic
Cartography
Epidemiology
Crime patterns
∗
∗
∗
∗
∗
∗
∗
Weather Information
Land holdings
Natural resources
City Planning
Environmental planning
Information Visualization
Hazard detection
L’ estensione spaziale per PostgreSQL:
PostGIS
Le funzionalità di PostGIS (1)
∗ Funzionalità di base: PostGis permette la creazione/
eliminazione di colonne geometriche e l'attribuzione dei
dati ad un determinato sistema di riferimento.
∗ Funzioni di relazioni fra geometrie: Variano dal calcolo
della distanza fra due geometrie, alla verifica della
eventuale sovrapposizione, intersezione, inclusione, ecc.
tra forme geometriche distinte.
∗ Funzioni di calcolo sulle geometrie : Permettono di
calcolare area, perimetro, centroide, ecc., di una data
geometria.
Le funzionalità di PostGIS (2)
∗ Funzione di "informazioni" sulle geometrie : è possibile
conoscere il tipo di geometria presente in un dato campo,
l'id del sistema di riferimento utilizzato, il numero di punti
contenuti, ecc;
∗ Funzioni di calcolo di misure: permettono di calcolare le
aree, i perimetri, le lunghezze, gli sferoidi, ecc., in relazione
al sistema di riferimento e al tipo di piano (bidimensionale
o tridimensionale);
∗ Funzioni di modifica delle geometrie: permettono di
manipolare le geometrie effettuando ad esempio
operazioni di semplificazione (tramite l'algoritmo DouglasPeuker), di traslazione ecc.
Geometry types (1)
∗ Point
∗ Linestring
∗ Polygon
Geometry types (2)
∗
∗
∗
∗
Multipoint
Multilinestring
Multipolygon
Geometry-Collection
Why PostGIS? (1)
∗ Semplicità
∗ PostGIS Polygon
∗ POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))
∗ Oracle Polygon
∗ MDSYS.SDO_GEOMETRY( 2003, NULL, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
MDSYS.SDO_ORDINATE_ARRAY(0,0, 0,1, 1,1, 1,0, 0,0))
Why PostGIS? (2)
∗ Velocità
∗
∗
∗
∗
Lightweight geometry implementation
Lightweight indexes (50% size savings)
Linear time R-Tree
Row- level locking algorithm
∗ Funzionalità
∗ All OGC Simple Features for SQL, ST_Buffer()
∗ Aggregates, ST_Collect(), ST_Union()
∗ Extras, ST_AsGML(), ST_AsKML(), ST_AsSVG(),
ST_BuildArea(), ST_LineMerge, ST_Transform()
Why PostGIS? (3)
PostGIS Indexing (1)
∗ L’indicizzazione permette l’utilizzo di un database
spaziale di grandi dimensioni. Il database organizza i
dati in un albero di ricerca che può essere
velocemente attraversato.
∗ Senza indicizzazione ogni ricerca richiederebbe una
«scansione sequenziale» di ciascun record nel
database.
PostGIS Indexing (2)
∗ PostGreSQL supporta tre tipologie di indici:
∗ B-TREE: per dati monodimensionali che possono essere
ordinati lungo un asse (numeri, lettere, date ecc.);
∗ R-TREE: per dati spaziali. Suddivide i dati in rectangles,
sub- rectangles, sub-sub-rectangles ecc;
∗ GiST (Generalized Search Trees): per dati spaziali.
Suddivide i dati in "things to one side", "things which
overlap", "things which are inside“.
Guttman A.:
"R-trees: A
Dynamic Index
Structure for
Spatial
Searching',
Proc ACM
SIGMOD Int.
Conf. on
Management of
Data, 1984
Using Spatial Indexes (1)
∗ L’ operatore “&&” calcola l’intersezione tra Bounding
Boxes.
Using Spatial Indexes (2)
∗ A ciascuna geometria è associato un MBR (Minimum
Bounding Rectangle).
∗ ATTENZIONE! L’intersezione tra MBR non corrisponde
all’intersezione tra le geometrie!
Using Spatial Indexes (3)
Using Spatial Indexes (3)
A && B
Using Spatial Indexes (3)
A && B
Using Spatial Indexes (3)
ST_Intersects(A,B)
Spatial Analysis (1)
∗ ST_Intersects(A, B)
Spatial Analysis (2)
∗ ST_Contains(A, B)
∗ ST_Within(B, A)
Spatial Analysis (3)
∗ ST_Touches(A, B)
Spatial Analysis (4)
∗ ST_Crosses(A, B)
Spatial Analysis (5)
∗ ST_DWithin(A, B, D)
La nostra applicazione di Video Retrieval:
Trajectory 3D
Video Retrieval
Obiettivo
∗ Realizzazione di un Moving Object Database (MOD)
per lo storing ed il retrieval delle informazioni
collegate al movimento degli oggetti: le traiettorie.
Obiettivo
∗ Una traiettoria è un insieme di punti spazio-temporali:
< (x1; y1; t1); (x2; y2; t2); … ; (xN; yN; tN) >
Queries
∗ Time interval queries: seleziono tutti gli oggetti in
una specifica area e in un dato intervallo di tempo;
∗ Time-slice queries: seleziono tutti gli oggetti presenti
in una data area in un dato istante temporale;
∗ Nearest neighbor queries: seleziono i k nearest
neighbor di un oggetto in un dato istante di tempo.
Time interval queries
∗ Dobbiamo verificare
l’intersezione tra un box
3D e tutti i segmenti di
ciascuna traiettoria.
∗ Per determinare se un
segmento interseca o
meno un box possiamo
utilizzare gli algoritmi di
clipping.
Algoritmi di Clipping
∗ Determina se un segmento, o parte di esso, si trova
all’interno dell’area considerata.
Algoritmi di Clipping:
Cohen-Sutherland
∗ Prima Fase: calcolo dell'outcode (un codice di 4 bit)
per ciascuno dei due estremi del segmento
considerato.
1001
1000
1010
0001
0000
0010
0101
0100
0110
Algoritmi di Clipping:
Cohen-Sutherland
∗ Calcolo dell’outcode:
Primo bit
y<Ymin -> 1xxx
y>Ymin -> 0xxx
Secondo bit
y>Ymax -> x1xx
y<Ymax -> x0xx
Terzo bit
x<Xmin -> xx1x
x>Xmin -> xx0x
Quarto bit
x>Xmax -> xxx1
x<Xmax -> xx0x
Algoritmi di Clipping:
Cohen-Sutherland
∗ Seconda fase:
∗ Uno o entrambi gli outcode sono uguali a 0000: il segmento si
trova completamente o parzialmente all'interno dell'area di
clipping (Es: 3-4, 5-6).
∗ Gli outcode sono identici ma diversi da 0000: il segmento
rimane all'interno di una stessa area esterna all'area di
clipping.
∗ Gli outcode sono diversi: si calcola l’intersezione del
segmento con i prolungamenti dei bordi dell’area di clipping e
si ripete il procedimento.
∗ http://www.cs.princeton.edu/~min/cs426/jar/clip.html
Algoritmi di Clipping:
Cohen-Sutherland
∗ PROBLEMA: Nel caso peggiore (cioè quando una
traiettoria non interseca il box) è necessario verificare
tutti i segmenti della traiettoria.
∗ Tale approccio risulta eccessivamente costoso!
∗ SOLUZIONE PROPOSTA: riduco il numero di
traiettorie candidate al clipping utilizzando
l’indicizzazione spaziale 2D messa a disposizione da
PostGIS.
Traj 3D: la soluzione proposta
∗ PREMESSA: se una traiettoria interseca il box, allora
ciascuna proiezione della traiettoria intersecherà la
corrispondente proiezione del box sui piani
bidimensionali.
∗ Questa è una condizione NECESSARIA ma NON
SUFFICIENTE.
Traj 3D: la soluzione proposta
Traj 3D: la soluzione proposta
1) Proiezione della traiettoria e del box sui tre piani
bidimensionali XY, XT, YT;
2) Ricerca delle traiettorie candidate al clipping grazie
all’intersezione tra il Minimum Bounding Rectangle
della traiettoria (MBR) e la corrispondente
proiezione del box;
3) Clipping 3D tra le traiettorie rimanenti e il box.
Step 1 : Proiezione
2D-intersection between
trajectory's MBR and BXY
2D-intersection between
trajectory's MBR and BYT
2D-intersection between
trajectory's MBR and BXT
Step 2: Intersezione
Step 3: Clipping
Conclusioni e Sviluppi Futuri
∗ I tempi necessari allo storing e al retrieval delle
traiettorie sono proporzionali:
∗ Al numero di traiettorie presenti nel database;
∗ Alla dimensione delle traiettorie;
∗ Lo segmentazione delle traiettorie può ridurre
notevolmente i tempi di accesso al database.
∗ Problema: Come scegliere i break point?