PostGIS é uma extensão do banco de dados PostgreSQL que adiciona suporte para objetos de dados geográficos. Isso nos permite usar o banco de dados PostgreSQL para armazenar e consultar dados espaciais. Como você pode imaginar, combinar PostGIS e Docker fornece um método eficiente e extenso de gerenciamento de dados espaciais.
Neste tutorial, aprenderemos como podemos configurar rapidamente uma instância PostGIS dentro de um contêiner Docker. Também abordaremos alguns fundamentos do PostGIS e aprenderemos como carregar dados espaciais e realizar algumas consultas básicas usando o contêiner.
Requisitos:
Para acompanhar este tutorial, certifique-se de ter o seguinte:
- Docker Engine instalado em seu sistema. Você pode verificar nossos tutoriais sobre como instalar o Docker em seu sistema de destino.
- Conhecimento básico de PostgreSQL e dados espaciais
Com os requisitos fornecidos atendidos, podemos prosseguir com o tutorial.
Execute PostGIS no Docker
Vamos prosseguir e configurar o contêiner PostGIS. Começamos extraindo o contêiner PostGIS do Docker Hub com o seguinte comando:
$ docker pull postgis/postgis
Depois de fazer o download da imagem, podemos executar o contêiner usando a imagem conforme mostrado no seguinte comando:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =senha -d -p 5432:5432 postgis/postgis
No comando fornecido, especificamos os seguintes parâmetros:
- –name – Isso nos permite especificar o nome do contêiner.
- -e – Isso nos permite definir a senha do PostgreSQL como uma variável de ambiente. Esta é a senha usada para o usuário postgres.
- -d – Isso diz ao Docker para executar o contêiner em segundo plano ou no modo desanexado.
- -p 5432:5432 – Isso nos permite mapear a porta 5432 dentro do contêiner para o host na porta 5432.
Para verificar se o contêiner está em execução, use o seguinte comando:
$ docker psVocê deverá ver o contêiner PostGIS listado.
Carregue os dados espaciais no PostGIS
Agora que temos o contêiner PostGIS em execução, podemos carregar os dados espaciais usando várias ferramentas e formatos como GeoJSON, CSV, etc.
Para este caso, utilizamos um Shapefile conforme mostrado nos comandos a seguir:
$ mkdir -p ~/dados$ cd ~/dados
wgethttps://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ descompacte ne_110m_admin_0_countries.zip
Nos comandos fornecidos, começamos criando um diretório para armazenar os dados que desejamos carregar. Em seguida, baixamos dados geográficos do link especificado e os extraímos para o diretório.
A próxima etapa é carregar os dados no banco de dados. Começamos conectando-nos ao banco de dados PostgreSQL usando o seguinte comando:
$ docker exec -it postgis-server psql -U postgres -d postgresSe for solicitada uma senha, forneça a senha que você configurou ao executar o contêiner. Isso deve autenticá-lo e colocá-lo no shell do PostgreSQL.
Uma vez conectados ao banco de dados, podemos usar o utilitário “shp2pgsql” para importar os dados dos Shapefiles que extraímos nas etapas anteriores.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresNo comando anterior, usamos a opção -I para criar um índice espacial para uma consulta mais rápida dos dados espaciais. Também especificamos o sistema de coordenadas como 4326 usando o parâmetro -s. O EPSG:4326 é o sistema de estado de coordenadas padrão para WGS 84.
Dados de consulta PostGIS
Depois de carregar os dados, podemos sair do utilitário PSQL executando o comando “\q” ou sair.
A seguir, para verificar se os dados estão carregados, podemos reconectar-nos ao banco de dados executando o seguinte comando:
$ docker exec -it postgis-container psql -U postgres -d postgresEm seguida, você pode executar as consultas espaciais básicas para verificar se os dados estão armazenados.
Conclusão
Neste tutorial, você aprendeu como executar o servidor PostGIS como um contêiner Docker e carregar os dados no banco de dados.