PostGIS è un'estensione del database PostgreSQL che aggiunge il supporto per oggetti di dati geografici. Ciò ci consente di utilizzare il database PostgreSQL per archiviare ed interrogare dati spaziali. Come puoi immaginare, la combinazione di PostGIS e Docker fornisce un metodo efficiente ed esteso per gestire i dati spaziali.
In questo tutorial impareremo come configurare rapidamente un'istanza PostGIS all'interno di un contenitore Docker. Tratteremo anche alcune nozioni di base su PostGIS e impareremo come caricare dati spaziali ed eseguire alcune query di base utilizzando il contenitore.
Requisiti:
Per seguire questo tutorial, assicurati di avere quanto segue:
- Docker Engine installato sul tuo sistema. Puoi controllare i nostri tutorial su come installare Docker sul tuo sistema di destinazione.
- Conoscenza di base di PostgreSQL e dei dati spaziali
Soddisfatti i requisiti indicati, possiamo procedere con il tutorial.
Esegui PostGIS in Docker
Procediamo e configuriamo il contenitore PostGIS. Iniziamo estraendo il contenitore PostGIS dal Docker Hub con il seguente comando:
$ docker pull postgis/postgis
Una volta scaricata l'immagine, possiamo eseguire il contenitore utilizzando l'immagine come mostrato nel seguente comando:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =password -d -p 5432:5432 postgis/postgis
Nel comando dato specifichiamo i seguenti parametri:
- –name – Questo ci permette di specificare il nome del contenitore.
- -e – Questo ci consente di impostare la password PostgreSQL come variabile di ambiente. Questa è la password utilizzata per l'utente postgres.
- -d – Questo indica a Docker di eseguire il contenitore in background o in modalità distaccata.
- -p 5432:5432 – Questo ci consente di mappare la porta 5432 all'interno del contenitore sull'host sulla porta 5432.
Per verificare che il contenitore sia in esecuzione, utilizzare il comando seguente:
$docker psDovresti vedere il contenitore PostGIS elencato.
Carica i dati spaziali in PostGIS
Ora che abbiamo il contenitore PostGIS in esecuzione, possiamo caricare i dati spaziali utilizzando vari strumenti e formati come GeoJSON, CSV, ecc.
In questo caso, utilizziamo uno Shapefile come mostrato nei seguenti comandi:
$ mkdir -p ~/dati$ cd ~/dati
wgethttps://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ decomprimere ne_110m_admin_0_countries.zip
Nei comandi forniti, iniziamo creando una directory in cui archiviare i dati che desideriamo caricare. Scarichiamo quindi i dati geografici dal collegamento specificato e li estraiamo nella directory.
Il passo successivo è caricare i dati nel database. Iniziamo connettendoci al database PostgreSQL utilizzando il seguente comando:
$ docker exec -it postgis-server psql -U postgres -d postgresSe viene richiesta una password, fornire la password configurata durante l'esecuzione del contenitore. Questo dovrebbe autenticarti e farti entrare nella shell PostgreSQL.
Una volta connessi al database, possiamo utilizzare l'utility “shp2pgsql” per importare i dati dagli Shapefile che abbiamo estratto nei passaggi precedenti.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresNel comando precedente, utilizziamo l'opzione -I per creare un indice spaziale per un'interrogazione più rapida dei dati spaziali. Specifichiamo anche il sistema di coordinate come 4326 utilizzando il parametro -s. EPSG:4326 è il sistema di stati di coordinate standard per WGS 84.
Dati delle query PostGIS
Una volta caricati i dati, possiamo uscire dall'utilità PSQL eseguendo il comando '\q' o uscire.
Successivamente, per verificare di aver caricato i dati, possiamo riconnetterci al database eseguendo il seguente comando:
$ docker exec -it postgis-container psql -U postgres -d postgresSuccessivamente, puoi eseguire le query spaziali di base per verificare di avere i dati archiviati.
Conclusione
In questo tutorial hai imparato come eseguire il server PostGIS come contenitore Docker e caricare i dati nel database.