I DB spaziali http://www.rockini.name/teaching.php Appunti dalle lezioni 1 Motivazioni Create table Punto ( puntoid integer primary key, puntox double not null, puntoy double not null ) Create table Rettangolo ( rettid integer primary key, rett_ul_x double not null, rett_ul_y double not null, rett_dr_x double not null, rett_dr_y double not null ) Create table Segmento ( segd integer primary key, seg_fp_x double not null, seg_fp_y double not null, seg_lp_x double not null, seg_lp_y double not null ) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 2 1
Motivazioni Se ho oggetti di varie forme, devo creare una tabella diversa per ogni forma Ammesso di riuscirci! Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 3 Motivazioni Problemi apparentemente semplici possono essere molto onerosi da risolvere. Create table Punto ( puntoid integer primary key, puntox double not null, puntoy double not null ) Trova il rivenditore più vicino L unica soluzione che ho è misurare la distanza tra me e TUTTI i punti Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 4 2
Motivazioni LINEE -> Strade PUNTI -> Negozi POLIGONI: Classificazione dell uso del suolo Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 5 Motivazioni Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 6 3
I Database Spaziali I dati geometrici (territoriali) sono ormai pervasivi in molte organizzazioni. I DB spaziali nascono con l obiettivo di fornire un supporto adeguato In genere sono una estensione spaziale di un RDBMS. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 7 GIS Geographic(al) Information System si occupa dell'elaborazione e della manipolazione dei dati (spesso georeferenziati) gestiti da un database spaziale. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 8 4
Campi di applicazione 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 Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 9 PostGIS Estensione spaziale di PostgreSQL Si introduce un nuovo tipo di dato: GEOMETRY Si appoggia alle caratteristiche di PostGIS che è un ERDBMS Questo tipo è usato per mantenere la geometria di un singolo oggetto gegrafico Eventualmente al sistema di riferimento associato Può essere uniforme multiforme: Vari tipi di geometrie Varie dimensioni (2, 2 e ½, 3, 3 e ½) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 10 5
PostGIS Funzioni di relazioni fra geometrie: calcolo della distanza fra due geometrie, alla verifica della eventuale sovrapposizione, intersezione, inclusione, ecc. Funzioni di calcolo sulle geometrie: area, perimetro, centroide, ecc. Funzione di "informazioni" sulle geometrie: conoscere il tipo di geometria presente in un dato campo Funzioni di modifica delle geometrie: permettono di manipolare le geometrie effettuando ad esempio operazioni di semplificazione (tramite l'algoritmo Douglas-Peuker) Indicizzazione. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 11 PostGIS Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 12 6
Geometry types I dati geometrici sono specificati in modo letterale secondo lo standard WKT Point POINT(0,0) SRID=32632;POINT(0,1) Linestring LINESTRING (0 0 0, 1 1 0,.) Polygon POLYGON ((P1, P2, P1),(P3,P4,P3)) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 13 Geometry types Multipoint Multilinestring Multipolygon Geometry-Collection Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 14 7
Esempio Vogliamo gestire un insieme di edifici CREATE TABLE edificio ( id INTEGER PRIMARY KEY, descr VARCHAR(20)); SELECT AddGeometryColumn('edificio','shape',4623,'POLYGON',2); INSERT INTO edificio VALUES (1,'Ospedale','SRID=4623;POLYGON((6 42, 8 42, 8 43, 6 43, 6 42))'::GEOMETRY); INSERT INTO edificio VALUES (2,'Industria', 'SRID=4623;POLYGON((10 43, 13 43, 13 46, 10 46, 10 43),(11 44, 12 44, 12 45, 11 45, 11 44))'::GEOMETRY); Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 15 Esempio SELECT id,descr, ST_Area(shape) FROM edificio; L area viene misurata in gradi quadrati Proviamo invece a proiettare queste coordinate nel fuso 32: SELECT id,descr, ST_Area( St_Transform(shape,32632) )/10000 FROM edificio; In questo caso il risultato è in ettari SELECT ST_Extent(shape) FROM edificio; La funzione ST_Extent calcola l estensione massima dell unione degli elementi della tabella. BOX(6 42,13 46) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 16 8
Spatial Analysis ST_Intersects(A, B) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 17 Spatial Analysis ST_Contains(A, B) ST_Within(B, A) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 18 9
Spatial Analysis ST_Touches(A, B) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 19 Spatial Analysis ST_Crosses(A, B) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 20 10
Spatial Analysis ST_DWithin(A, B, D) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 21 Quantum GIS Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 22 11
PostGIS Indexing 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. Indici spaziali R-TREE: suddivide i dati in rectangles, sub-rectangles, sub-sub-rectangles ecc; GiST (Generalized Search Trees): suddivide i dati in "things to one side", "things which overlap", "things which are inside. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 23 RTREE Problema: Voglio trovare tutti gli edifici della tabella edificio che interseacano una certa area. Se ho 1.000.000 di edifici voglio evitare di andare a controllarli tutti Soluzione: Ragiono con gli MBR (minimum bounding rectangles) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 24 12
RTREE Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 25 RTREE Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 26 13
RTREE Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 27 RTREE Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 28 14
Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 29 Using Spatial Indexes L operatore && calcola l intersezione tra Bounding Boxes. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 30 15
In SQL Select id from edificio where ST_Intersect (shape, 'POLYGON((6 42, 8 42, 8 43, 6 43, 6 42))'::GEOMETRY) AND id in ( select id from edicio where shape && SRID=POLYGON((6 42, 8 42, 8 43, 6 43, 6 42))'::GEOMETRY ) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 31 Using Spatial Indexes Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 32 16
Using Spatial Indexes Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 33 Using Spatial Indexes (3) A && B Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 34 17
Using Spatial Indexes ST_Intersects(A,B) Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 35 Un esempio più complesso Realizzazione di un Moving Object Database (MOD) per lo storing ed il retrieval delle informazioni collegate al movimento degli oggetti: le traiettorie. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 36 18
Quindi. Una traiettoria è un insieme di punti spaziotemporali: < (x1; y1; t1); (x2; y2; t2); ; (xn; yn; tn) > Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 37 Time interval queries Trovare le persone che hanno attraversato una certa area in un certo intervallo di tempo. Dobbiamo verificare l intersezione tra un box 3D e tutti i segmenti di ciascuna traiettoria. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 38 19
Problema. Gli indici non supportano il 3D 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. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 39 La soluzione proposta Proiezione della traiettoria e del box sui tre piani bidimensionali XY, XT, YT; Ricerca delle traiettorie candidate al clipping grazie all intersezione tra il Minimum Bounding Rectangle della traiettoria (MBR) e la corrispondente proiezione del box; Clipping 3D tra le traiettorie rimanenti e il box. Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 40 20
Step 1 : Proiezione 2D-intersection between trajectory's MBR and B XY 2D-intersection between trajectory's MBR and B YT 2D-intersection between trajectory's MBR and B XT Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 41 Step 2: Intersezione Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 42 21
Step 3: Clipping Basi di Dati 2 Prof. Antonio d Acierno I DB spaziali 43 22