PostGIS er en utvidelse av PostgreSQL-databasen som legger til støtte for geografiske dataobjekter. Dette lar oss bruke PostgreSQL-databasen til å lagre og spørre etter romlige data. Som du kan gjette, gir kombinasjonen av PostGIS og Docker en effektiv og omfattende metode for å administrere romlige data.
I denne opplæringen lærer vi hvordan vi raskt kan sette opp en PostGIS-forekomst i en Docker-beholder. Vi vil også dekke noe grunnleggende om PostGIS og lære hvordan du laster inn romlige data og utfører noen grunnleggende spørringer ved å bruke containeren.
Krav:
For å følge med på denne opplæringen, sørg for at du har følgende:
- Installert Docker Engine på systemet ditt. Du kan sjekke veiledningene våre om hvordan du installerer Docker på målsystemet ditt.
- Grunnleggende kunnskap om PostgreSQL og romlige data
Med de gitte kravene oppfylt, kan vi fortsette med opplæringen.
Kjør PostGIS i Docker
La oss fortsette og sette opp PostGIS-beholderen. Vi starter med å trekke PostGIS-beholderen fra Docker Hub med følgende kommando:
$ docker pull postgis/postgis
Når vi har lastet ned bildet, kan vi kjøre beholderen ved å bruke bildet som vist i følgende kommando:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =passord -d -p 5432:5432 postgis/postgis
I den gitte kommandoen spesifiserer vi følgende parametere:
- –navn – Dette lar oss spesifisere navnet på beholderen.
- -e – Dette lar oss sette PostgreSQL-passordet som en miljøvariabel. Dette er passordet som brukes for postgres-brukeren.
- -d – Dette forteller Docker å kjøre beholderen i bakgrunnen eller frakoblet modus.
- -p 5432:5432 – Dette lar oss kartlegge port 5432 inne i containeren til verten på port 5432.
For å bekrefte at beholderen kjører, bruk følgende kommando:
$ docker psDu bør se PostGIS-beholderen oppført.
Last inn romlige data i PostGIS
Nå som vi har PostGIS-beholderen i gang, kan vi laste inn romlige data ved hjelp av ulike verktøy og formater som GeoJSON, CSV, etc.
For dette tilfellet bruker vi en Shapefil som vist i følgende kommandoer:
$ mkdir -p ~/data$ cd ~/data
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ unzip ne_110m_admin_0_countries.zip
I de gitte kommandoene starter vi med å lage en katalog for å lagre dataene vi ønsker å laste. Vi laster deretter ned en geodata fra den angitte lenken og trekker den ut i katalogen.
Det neste trinnet er å laste dataene inn i databasen. Vi starter med å koble til PostgreSQL-databasen ved å bruke følgende kommando:
$ docker exec -it postgis-server psql -U postgres -d postgresHvis du blir bedt om et passord, oppgi passordet du konfigurerte da du kjørte beholderen. Dette bør autentisere deg og slippe deg inn i PostgreSQL-skallet.
Når vi er koblet til databasen, kan vi bruke 'shp2pgsql'-verktøyet til å importere dataene fra Shapefilene som vi hentet ut i de forrige trinnene.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresI den forrige kommandoen bruker vi alternativet -I for å lage en romlig indeks for en raskere spørring av de romlige dataene. Vi spesifiserer også koordinatsystemet som 4326 ved å bruke parameteren -s. EPSG:4326 er standard koordinattilstandssystem for WGS 84.
PostGIS Query Data
Når vi har lastet inn dataene, kan vi avslutte PSQL-verktøyet ved å kjøre kommandoen '\q' eller avslutte.
Deretter, for å bekrefte at vi har dataene lastet, kan vi koble til databasen på nytt ved å kjøre følgende kommando:
$ docker exec -it postgis-container psql -U postgres -d postgresDeretter kan du kjøre de grunnleggende romlige spørringene for å bekrefte at du har lagret dataene.
Konklusjon
I denne opplæringen lærte du hvordan du kjører PostGIS-serveren som en Docker-beholder og laster dataene inn i databasen.