Το PostGIS είναι μια επέκταση της βάσης δεδομένων PostgreSQL που προσθέτει υποστήριξη για αντικείμενα γεωγραφικών δεδομένων. Αυτό μας επιτρέπει να χρησιμοποιήσουμε τη βάση δεδομένων PostgreSQL για την αποθήκευση και την αναζήτηση χωρικών δεδομένων. Όπως μπορείτε να μαντέψετε, ο συνδυασμός PostGIS και Docker παρέχει μια αποτελεσματική και εκτεταμένη μέθοδο διαχείρισης χωρικών δεδομένων.
Σε αυτό το σεμινάριο, θα μάθουμε πώς μπορούμε να ρυθμίσουμε γρήγορα μια παρουσία PostGIS μέσα σε ένα κοντέινερ Docker. Θα καλύψουμε επίσης ορισμένα βασικά στοιχεία του PostGIS και θα μάθουμε πώς να φορτώνουμε χωρικά δεδομένα και να εκτελούμε ορισμένα βασικά ερωτήματα χρησιμοποιώντας το κοντέινερ.
Απαιτήσεις:
Για να ακολουθήσετε αυτό το σεμινάριο, βεβαιωθείτε ότι έχετε τα εξής:
- Εγκατεστημένο Docker Engine στο σύστημά σας. Μπορείτε να ελέγξετε τα σεμινάρια μας σχετικά με τον τρόπο εγκατάστασης του Docker στο σύστημα προορισμού σας.
- Βασικές γνώσεις PostgreSQL και χωρικών δεδομένων
Εφόσον πληρούνται οι δεδομένες απαιτήσεις, μπορούμε να προχωρήσουμε με το σεμινάριο.
Εκτελέστε το PostGIS στο Docker
Ας προχωρήσουμε και ας ρυθμίσουμε το κοντέινερ PostGIS. Ξεκινάμε τραβώντας το κοντέινερ PostGIS από το Docker Hub με την ακόλουθη εντολή:
$ docker pull postgis/postgis
Μόλις κατεβάσουμε την εικόνα, μπορούμε να εκτελέσουμε το κοντέινερ χρησιμοποιώντας την εικόνα όπως φαίνεται στην ακόλουθη εντολή:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =password -d -p 5432:5432 postgis/postgis
Στη δεδομένη εντολή, καθορίζουμε τις ακόλουθες παραμέτρους:
- –name – Αυτό μας επιτρέπει να καθορίσουμε το όνομα του κοντέινερ.
- -e – Αυτό μας επιτρέπει να ορίσουμε τον κωδικό πρόσβασης PostgreSQL ως μεταβλητή περιβάλλοντος. Αυτός είναι ο κωδικός πρόσβασης που χρησιμοποιείται για τον χρήστη postgres.
- -d – Αυτό λέει στο Docker να τρέξει το κοντέινερ σε λειτουργία παρασκηνίου ή σε λειτουργία αποσύνδεσης.
- -σελ 5432:5432 – Αυτό μας επιτρέπει να αντιστοιχίσουμε τη θύρα 5432 μέσα στο κοντέινερ στον κεντρικό υπολογιστή στη θύρα 5432.
Για να επαληθεύσετε ότι το κοντέινερ εκτελείται, χρησιμοποιήστε την ακόλουθη εντολή:
$ docker psΘα πρέπει να δείτε το κοντέινερ PostGIS στη λίστα.
Φορτώστε τα Χωρικά Δεδομένα στο PostGIS
Τώρα που έχουμε το κοντέινερ PostGIS σε λειτουργία, μπορούμε να φορτώσουμε τα χωρικά δεδομένα χρησιμοποιώντας διάφορα εργαλεία και μορφή όπως GeoJSON, CSV κ.λπ.
Για αυτήν την περίπτωση, χρησιμοποιούμε ένα Shapefile όπως φαίνεται στις ακόλουθες εντολές:
$ mkdir -p ~/data$ cd ~/δεδομένα
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ αποσυμπιέστε ne_110m_admin_0_countries.zip
Στις εντολές που δίνονται, ξεκινάμε δημιουργώντας έναν κατάλογο για να αποθηκεύσουμε τα δεδομένα που θέλουμε να φορτώσουμε. Στη συνέχεια, κατεβάζουμε ένα γεωγραφικά δεδομένα από τον καθορισμένο σύνδεσμο και τα εξάγουμε στον κατάλογο.
Το επόμενο βήμα είναι να φορτώσετε τα δεδομένα στη βάση δεδομένων. Ξεκινάμε συνδέοντας στη βάση δεδομένων PostgreSQL χρησιμοποιώντας την ακόλουθη εντολή:
$ docker exec -it postgis-server psql -U postgres -d postgresΕάν σας ζητηθεί κωδικός πρόσβασης, δώστε τον κωδικό πρόσβασης που ρυθμίσατε κατά την εκτέλεση του κοντέινερ. Αυτό θα πρέπει να σας ελέγξει την ταυτότητα και να σας ρίξει στο κέλυφος PostgreSQL.
Αφού συνδεθούμε στη βάση δεδομένων, μπορούμε να χρησιμοποιήσουμε το βοηθητικό πρόγραμμα “shp2pgsql” για να εισαγάγουμε τα δεδομένα από τα Shapefiles που εξάγαμε στα προηγούμενα βήματα.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresΣτην προηγούμενη εντολή, χρησιμοποιούμε την επιλογή -I για να δημιουργήσουμε ένα χωρικό ευρετήριο για ταχύτερη αναζήτηση των χωρικών δεδομένων. Καθορίζουμε επίσης το σύστημα συντεταγμένων ως 4326 χρησιμοποιώντας την παράμετρο -s. Το EPSG:4326 είναι το τυπικό σύστημα κατάστασης συντεταγμένων για το WGS 84.
Δεδομένα ερωτημάτων PostGIS
Μόλις φορτώσουμε τα δεδομένα, μπορούμε να βγούμε από το βοηθητικό πρόγραμμα PSQL εκτελώντας την εντολή '\q' ή έξοδο.
Στη συνέχεια, για να επαληθεύσουμε ότι έχουμε φορτώσει τα δεδομένα, μπορούμε να επανασυνδεθούμε στη βάση δεδομένων εκτελώντας την ακόλουθη εντολή:
$ docker exec -it postgis-container psql -U postgres -d postgresΣτη συνέχεια, μπορείτε να εκτελέσετε τα βασικά χωρικά ερωτήματα για να επαληθεύσετε ότι έχετε αποθηκευμένα τα δεδομένα.
συμπέρασμα
Σε αυτό το σεμινάριο, μάθατε πώς να εκτελείτε τον διακομιστή PostGIS ως κοντέινερ Docker και να φορτώνετε τα δεδομένα στη βάση δεδομένων.