PostGIS adalah perpanjangan dari database PostgreSQL yang menambahkan dukungan untuk objek data geografis. Hal ini memungkinkan kita menggunakan database PostgreSQL untuk menyimpan dan menanyakan data spasial. Seperti yang bisa Anda tebak, menggabungkan PostGIS dan Docker menyediakan metode yang efisien dan ekstensif dalam mengelola data spasial.
Dalam tutorial ini, kita akan mempelajari bagaimana kita dapat dengan cepat menyiapkan instance PostGIS di dalam container Docker. Kami juga akan membahas beberapa dasar PostGIS dan mempelajari cara memuat data spasial dan melakukan beberapa kueri dasar menggunakan container.
Persyaratan:
Untuk mengikuti tutorial ini, pastikan Anda memiliki yang berikut:
- Menginstal Docker Engine di sistem Anda. Anda dapat melihat tutorial kami tentang cara menginstal Docker di sistem target Anda.
- Pengetahuan dasar tentang PostgreSQL dan data spasial
Jika persyaratan yang diberikan terpenuhi, kita dapat melanjutkan ke tutorial.
Jalankan PostGIS di Docker
Mari kita lanjutkan dan siapkan container PostGIS. Kita mulai dengan menarik container PostGIS dari Docker Hub dengan perintah berikut:
$ buruh pelabuhan menarik postgis/postgis
Setelah gambar diunduh, kita dapat menjalankan container menggunakan gambar seperti yang ditunjukkan pada perintah berikut:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =kata sandi -d -p 5432:5432 postgis/postgis
Dalam perintah yang diberikan, kami menentukan parameter berikut:
- –name – Ini memungkinkan kita menentukan nama container.
- -e – Ini memungkinkan kita untuk mengatur kata sandi PostgreSQL sebagai variabel lingkungan. Ini adalah kata sandi yang digunakan untuk pengguna postgres.
- -d – Ini memberitahu Docker untuk menjalankan container di latar belakang atau mode terpisah.
- -p 5432:5432 – Ini memungkinkan kita memetakan port 5432 di dalam container ke host di port 5432.
Untuk memverifikasi bahwa kontainer sedang berjalan, gunakan perintah berikut:
$ buruh pelabuhan psAnda akan melihat container PostGIS terdaftar.
Muat Data Spasial di PostGIS
Sekarang setelah container PostGIS berjalan, kita dapat memuat data spasial menggunakan berbagai alat dan format seperti GeoJSON, CSV, dll.
Untuk kasus ini, kami menggunakan Shapefile seperti yang ditunjukkan pada perintah berikut:
$ mkdir -p ~/data$cd~/data
dapatkan https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ buka zip ne_110m_admin_0_countries.zip
Pada perintah yang diberikan, kita mulai dengan membuat direktori untuk menyimpan data yang ingin kita muat. Kami kemudian mengunduh data geografis dari tautan yang ditentukan dan mengekstraknya ke dalam direktori.
Langkah selanjutnya adalah memuat data ke dalam database. Kita mulai dengan menghubungkan ke database PostgreSQL menggunakan perintah berikut:
$ docker exec -itu server postgis psql -U postgres -d postgresJika diminta kata sandi, berikan kata sandi yang Anda konfigurasikan saat menjalankan kontainer. Ini akan mengautentikasi Anda dan memasukkan Anda ke shell PostgreSQL.
Setelah terhubung ke database, kita dapat menggunakan utilitas “shp2pgsql” untuk mengimpor data dari Shapefile yang kita ekstrak pada langkah sebelumnya.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresPada perintah sebelumnya, kita menggunakan opsi -I untuk membuat indeks spasial agar kueri data spasial lebih cepat. Kami juga menentukan sistem koordinat sebagai 4326 menggunakan parameter -s. EPSG:4326 adalah sistem keadaan koordinat standar untuk WGS 84.
Data Kueri PostGIS
Setelah kita memuat data, kita dapat keluar dari utilitas PSQL dengan menjalankan perintah “\q” atau keluar.
Selanjutnya, untuk memverifikasi bahwa data kita telah dimuat, kita dapat menyambung kembali ke database dengan menjalankan perintah berikut:
$ docker exec -itu postgis-container psql -U postgres -d postgresSelanjutnya, Anda dapat menjalankan kueri spasial dasar untuk memverifikasi bahwa Anda telah menyimpan data.
Kesimpulan
Dalam tutorial ini, Anda mempelajari cara menjalankan server PostGIS sebagai container Docker dan memuat data ke dalam database.