PostGIS is een uitbreiding van de PostgreSQL-database die ondersteuning voor geografische gegevensobjecten toevoegt. Hierdoor kunnen we de PostgreSQL-database gebruiken om ruimtelijke gegevens op te slaan en op te vragen. Zoals u kunt raden, biedt de combinatie van PostGIS en Docker een efficiënte en uitgebreide methode voor het beheren van ruimtelijke gegevens.
In deze tutorial leren we hoe we snel een PostGIS-instantie in een Docker-container kunnen opzetten. We behandelen ook enkele basisprincipes van PostGIS en leren hoe u ruimtelijke gegevens laadt en enkele basisquery's uitvoert met behulp van de container.
Vereisten:
Zorg ervoor dat u over het volgende beschikt om deze zelfstudie te volgen:
- Docker Engine op uw systeem geïnstalleerd. U kunt onze tutorials raadplegen over hoe u Docker op uw doelsysteem installeert.
- Basiskennis van PostgreSQL en ruimtelijke data
Als aan de gegeven vereisten is voldaan, kunnen we doorgaan met de tutorial.
Voer PostGIS uit in Docker
Laten we verder gaan en de PostGIS-container instellen. We beginnen met het ophalen van de PostGIS-container uit de Docker Hub met het volgende commando:
$ docker pull postgis/postgis
Zodra we de afbeelding hebben gedownload, kunnen we de container uitvoeren met behulp van de afbeelding, zoals weergegeven in de volgende opdracht:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =wachtwoord -d -p 5432:5432 postgis/postgis
In het gegeven commando specificeren we de volgende parameters:
- –name – Hiermee kunnen we de naam van de container opgeven.
- -e – Hiermee kunnen we het PostgreSQL-wachtwoord instellen als een omgevingsvariabele. Dit is het wachtwoord dat wordt gebruikt voor de postgres-gebruiker.
- -d – Dit vertelt Docker om de container op de achtergrond of in de vrijstaande modus uit te voeren.
- -p 5432:5432 – Hiermee kunnen we poort 5432 in de container toewijzen aan de host op poort 5432.
Gebruik de volgende opdracht om te controleren of de container actief is:
$ docker psU zou de PostGIS-container in de lijst moeten zien staan.
Laad de ruimtelijke gegevens in PostGIS
Nu we de PostGIS-container draaien, kunnen we de ruimtelijke gegevens laden met behulp van verschillende tools en formaten zoals GeoJSON, CSV, enz.
Voor dit geval gebruiken we een Shapefile zoals weergegeven in de volgende opdrachten:
$ mkdir -p ~/data$ cd~/data
wgethttps://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ pak ne_110m_admin_0_countries.zip uit
In de gegeven opdrachten beginnen we met het maken van een map waarin we de gegevens opslaan die we willen laden. Vervolgens downloaden we geogegevens van de opgegeven link en extraheren deze in de map.
De volgende stap is het laden van de gegevens in de database. We beginnen met het verbinden met de PostgreSQL-database met behulp van de volgende opdracht:
$ docker exec -it postgis-server psql -U postgres -d postgresAls u om een wachtwoord wordt gevraagd, geeft u het wachtwoord op dat u hebt geconfigureerd bij het uitvoeren van de container. Dit zou u moeten authenticeren en u in de PostgreSQL-shell plaatsen.
Eenmaal verbonden met de database, kunnen we het hulpprogramma “shp2pgsql” gebruiken om de gegevens te importeren uit de Shapefiles die we in de vorige stappen hebben geëxtraheerd.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresIn het vorige commando gebruiken we de optie -I om een ruimtelijke index te maken voor een snellere bevraging van de ruimtelijke gegevens. We specificeren het coördinatensysteem ook als 4326 met behulp van de parameter -s. De EPSG:4326 is het standaard coördinatenstatussysteem voor WGS 84.
PostGIS-querygegevens
Nadat we de gegevens hebben geladen, kunnen we het PSQL-hulpprogramma afsluiten door de opdracht '\q' uit te voeren of af te sluiten.
Om vervolgens te verifiëren of de gegevens zijn geladen, kunnen we opnieuw verbinding maken met de database door de volgende opdracht uit te voeren:
$ docker exec -it postgis-container psql -U postgres -d postgresVervolgens kunt u de basisruimtelijke query's uitvoeren om te verifiëren dat de gegevens zijn opgeslagen.
Conclusie
In deze tutorial leerde u hoe u de PostGIS-server als een Docker-container kunt gebruiken en de gegevens in de database kunt laden.