Outdated version of the documentation. Find the latest one here.

17.1. Lesson: Configura PostGIS

L’impostazione delle funzioni PostGIS ti consentirà di accedere alle funzioni spaziali da PostgreSQL.

‘obiettivo di questa lezione: Installare funzioni spaziali e dimostrarne gli effetti.

Nota

In questo esercizio assumeremo l’uso di PostGIS versione 2.1. L’installazione e la configurazione del database sono diverse per le versioni precedenti, ma il resto di questo materiale continuerà a funzionare. Consulta la documentazione della tua piattaforma per aiuto con l’installazione e la configurazione del database.

17.1.1. Installa su Ubuntu

Installi facilmente PostGIS con apt

$ sudo apt-get install postgis
$ sudo apt-get install postgresql-9.1-postgis

Veramente facile...

Nota

Depending on which version of Ubuntu you are using, and which repositories you have configured, these commands will install PostGIS 1.5, or 2.x. You can find the version installed by issuing a select PostGIS_full_version(); query with psql or another tool.

Per installare l’ultima versione di PostGIS, puoi utilizzare i seguenti comandi.

$ sudo apt-add-repository ppa:sharpie/for-science
$ sudo apt-add-repository ppa:sharpie/postgis-nightly
$ sudo apt-get update
$ sudo apt-get install postgresql-9.1-postgis-nightly

17.1.2. Installe su Windows

L’installazione su Windows è un po’ più complicata, ma non difficile. Nota che devi essere online per installare la struttura dati PostGis.

First Visit the download page.

Then follow this guide.

More information about installing on Windows can be found on the PostGIS website.

17.1.3. Installing on Other Platforms

The PostGIS website download has information about installing on other platforms including macOS and on other linux distributions

17.1.4. Configura i database per usare PostGIS

Una volta installato PostGIS, avrai bisogno di configurare il database per utilizzare le estensioni. Se hai installato PostGIS versione> 2.0, basta eseguire il seguente comando con psql utilizzando il database degli indirizzi del nostro esercizio precedente.

$ psql -d address -c "CREATE EXTENSION postgis;"

Nota

If you are using PostGIS 1.5 and a version of PostgreSQL lower than 9.1, you will need to follow a different set of steps in order to install the postgis extensions for your database. Please consult the PostGIS Documentation for instructions on how to do this. There are also some instructions in the previous version of this manual.

17.1.5. Guarda le funzioni PostGIS installate

Puoi pensare a PostGIS come a una raccolta di funzioni del database che estendono le funzionalità di base di PostgreSQL in modo che possa trattare con i dati spaziali. Con ‘trattare con’, intendi memorizzare, recuperare, interrogare e manipolare. Per fare questo, un certo numero di funzioni sono installate nel database.

Il database PostgreSQL address è ora abilitato ad operare come geospaziale, grazie a PostGIS. Approfondirai meglio nelle prossime sezioni, ma puoi avere un piccolo assaggio. Vuoi creare un punto dal testo. Per prima cosa usa il comando psql per trovare le funzioni relative al punto. Se non sei già connesso al database address, fallo ora. Quindi esegui:

\df *point*

This is the command we’re looking for: st_pointfromtext. To page through the list, use the down arrow, then press q to quit back to the psql shell.

Prova a eseguire questo comando:

select st_pointfromtext('POINT(1 1)');

Risultato:

st_pointfromtext
--------------------------------------------
0101000000000000000000F03F000000000000F03F
(1 row)

Nota tre cose:

  • Definisci u punto nella posizione 1,1 (è assunto EPSG:4326) usando POINT(1 1),

  • Hai eseguito un’istruzione SQL, ma non su alcuna tabella, solo sui dati immessi dal prompt SQL,

  • The resulting row does not make much sense.

La riga risultante è nel formato OGC chiamato ‘Well Known Binary’ (WKB). Vedrai questo formato in dettaglio nella prossima sezione.

Per ottenere i risultati come testo, puoi fare una rapida scansione attraverso l’elenco delle funzioni per qualcosa che restituisce il testo:

\df *text

La query che stai cercando ora è st_astext. Combinalo con l’interrogazione precedente:

select st_astext(st_pointfromtext('POINT(1 1)'));

Risultato:

 st_astext
------------
  POINT(1 1)
  (1 row)

Hai inserito la stringa POINT(1,1), l’hai trasformata in un punto usando st_pointfromtext(), e l’hai ritrasformata in un formato leggibile con st_astext(), che ti ha ritornato la stringa originale.

Un ultimo esempio prima di entrare nel dettaglio dell’utilizzo di PostGIS:

select st_astext(st_buffer(st_pointfromtext('POINT(1 1)'),1.0));

Cosa hai fatto? Hai creato un buffer di 1 grado attorno al punto e hai il risultato come testo.

17.1.6. Sistemi di riferimento spaziale

Oltre alle funzioni PostGIS, l’estensione contiene una raccolta di definizioni del sistema di riferimento spaziale (SRS) come definito dall’European Petroleum Survey Group (EPSG). Questi vengono utilizzati durante operazioni come le conversioni del sistema di riferimento di coordinate (CRS).

Puoi verificare queste definizioni SRS nel database così come sono memorizzate nelle normali tabelle del database.

Dapprima esamina lo schema della tabella immettendo il seguente comando nel terminale di psql:

\d spatial_ref_sys

Il risultato dovrebbe essere questo:

Table "public.spatial_ref_sys"
   Column   |          Type           | Modifiers
 -----------+-------------------------+-----------
  srid      | integer                 | not null
  auth_name | character varying(256)  |
  auth_srid | integer                 |
  srtext    | character varying(2048) |
  proj4text | character varying(2048) |
  Indexes:
"spatial_ref_sys_pkey" PRIMARY KEY, btree (srid)

Puoi utilizzare interrogazioni SQL predefinite (come hai appreso nelle sezioni introduttive), per visualizzare e manipolare questa tabella, anche se non è una buona idea aggiornare o eliminare qualsiasi record a meno che non si sappia cosa si sta facendo.

Un SRID a cui potresti essere interessato è EPSG: 4326 - il sistema di riferimento geografico / lat lon che utilizza l’ellissoide WGS 84. Dai un’occhiata a questo:

select * from spatial_ref_sys where srid=4326;

Risultato:

srid      | 4326
auth_name | EPSG
auth_srid | 4326
srtext    | GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,
0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
proj4text | +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs

Il srtext è la definizione della proiezione in well known text (pui riconoscerlo nei file .prj degli shapefile).

17.1.7. In Conclusion

Ora hai le funzioni PostGIS installate nella tua copia di PostgreSQL. Con questo sarai in grado di utilizzare le varie funzioni spaziali di PostGIS.

17.1.8. What’s Next?

Adesso imparerai come gli elementi spaziali sono rappresentate in un database.