PostGIS je razširitev zbirke podatkov PostgreSQL, ki dodaja podporo za objekte geografskih podatkov. To nam omogoča uporabo baze podatkov PostgreSQL za shranjevanje in poizvedovanje po prostorskih podatkih. Kot lahko ugibate, kombinacija PostGIS in Docker zagotavlja učinkovito in obsežno metodo upravljanja prostorskih podatkov.
V tej vadnici se bomo naučili, kako lahko hitro nastavimo primerek PostGIS znotraj vsebnika Docker. Pokrili bomo tudi nekaj osnov PostGIS in se naučili, kako naložiti prostorske podatke in izvesti nekaj osnovnih poizvedb z vsebnikom.
Zahteve:
Če želite slediti tej vadnici, zagotovite, da imate naslednje:
- Nameščen Docker Engine v vašem sistemu. Oglejte si naše vadnice o tem, kako namestiti Docker na vaš ciljni sistem.
- Osnovno poznavanje PostgreSQL in prostorskih podatkov
Ko so dane zahteve izpolnjene, lahko nadaljujemo z vadnico.
Zaženite PostGIS v Dockerju
Nadaljujmo in nastavimo vsebnik PostGIS. Začnemo s potegom vsebnika PostGIS iz Docker Huba z naslednjim ukazom:
$ docker pull postgis/postgis
Ko prenesemo sliko, lahko zaženemo vsebnik s sliko, kot je prikazano v naslednjem ukazu:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =geslo -d -p 5432:5432 postgis/postgis
V podanem ukazu določimo naslednje parametre:
- –name – To nam omogoča, da določimo ime vsebnika.
- -e – To nam omogoča, da geslo PostgreSQL nastavimo kot spremenljivko okolja. To je geslo, ki se uporablja za uporabnika postgres.
- -d – To pove Dockerju, naj zažene vsebnik v ozadju ali ločenem načinu.
- -p 5432:5432 – To nam omogoča preslikavo vrat 5432 znotraj vsebnika na gostitelja na vratih 5432.
Če želite preveriti, ali vsebnik deluje, uporabite naslednji ukaz:
$ docker psNa seznamu bi morali videti vsebnik PostGIS.
Naložite prostorske podatke v PostGIS
Zdaj, ko imamo vsebnik PostGIS v teku, lahko naložimo prostorske podatke z različnimi orodji in formatom, kot so GeoJSON, CSV itd.
V tem primeru uporabimo Shapefile, kot je prikazano v naslednjih ukazih:
$ mkdir -p ~/podatki$ cd ~/podatki
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ razpakirajte ne_110m_admin_0_countries.zip
V podanih ukazih začnemo z ustvarjanjem imenika za shranjevanje podatkov, ki jih želimo naložiti. Nato prenesemo geografske podatke z navedene povezave in jih ekstrahiramo v imenik.
Naslednji korak je nalaganje podatkov v bazo podatkov. Začnemo s povezovanjem z bazo podatkov PostgreSQL z naslednjim ukazom:
$ docker exec -it postgis-strežnik psql -U postgres -d postgresČe ste pozvani k vnosu gesla, vnesite geslo, ki ste ga konfigurirali pri zagonu vsebnika. To bi moralo potrditi vašo pristnost in vas vrniti v lupino PostgreSQL.
Ko se povežemo z bazo podatkov, lahko uporabimo pripomoček »shp2pgsql« za uvoz podatkov iz datotek oblike, ki smo jih ekstrahirali v prejšnjih korakih.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_držav | psql -U postgres -d postgresV prejšnjem ukazu z možnostjo -I ustvarimo prostorski indeks za hitrejše poizvedovanje po prostorskih podatkih. Določimo tudi koordinatni sistem kot 4326 s parametrom -s. EPSG:4326 je standardni sistem koordinatnega stanja za WGS 84.
Podatki poizvedbe PostGIS
Ko naložimo podatke, lahko zapustimo pripomoček PSQL tako, da zaženemo ukaz “\q” ali izhod.
Nato, da preverimo, ali imamo naložene podatke, se lahko znova povežemo z bazo podatkov tako, da izvedemo naslednji ukaz:
$ docker exec -it postgis-vsebnik psql -U postgres -d postgresNato lahko zaženete osnovne prostorske poizvedbe, da preverite, ali imate shranjene podatke.
Zaključek
V tej vadnici ste se naučili, kako zagnati strežnik PostGIS kot vsebnik Docker in naložiti podatke v bazo podatkov.