Come memorizziamo e rappresentiamo delle entità geografiche in un database? In questa lezione tratteremo di uno dei possibili approcci, il Simple Feature Model definito da OGC.
** Obiettivo di questa lezione: ** Imparare cosa è il modello SFS e come usarlo.
Open Geospatial Consortium (OGC) è un’organizzazione internazionale no-profit, basata sul consenso volontario, che si occupa di definire specifiche tecniche per i servizi geospaziali e di localizzazione (location based). OGC è formato da oltre 370 membri (governi, industria privata, università) con l’obiettivo di sviluppare ed implementare standard per il contenuto, i servizi e l’interscambio di dati geografici (GIS - Sistema informativo geografico) che siano “aperti ed estensibili”. Le specifiche definite da OGC sono pubbliche (PAS) e disponibili gratuitamente. - Wikipedia
Il Simple Feature per SQL (SFS) Model è un modo non-topologico per l’uso di dati geospaziali in un database e definisce le funzioni per l’accesso, il funzionamento e la costruzione di questi dati.
Il modello definisce dati geospaziali provenienti da Vettori di punti, linee,e Poligono (e aggregazioni multioggetto).
Per maggiori informazioni, guarda Simple Feature OGC per SQL <http://www.opengeospatial.org/standards/sfs> _ standard.
Aggiungi un campo punto alla nostra tabella people
alter table people add column the_geom geometry;
Nota che il tipo di campo di geometry non specifica implicitamente il tipo di geometria per il campo - per questo abbiamo bisogno di un vincolo
alter table people
add constraint people_geom_point_chk
check(st_geometrytype(the_geom) = 'ST_Point'::text OR the_geom IS NULL);
Questo aggiunge un vincolo alla tabella in modo che accetterà solo una geometria punto o un valore nullo.
Crea una nuova tabella denominata cities e inserisci alcune colonne appropriate, tra cui un campo geometry per poligoni (i confini della città). Assicurarti che esiste un vincolo per rispettare geometrie poligoni.
A questo punto dovresti aggiungere i dati nella tabella :kbd:’geometry_columns`
insert into geometry_columns values
('','public','people','the_geom',2,4326,'POINT');
Perché? : kbd:geometry_columns viene utilizzato da alcune applicazioni per sapere quali tabelle del database contengono dati geometrici.
Nota
Se : kbd:INSERT causa un errore, esegui prima questa interrogazione:
select * from geometry_columns;
If the column :kbd:`f_table_name` contains the value :kbd:`people`, then
this table has already been registered and you don't need to do anything
more.
Il valore: kbd:2 si riferisce al numero di dimensioni; in questo caso, due: x e y.
Il valore: kbd:4326 si riferisce alla proiezione che stai utilizzando; in questo caso, WGS 84, riferita con il numero 4326 (vedere la precedente discussione sul EPSG).
Aggiung un’appropriata geometry_columns per il tuo vettore new cities
Ora che la tabella e geo-abilitata, puoi compilare le geometri in essa
insert into people (name,house_no, street_id, phone_no, the_geom)
values ('Fault Towers',
34,
3,
'072 812 31 28',
'SRID=4326;POINT(33 -33)');
Nota
Nei nuovi dati inseriti, dovrai specificare la proiezione (SRID) che desideri utilizzare. Questo è perché hai inserito la geometria del nuovo punto utilizzando una stringa di testo semplice ma che non aggiunge automaticamente le informazioni di proiezione corrette. Ovviamente, il nuovo punto deve utilizzare lo stesso SRID come i dati aggiunti, quindi devi specificarlo.
Se a questo punto staI utilizzando una interfaccia grafica, per esempio, specificando la proiezione per ciascun punto dovrebbe essere automatico. In altre parolenon ti preoccupererai di usare la proiezione corretta per ogni punto che desideri aggiungere, se lo hai già specificato.
Adesso apri QGIS e prova a vedere la tua tabella people. Puoi modificare/aggiungere/cancellare righe e interrogare il database per vedere come è cambiato.
Per caricare un layer PostGIS in QGIS usa l’opzione dal menu Layer ‣ Add PostGIS Layers oppure l’icona:
Queesto aprirà la finestra di dialogo:
Sscegli New per aprire questa finestra:
Quindi definisci una nuova connessione, per esempio:
Name: myPG
Service:
Host: localhost
Port: 5432
Database: address
User:
Password:
Per vedere se QGIS ha trovato il database address e che il tuo username e password sono corretti, scegli Test Connect. Se funziona scegli Save Username e Save Password. Quindi scegli OK per creare questa connessione.
Torna alla finestra Add PostGIS Layers , scegli Connect e aggiungi i layer al tuo progetto.
Formulate un’interrogaazione che mostre il nome di una persona, la strada e la posizione (da the-geom coloumn) come testo
hai visto come aggiungere oggetti spaziali database e visualizzarli nel GIS.
Nel prossimo vedrai come importare ed esportare i dati da e per il database.