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 poligoni (e aggregazioni multioggetto).
For further information, have a look at the OGC Simple Feature for SQL standard.
Aggiungi un campo punto alla tabella people:
alter table people add column the_geom geometry;
Noterai che il tipo di campo della geometria non specifica in modo implicito quale 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 nella tabella geometry_columns:
insert into geometry_columns values
('','public','people','the_geom',2,4326,'POINT');
Perché? geometry_columns viene utilizzato da alcune applicazioni per sapere quali tabelle del database contengono dati geometrici.
Nota
Se la precedente istruzione INSERT causa un errore, esegui prima questa interrogazione:
select * from geometry_columns;
Se la colonna f_table_name contiene il valore people, allora questa tabella è già stata registrata e non è necessario fare altro.
The value 2 refers to the number of dimensions; in this case, two: x and y.
Il valore 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 le tabelle sono spazialmente abilitate, puoi archiviare le geometrie in esse:
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:
Scegli 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.