|
Appunti informatica |
|
Visite: 2119 | Gradito: | [ Medio appunti ] |
Leggi anche appunti:I Database RelazionaliI Database Relazionali allora cosa sono questi famigerati Database relazionali? Documento delle Specifiche relativo alla progettazione di una base di dati per la gestione dei dipartimenti del Polo Didattico delle Scienze (v. 1.0)Documento delle Specifiche relativo alla progettazione di una base di dati per la I Semafori , ovvero la gestione della multiutenzaI Semafori , ovvero la gestione della multiutenza Chiariamo subito una cosa: già |
DB Spaziali
I dati territoriali (geometrici) sono oramai importanti per molte organizzazioni..
I sistemi GIS - Geographic(al) Information System- si occupa dell'elaborazione e della manipolazione dei dati (spesso georeferenziati) gestiti volendo da un database spaziale.
Esso è, quindi, un sistema informatico in grado di produrre, gestire e analizzare dati spaziali associando a ciascun elemento geografico una o più descrizioni alfanumeriche.
Il GIS differisce dal DBMS, in quanto si occupa essenzialmente dell'elaborazione e manipolazione dei dati georeferenziati, anche se questi possono essere memorizzati in un DBMS con estensione spaziale o in singoli file
Il crescente utilizzo delle basi di dati spaziali nella gestione di dati territoriali sta nel fatto che la distribuzione di dati GIS in forma di file secondo standard di fatto non è più possibile in quanto :
L'utilizzo di server database con estensione spaziale risponde a queste esigenze permettendo flessibilità, affidabilità e controllo sui flussi informativi
I data base spaziale nascono proprio con l'obiettivo di fornire un supporto adeguato per la manipolazione di questo tipo di dati.
In effetti questi sono delle base di dati ottimizzate per archiviare e interrogare dati correlati ad oggetti nello spazio, tra cui, punti, linee e poligoni (dati geometrici e topologici).
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.
I data base Spaziali quindi sono "estensioni spaziali" di un RDBMS che posseggono funzionalità aggiuntive per processare tipi di dati spaziali.
L'Open Geospatial Consortium (Consorzio geospaziale aperto) ha creato le specifiche Simple Features che stabiliscono degli standard per l'aggiunta di funzionalità spaziali ai database.
I campi di applicazione sono innumerevoli: indirizzi geo-codificabili, memorizzazione posizioni, cartografia, indagini Statistico / demografiche, epidemiologia, Informazione Meteorologica, urbanistica.
Un estensione Spaziale del DBMS PostgreSQL è PostGIS.
In PostGIS abbiamo un nuovo tipo di dato: GEOMETRY. Esso si appoggia alle caratteristiche di PostGIS che è un Extended Relational DBMS (DBMS che risultano unire caratteristiche estratte dai ODBMS e RDBMS).
Il tipo GEOMETRY è usato per mantenere la geometria di un singolo oggetto geografico (Eventualmente al sistema di riferimento associato). Può essere: uniforme, multiforme (possedere varie geometrie) e varie dimensioni (2, 2 e ½, 3, 3 e ½).
PostGis permette la creazione/eliminazione di colonne geometriche e l'attribuzione dei dati ad un determinato sistema di riferimento.
Le funzioni messe a disposizione sono:
Tra le varie estensioni disponibili PostGIS risulta essere il geodatabase che fornisce il sistema di gestione dati, sui quali è basato un GIS, più conveniete sotto l'aspetto economico (licenza GPL) e per funzionalità fornite. Inoltre è semplice da utilizzare e veloce.
I dati geometrici sono specificati in modo letterale secondo lo standard WKT (Il Well-known text (WKT) è un linguaggio creato per rappresentare: oggetti di geometria vettoriale su una mappa, un Sistema di Coordinate di Riferimento (una proiezione), una trasformazione tra sistemi di coordinate. Un equivalente binario, il Well-Known Binary (WKB) è generalmente usato per salvare le stesse informazioni in un database.)
Gli oggetti geometrici che possono essere rappresentati da WKT sono:
Point: POINT(0,0);
Punto con sistema di riferimento: SRID=32632;POINT(0,1)
Polilinea(Linestring): LINESTRING (0 0 0, 1 1 0, ..)
Polygon: POLYGON ((P1, P2, P1),(P3,P4,P3))
Multipoint
Multilinestring
Multipolygon
Geometry-Collection
Facciamo un esempio di utilizzo di PostGIS..
Vogliamo gestire un insieme di edifici
1) CREATE TABLE edificio (
id INTEGER PRIMARY KEY,
descr VARCHAR(20));
2) SELECT
AddGeometryColumn('edificio','shape',4623,'POLYGON',2);
AddGeometryColumn è una funzione per l' aggiunta dall'estenzione spaziale. Essa permette di aggiungere la colonna geometrica, i metadati e alcuni vincoli aggiuntivi in un sol colpo.
La funzione ha i seguenti parametri:
Tabella su cui operare
Nome della colonna geometrica
Sistema di riferimento
Tipo geometrico
Numero dimensioni
3) INSERT INTO edificio
VALUES (1,'Ospedale','SRID=4623;POLYGON((6 42, 8 42, 8 43, 6 43, 6 42))'::GEOMETRY);
La dicitura "::GEOMETRY" serve a informare il sistema che il valore è una geometria.
I primi due valore sono la chiave primaria e la descrizione, il terzo è la geometria (un poligono rettangolare) del giusto sistema di riferimento
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);
5) SELECT id,descr, ST_Area(shape)
FROM edificio;
L'area viene misurata in gradi quadrati. "ST_Area" è una semplice funzione di analisi (eseguita sulla colonna shape)
6) 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
7) SELECT ST_Extent(shape) FROM edificio;
- La funzione ST_Extent calcola l'estensione massima dell'unione degli elementi della tabella. È una funzionme di aggregazione
il risultato è BOX(6 42,13 46)
Elenchiamo alcune funzioni di analisi spaziale. A e B sono due geometrie
ST_Intersects(A, B) (interseca-truefalse) fig1
ST_Contains(A, B) (contiene-truefalse) fig2
ST_Within(B, A) (all'interno) fig2
ST_Dwithin(B,A,D)(distanza dall' interno) D è un valore numerico fig5
ST_Touches(A, B) (tocca) fig3
ST_Crosses(A, B) (incrocia) fig4
f.1 f.2 f.3 f.4 f.5
PostGIS non ha di per sé un visualizzatore grafico.
E' difficile però l'analisi senza visualizzare i dati. È possibile utilizzare il visualizzatore QGIS- Quantum GIS
Perché il funzionamento delle query spaziali sia veloce è fondamentale creare un indice sulla colonna "geometrica" (nell' esempio shape-forma).
Un indice su dati spaziali deve essere un ordinamento (indicizzazione) basato su una "vicinanza" spaziale.
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.
Gli indici spaziali utilizzabili:
R-TREE suddivide i dati in rectangles, sub-rectangles, sub-sub-rectangles ecc.. è una struttura di indice dinamico per la ricerca spaziale;
GiST (Generalized Search Trees-Alberi di ricerca generalizzati): suddivide i dati in 'things to one side', 'things which overlap', 'things which are inside ('oggetti in una posizione', 'oggetti che si sovrappongono', ' oggetti che sono dentro'.).
Facciamo un esempio sull R-Tree:
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
La Soluzione sta nell'utilizzo dell'MBR (minimum bounding rectangles - minimo rettangoli di delimitazione ).
A ciascuna geometria è associato un MBR (ATTENZIONE! L'intersezione tra MBR non corrisponde all'intersezione tra le geometrie!)
-------- ----- ------ -------approfondimento da integrare----- ----- --------- ----- --------
Gli R-tree o R-alberi sono un tipo di albero (grafo) simile al B-Albero, ma sono usati per indicizzare spazi multidimensionali, ad esempio le coordinate spaziali (X, Y) per dati geografici. Una richiesta di esempio che usi un R-tree potrebbe essere 'Trova tutti i musei entro 2 km dalla mia posizione attuale'.
La struttura dati divide lo spazio in MBR (minimum bounding rectangles, infatti R-tree deriva proprio da Rectangle) innestati gerarchicamente e quando possibile sovrapposti.
Ogni nodo dell'R-tree ha un numero variabile di entry (fino ad un massimo predeterminato). Ogni entry che non sia un nodo foglia contiene due entità: una identifica il nodo figlio, l'altra l'MBR che contiene tutte le entry del nodo figlio.
L'algoritmo di inserimento e cancellazione di entry dagli MBR assicura che elementi 'vicini' siano posizionati nello stesso posto (nodo foglia): un nuovo elemento andrà nel nodo foglia che richiede il minor numero di estensioni delle dimensioni dell'MBR).
Gli algoritmi di ricerca usano gli MBR per decidere se cercare o meno nel nodo figlio del nodo corrente. In questo modo la maggior parte dei nodi non viene esplorata dagli algoritmi. Per questo motivo, come per i B-tree, ciò rende gli R-tree adatti ai database, dove i nodi possono essere copiati in memoria solo quando necessario.
Diversi algoritmi possono essere usati per dividere i nodi quando diventano troppo estesi, ovvero quando vengono aggiunti in un nodo un numero di elementi che supera il limite prestabiito.
Gli R-tree non garantiscono una performance ottima di caso peggiore, ma in generale si comportano molto bene con dati reali. Per questo nel 2004 è stato sviluppato un nuovo algoritmo (Priority R-tree), che cerca di essere efficiente ed allo stesso tempo ottimo rispetto al caso peggiore
L'input è un rettangolo MBR. La ricerca è simile a quella dei B-tree. Essa parte dal nodo radice e si estende ad ogni nodo figlio (contenente sia rettangoli MBR che puntatori ai nodi figli). Giunti al nodo foglia si hanno i veri e propri oggetti multidimensionali. Per ogni MBR incontrato si verifica se esso è sovrapposto con il rettangolo di ricerca (di input) o meno. Se esso è sovrapposto si cerca anche in quel nodo corrispondente, altrimenti no. La ricerca procede quindi in un modo ricorsivo, fermandosi quando tutti gli MBR sovrapposti sono stati esplorati. Un oggetto viene aggiunto all'insieme di ricerca (l'output dell'algoritmo) quando si trova in un MBR che si sovrappone all'MBR query.
Per inserire un oggetto l'albero è visitato ricorsivamente dal nodo radice. Un elemento è inserito in un MBR che necessita il minor numero di estensione delle dimensioni che l'aggiunta comporterebbe. A parità di numero di estensioni, viene scelto il nodo con MBR di area minima. Trovato il nodo foglia corretto, viene aggiunto l'oggetto vero e proprio. Se viene aggiunto un nodo ad un MBR che contiene già un numero-limite di elementi (di solito chiamato 'C', capacity), la regione (MBR) viene divisa in due regioni con un algoritmo di split. Tale algoritmo realizza le due nuove regioni tendendo a creare MBR con area minima (tra tutti quelli possibili).
Uso degli indici spaziali.
L' operatore "&&" calcola l'intersezione tra Bounding(limite) Boxes.
A ciascuna geometria è associato un MBR (ATTENZIONE! L'intersezione tra MBR non corrisponde all'intersezione tra le geometrie!)
Esempio 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
)
Seleziona l'id degli oggetti presenti in edificio che intersecano il poligono e che risultano avere id nella tabella costituita da tutti gli oggetti che intersecano (&&) il sistema di riferimento del poligono stesso (modificare)
Un esempio più complesso
Realizzazione di un Moving Object Database (MOD) per lo storing ed il retrieval (conservazione ed il recupero) delle informazioni collegate al movimento degli oggetti: le traiettorie.
Si ricorda che una traiettoria è un insieme di punti spaziotemporali:
< (x1; y1; t1); (x2; y2; t2); . ; (xN; yN; tN) >
Determina se un segmento, o parte di esso, si trova all'interno dell'area considerata.
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.
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.
La proposta avanzata prevede
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) algoritmo di Clipping 3D Cohen-Sutherland tra le traiettorie rimanenti e il box.
-Proiezione
-intersezione
-clipping (gangio, taglio,fermaglio) 3d
-------- ----- ------ -----Altro gis-------- ----- ------ ----- ----- ---------------
Un GIS è invece un sistema informativo computerizzato che permette l'acquisizione, la registrazione, l'analisi, la visualizzazione e la restituzione di informazioniderivanti da dati geografici (geo-riferiti). Secondo la definizione di Burrough (1986) 'il GIS è composto da una serie di strumenti software per acquisire, memorizzare, estrarre, trasformare e visualizzare dati spaziali dal mondo reale'. Trattasi quindi di un sistema informatico in grado di produrre, gestire e analizzare dati spaziali associando a ciascun elemento geografico una o più descrizioni alfanumeriche.
Il GIS differisce dal DBMS (o Database Management System), in quanto si occupa essenzialmente dell'elaborazione e manipolazione dei dati georeferenziati, anche se questi possono essere memorizzati in un DBMS o in singoli file.
Per la rappresentazione dei dati in un sistema informatico occorre formalizzare un modello rappresentativo flessibile che si adatti ai fenomeni reali. Nel GIS abbiamo tre tipologie di informazioni:
Geometriche: relative alla rappresentazione cartografica degli oggetti rappresentati; quali la forma (punto, linea, poligono), la dimensione e la posizione geografica;
Topologiche: riferite alle relazioni reciproche tra gli oggetti (connessione, adiacenza, inclusione ecc.);
Informative: riguardanti i dati (numerici, testuali ecc.) associati ad ogni oggetto.
Il GIS prevede la gestione di queste informazioni in un database relazionale.
L'aspetto che caratterizza il GIS è quello geometrico: esso memorizza la posizione del dato impiegando un sistema di proiezione reale che definisce la posizione geografica dell'oggetto. Il GIS gestisce contemporaneamente i dati provenienti da diversi sistemi di proiezione e riferimento (es. UTM o Gauss Boaga)
A differenza della cartografia su carta, la scala in un GIS è un parametro di qualità del dato e non di visualizzazione. Il valore della scala esprime le cifre significative che devono essere considerate valide delle coordinate di georeferimento.
L'informazione territoriale può essere codificata in un sistema informativo geografico attraverso due tipologie principali di dato: il dato vettoriale e il dato raster.
I dati vettoriali sono costituiti da elementi semplici quali punti, linee e poligoni, codificati e memorizzati sulla base delle loro coordinate. Un punto viene individuato in un sistema informativo geografico attraverso le sue coordinate reali (x1, y1); una linea o un poligono attraverso la posizione dei suoi nodi (x1, y1; x2, y2; ). A ciascun elemento è associato un record del database informativo che contiene tutti gli attributi dell'oggetto rappresentato.
Il dato raster permette di rappresentare il mondo reale attraverso una matrice di celle, generalmente di forma quadrata o rettangolare, dette pixel. A ciascun pixel sono associate le informazione relative a ciò che esso rappresenta sul territorio. La dimensione del pixel (detta anche pixel size), generalmente espressa nell'unità di misura della carta (metri, chilometri etc.), è strettamente relazionata alla precisione del dato.
I dati vettoriali e i dati raster si adattano ad usi diversi. La cartografia vettoriale è particolarmente adatta alla rappresentazione di dati che variano in modo discreto (ad esempio l'ubicazione dei cassonetti dei rifiuti di una città o la rappresentazione delle strade o una carta dell'uso del suolo), la cartografia raster è più adatta alla rappresentazione di dati con variabilità continua (ad esempio un modello digitale di elevazione o una carta di acclività del versante).
Appunti su: |
|