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?