Importante

La traduzione è uno sforzo comunitario you can join. Questa pagina è attualmente tradotta al 89.80%.

16.1. Lezione: Impostazione PostGIS

L’impostazione delle funzionalità di PostGIS consente di accedere alle funzioni spaziali in PostgreSQL.

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

Nota

In questo esercizio si presuppone l’uso di PostGIS versione 2.1 o più recente. L’installazione e la configurazione del database sono diverse per le versioni precedenti, ma il resto del materiale di questo modulo funzionerà comunque. Per informazioni sull’installazione e sulla configurazione del database, consultare la documentazione relativa alla propria piattaforma.

16.1.1. Installare su Ubuntu

Postgis è facilmente installabile da apt.

$ sudo apt install postgresql
$ sudo apt install postgis

Effettivamente, è così facile…

Nota

Le versioni specifiche che verranno installate dipendono dalla versione di Ubuntu in uso e dai repository configurati. Dopo l’installazione puoi verificare la versione eseguendo una query select PostGIS_full_version(); con psql o un altro strumento.

Per installare una versione specifica (per esempio, PostgreSQL versione 13 e PostGIS 3), puoi usare i seguenti comandi.

$ sudo apt install wget ca-certificates
$ sudo lsb_release -a
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ sudo apt-get update
$ sudo apt install postgis postgresql-13-postgis-3

16.1.2. Installare su Windows

L’installazione su Windows può essere fatta da pacchetti binari usando una normale finestra di dialogo di installazione di Windows.

Prima visita la pagina di download <https://www.postgresql.org/download/>`_. Poi segui this guide.

Ulteriori informazioni sull’installazione su Windows possono essere trovate su PostGIS.

16.1.3. Installare su altre piattaforme

Il PostGIS website download ha informazioni su come installare su altre piattaforme, comprese macOS e altre distribuzioni Linux.

16.1.4. Configurare 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

A seconda della tua versione, potresti trovare altre istruzioni su come abilitare spazialmente un database su https://postgis.net/docs/postgis_administration.html#create_spatial_db.

16.1.5. Esaminare le funzioni di 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:

  • We defined a point at position 1,1 (EPSG:4326 is assumed) using 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)

Here, we entered the string POINT(1,1), turned it into a point using st_pointfromtext(), and turned it back into a human-readable form with st_astext(), which gave us back our original string.

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.

16.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

The srtext is the projection definition in well known text (you may recognise this from .prj files in your shapefile collection).

16.1.7. In Conclusione

Ora hai installato le funzioni di PostGIS nella tua copia di PostgreSQL. A questo punto sarai in grado di utilizzare le numerose funzioni spaziali di PostGIS.

16.1.8. Cosa Segue?

Di seguito imparerai come gli elementi spaziali vengono rappresentati in un database.