Ang PostGIS ay isang extension ng database ng PostgreSQL na nagdaragdag ng suporta para sa mga geographic na data object. Nagbibigay-daan ito sa amin na gamitin ang database ng PostgreSQL upang mag-imbak at mag-query ng spatial na data. Tulad ng maaari mong hulaan, ang pagsasama-sama ng PostGIS at Docker ay nagbibigay ng isang mahusay at malawak na paraan ng pamamahala ng isang spatial na data.
Sa tutorial na ito, malalaman natin kung paano tayo makakapag-set up ng isang PostGIS instance sa loob ng isang Docker container. Sasaklawin din namin ang ilang pangunahing kaalaman sa PostGIS at matutunan kung paano mag-load ng spatial na data at magsagawa ng ilang pangunahing query gamit ang container.
Mga kinakailangan:
Upang masundan ang tutorial na ito, tiyaking mayroon kang sumusunod:
- Naka-install na Docker Engine sa iyong system. Maaari mong suriin ang aming mga tutorial kung paano i-install ang Docker sa iyong target na system.
- Pangunahing kaalaman sa PostgreSQL at spatial na data
Sa ibinigay na mga kinakailangan, maaari tayong magpatuloy sa tutorial.
Patakbuhin ang PostGIS sa Docker
Ipagpatuloy natin at i-setup ang PostGIS container. Nagsisimula kami sa pamamagitan ng paghila sa lalagyan ng PostGIS mula sa Docker Hub gamit ang sumusunod na utos:
$ docker pull postgis/postgis
Kapag na-download na namin ang imahe, maaari naming patakbuhin ang lalagyan gamit ang imahe tulad ng ipinapakita sa sumusunod na command:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =password -d -p 5432:5432 postgis/postgis
Sa ibinigay na utos, tinukoy namin ang mga sumusunod na parameter:
- –pangalan – Nagbibigay-daan ito sa amin na tukuyin ang pangalan ng lalagyan.
- -e – Ito ay nagpapahintulot sa amin na itakda ang PostgreSQL password bilang isang variable ng kapaligiran. Ito ang password na ginagamit para sa postgres user.
- -d - Sinasabi nito sa Docker na patakbuhin ang lalagyan sa background o detached mode.
- -p 5432:5432 – Nagbibigay-daan ito sa amin na imapa ang port 5432 sa loob ng container patungo sa host sa port 5432.
Upang i-verify na tumatakbo ang container, gamitin ang sumusunod na command:
$ docker psDapat mong makita ang PostGIS container na nakalista.
I-load ang Spatial Data sa PostGIS
Ngayon na mayroon na kaming PostGIS container na tumatakbo, maaari naming i-load ang spatial na data gamit ang iba't ibang mga tool at format tulad ng GeoJSON, CSV, atbp.
Para sa kasong ito, gumagamit kami ng Shapefile tulad ng ipinapakita sa mga sumusunod na command:
$ 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
Sa ibinigay na mga utos, nagsisimula kami sa pamamagitan ng paglikha ng isang direktoryo upang mag-imbak ng data na nais naming i-load. Pagkatapos ay nag-download kami ng geo data mula sa tinukoy na link at i-extract ito sa direktoryo.
Ang susunod na hakbang ay i-load ang data sa database. Magsisimula kami sa pamamagitan ng pagkonekta sa database ng PostgreSQL gamit ang sumusunod na command:
$ docker exec -it postgis-server psql -U postgres -d postgresKung sinenyasan para sa isang password, ibigay ang password na iyong na-configure noong pinapatakbo ang container. Ito ay dapat magpatotoo sa iyo at ihulog ka sa PostgreSQL shell.
Kapag nakakonekta na sa database, maaari naming gamitin ang 'shp2pgsql' na utility para i-import ang data mula sa Shapefiles na kinuha namin sa mga nakaraang hakbang.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresSa nakaraang command, ginagamit namin ang -I na opsyon upang lumikha ng spatial index para sa mas mabilis na pag-query ng spatial data. Tinukoy din namin ang coordinate system bilang 4326 gamit ang -s parameter. Ang EPSG:4326 ay ang karaniwang coordinate state system para sa WGS 84.
Data ng Query sa PostGIS
Kapag na-load na namin ang data, maaari kaming lumabas sa PSQL utility sa pamamagitan ng pagpapatakbo ng “\q” command o exit.
Susunod, upang i-verify na na-load na namin ang data, maaari kaming muling kumonekta sa database sa pamamagitan ng pagpapatakbo ng sumusunod na command:
$ docker exec -it postgis-container psql -U postgres -d postgresSusunod, maaari mong patakbuhin ang mga pangunahing spatial na query upang i-verify na mayroon kang data na nakaimbak.
Konklusyon
Sa tutorial na ito, natutunan mo kung paano patakbuhin ang PostGIS server bilang isang lalagyan ng Docker at i-load ang data sa database.