PostGIS jest rozszerzeniem bazy danych PostgreSQL, które dodaje obsługę obiektów danych geograficznych. Dzięki temu możemy używać bazy danych PostgreSQL do przechowywania i wysyłania zapytań o dane przestrzenne. Jak można się domyślić, połączenie PostGIS i Dockera zapewnia wydajną i rozbudowaną metodę zarządzania danymi przestrzennymi.
W tym samouczku dowiemy się, jak szybko skonfigurować instancję PostGIS w kontenerze Docker. Omówimy także podstawy PostGIS i dowiemy się, jak załadować dane przestrzenne i wykonać kilka podstawowych zapytań przy użyciu kontenera.
Wymagania:
Aby skorzystać z tego samouczka, upewnij się, że posiadasz następujące elementy:
- Zainstalowano Docker Engine w Twoim systemie. Możesz zapoznać się z naszymi tutorialami dotyczącymi instalacji Dockera w systemie docelowym.
- Podstawowa znajomość PostgreSQL i danych przestrzennych
Po spełnieniu podanych wymagań możemy kontynuować tutorial.
Uruchom PostGIS w Dockerze
Przejdźmy dalej i skonfigurujmy kontener PostGIS. Zaczynamy od pobrania kontenera PostGIS z Docker Hub za pomocą następującego polecenia:
$ docker pull postgis/postgis
Po pobraniu obrazu możemy uruchomić kontener przy użyciu obrazu, jak pokazano w następującym poleceniu:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =hasło -d -p 5432:5432 postgis/postgis
W podanym poleceniu podajemy następujące parametry:
- –name – Pozwala nam określić nazwę kontenera.
- -e – Pozwala nam ustawić hasło PostgreSQL jako zmienną środowiskową. To jest hasło używane przez użytkownika Postgres.
- -d – To mówi Dockerowi, aby uruchomił kontener w tle lub w trybie odłączonym.
- -p 5432:5432 – pozwala nam zmapować port 5432 wewnątrz kontenera na hosta na porcie 5432.
Aby sprawdzić, czy kontener działa, użyj następującego polecenia:
$ okno dokowane psPowinieneś zobaczyć kontener PostGIS na liście.
Załaduj dane przestrzenne do PostGIS
Teraz, gdy mamy uruchomiony kontener PostGIS, możemy załadować dane przestrzenne przy użyciu różnych narzędzi i formatów, takich jak GeoJSON, CSV itp.
W tym przypadku używamy pliku Shapefile, jak pokazano w następujących poleceniach:
$ mkdir -p ~/dane$cd ~/dane
wget https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ rozpakuj plik ne_110m_admin_0_countries.zip
W podanych poleceniach zaczynamy od utworzenia katalogu do przechowywania danych, które chcemy załadować. Następnie pobieramy dane geograficzne z określonego łącza i wyodrębniamy je do katalogu.
Kolejnym krokiem jest załadowanie danych do bazy danych. Zaczynamy od połączenia się z bazą danych PostgreSQL za pomocą następującego polecenia:
$ docker exec -it postgis-server psql -U postgres -d postgresJeśli zostanie wyświetlony monit o hasło, podaj hasło skonfigurowane podczas uruchamiania kontenera. To powinno Cię uwierzytelnić i przenieść do powłoki PostgreSQL.
Po podłączeniu do bazy danych możemy użyć narzędzia „shp2pgsql” do zaimportowania danych z plików Shapefiles, które wyodrębniliśmy w poprzednich krokach.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresW poprzednim poleceniu użyliśmy opcji -I, aby utworzyć indeks przestrzenny w celu szybszego wyszukiwania danych przestrzennych. Określamy również układ współrzędnych jako 4326 za pomocą parametru -s. EPSG:4326 to standardowy układ stanów współrzędnych dla WGS 84.
Dane zapytania PostGIS
Po załadowaniu danych możemy wyjść z narzędzia PSQL, uruchamiając polecenie „\q” lub wychodząc.
Następnie, aby sprawdzić, czy mamy załadowane dane, możemy ponownie połączyć się z bazą danych, uruchamiając następującą komendę:
$ docker exec -it postgis-container psql -U postgres -d postgresNastępnie możesz uruchomić podstawowe zapytania przestrzenne, aby sprawdzić, czy masz zapisane dane.
Wniosek
W tym samouczku nauczyłeś się, jak uruchomić serwer PostGIS jako kontener Docker i załadować dane do bazy danych.