PostGIS yra PostgreSQL duomenų bazės plėtinys, papildantis geografinių duomenų objektų palaikymą. Tai leidžia mums naudoti PostgreSQL duomenų bazę erdviniams duomenims saugoti ir jų užklausoms pateikti. Kaip galite atspėti, PostGIS ir Docker derinimas suteikia veiksmingą ir platų erdvinių duomenų valdymo būdą.
Šioje pamokoje sužinosime, kaip galime greitai nustatyti PostGIS egzempliorių Docker konteineryje. Taip pat apžvelgsime kai kuriuos PostGIS pagrindus ir sužinosime, kaip įkelti erdvinius duomenis ir atlikti keletą pagrindinių užklausų naudojant konteinerį.
Reikalavimai:
Jei norite tęsti šią mokymo programą, įsitikinkite, kad turite:
- Jūsų sistemoje įdiegtas „Docker Engine“. Galite peržiūrėti mūsų vadovus, kaip įdiegti „Docker“ tikslinėje sistemoje.
- Pagrindinės žinios apie PostgreSQL ir erdvinius duomenis
Įvykdę nurodytus reikalavimus, galime tęsti mokymo programą.
Paleiskite PostGIS programoje Docker
Tęskime ir nustatykime PostGIS konteinerį. Pradedame ištraukdami „PostGIS“ konteinerį iš „Docker Hub“ naudodami šią komandą:
$ docker pull postgis/postgis
Atsisiuntę vaizdą, galime paleisti konteinerį naudodami vaizdą, kaip parodyta šioje komandoje:
$ docker paleisti --name postgis-server -e POSTGRES_PASSWORD =password -d -p 5432:5432 postgis/postgis
Pateiktoje komandoje nurodome šiuos parametrus:
- –pavadinimas – leidžia mums nurodyti konteinerio pavadinimą.
- -e – Tai leidžia mums nustatyti PostgreSQL slaptažodį kaip aplinkos kintamąjį. Tai slaptažodis, naudojamas postgres vartotojui.
- -d – tai nurodo „Docker“ paleisti konteinerį fone arba atskirtu režimu.
- -p 5432:5432 – tai leidžia susieti konteinerio viduje esantį 5432 prievadą su 5432 prievado pagrindiniu kompiuteriu.
Norėdami patikrinti, ar konteineris veikia, naudokite šią komandą:
$ docker psTurėtumėte matyti „PostGIS“ konteinerį.
Įkelkite erdvinius duomenis į PostGIS
Dabar, kai veikia PostGIS konteineris, galime įkelti erdvinius duomenis naudodami įvairius įrankius ir formatus, tokius kaip GeoJSON, CSV ir kt.
Šiuo atveju naudojame Shapefile, kaip parodyta šiose komandose:
$ mkdir -p ~/duomenys$ cd ~/duomenys
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ išpakuokite ne_110m_admin_0_countries.zip
Pateiktose komandose pradedame sukurti katalogą, kuriame saugomi duomenys, kuriuos norime įkelti. Tada atsisiunčiame geografinius duomenis iš nurodytos nuorodos ir ištraukiame juos į katalogą.
Kitas žingsnis yra įkelti duomenis į duomenų bazę. Pradedame prisijungdami prie PostgreSQL duomenų bazės naudodami šią komandą:
$ docker exec -it postgis-server psql -U postgres -d postgresJei būsite paraginti įvesti slaptažodį, pateikite slaptažodį, kurį sukonfigūravote paleisdami sudėtinį rodinį. Tai turėtų jus autentifikuoti ir perkelti į PostgreSQL apvalkalą.
Prisijungę prie duomenų bazės, galime naudoti „shp2pgsql“ įrankį, norėdami importuoti duomenis iš „Shapefiles“, kuriuos ištraukėme atlikdami ankstesnius veiksmus.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresAnkstesnėje komandoje mes naudojame parinktį -I, kad sukurtume erdvinį indeksą, kad būtų galima greičiau pateikti erdvinių duomenų užklausas. Taip pat nurodome koordinačių sistemą kaip 4326, naudodami parametrą -s. EPSG:4326 yra standartinė WGS 84 koordinačių būsenos sistema.
PostGIS užklausos duomenys
Įkėlę duomenis galime išeiti iš PSQL programos paleisdami komandą „\q“ arba išeidami.
Tada norėdami patikrinti, ar įkelti duomenys, galime iš naujo prisijungti prie duomenų bazės vykdydami šią komandą:
$ docker exec -it postgis-container psql -U postgres -d postgresTada galite paleisti pagrindines erdvines užklausas, kad patikrintumėte, ar saugomi duomenys.
Išvada
Šioje pamokoje sužinojote, kaip paleisti PostGIS serverį kaip Docker konteinerį ir įkelti duomenis į duomenų bazę.