Observatório Pantanal

Instalação do PostgreSQL e PGAdmin 4.

Primeiramente, baixe o PostgreSQL e mantenha a instalação default do programa. Segue o link para o Download PostgreSQL.

Seguindo com o processo, inicie a instalação do Stack Builder. No momento do menu de extensões, selecione a opção "PostGIS 3.3 Bundle for PostgreSQL 15 (64 bit)".

Para saber mais sobre o manual aprofundado do PostGis acesse PostGis WorkShop.

Configuração o PGAdmin 4 e definindo o ambiente

Criação e configuração do Servidor

Entre no aplicativo do PGAdmin 4, utilizando a senha definida pelo usuário. Inicialmente, cria-se um server ao qual irá conter o banco de dados.

Insira o nome do host que irá hospedar o servidor (no caso utilizaremos localhost). Além da senha estabelecidade e a porta, no nosso caso:

5432

Criação e configuração de um banco de dados

Na página do PGAdmin 4, cria-se um ambiente para importar o banco de dados. Inseri-se um nome para o dataset.

Após gerar o ambiente, roda-se o SQL Querry, para isso utiliza-se a ferramenta: Querry Tool. Segue os comandos para inserir e executar no terminal Querry:

CREATE EXTENSION postgis;
SELECT postgis_full_version();

OBS: Caso o programa aponte um problema como Utility file not found. Please correct the Binary Path in the Preferences dialog postgres. Sugere-se encontrar o caminho da bin do PostgreSQL e copie-o.

Arquivos de Programa >> PostgreSQL >> 15 >> bin

No aplicativo do pgAdmin 4, selecione na aba superior Files e clique em Preferences. Encontre a área Path e selecione Binay paths. Baseado na versão do seu PostgreSQL, altere o caminho da Database Server.

Importando Spatial Data (Dados Geográficos) para o PostGis

Configurando o terminal do OSGeo4W

Ao utilizar o QGIS e OSGeo4W como uma ferramenta de visualição e manipulação de formatos. Temos o comando ogr2ogr capaz de converter os arquivos shapefile (disponibilizados pelo professor Hudson) para conseguir manipula-los dentro do Banco de Dados.

Inicia-se o OSGeo4W Shell, conectamos OSGeo4W Shell com o PostGIS e suas tabelas. Através do seguinte comando no terminal:

ogrinfo PG:"host=localhost port=5432 user='postgres' password='PASSWORD' dbname='geoia-db'"

INFO: Open of PG:host=localhost port=5432 user='postgres' password='PASSWORD' dbname='geoia-db'' using driver PostgreSQL' successful.

Inserindo o dataset no banco de dados

Assim, para inserir as informações do dataset para as tabelas do PostGIS, deve-se acessar o diretório que os arquivos estão armazenados. Como, por exemplo, no nosso caso:

cd C:\Users\...\database_observatorio 

Em seguida, aplica-se o seguinte código no terminal:

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=geoia-db password=PASSWORD" -nlt POLYGON inferencia_out_2021.shp       

OBS: Encontrou-se uma ferramenta disponível no ogr2ogr, chamada de simplify. Essa função reduz o número de polígonos por meio de uma simplificação por uma tolerância de distância:

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=geoia-db password=PASSWORD" -nlt POLYGON -simplify 10 inferencia_out_2021.shp

Mais informações sobre o comando, segue a Documentação do OGR2OGR.

Visualização dos polígonos no mapa

Desse modo, ao abrir o pgAdmin 4, observa-se que na aba do ícone Tables encontra-se as tabelas referentes aos valores disponibilizados pelo shapefile.

Possibilitando assim, uma visualização bruta do dataset. Clique em View Data e depois, ao lado de wkb geometry, selecione a figura: View all geometries in the column. Dessa maneira, possibilita verificar os polígonos.

Funções do PostGres e manipulação do dataset

ST_Transform - Pontos em um sistema de referência.

Função responsável por gerar novos pontos/polígonos com suas coordenadas em outros sistemas de referência espacial. Basicamente, as geometrias em um mapa (sistema de referência).

SELECT ST_Transform(wkb_geometry, 4326) FROM inferencia_out_2021

Por convenção dos alunos, utilizou-se o seguinte valor de sistema de referência:

4326

OBS: Caso deseje utilizar outro valor de referência, utilize o seguinte comando:

SELECT * FROM spatial_ref_sys

ST_AsGeoJSON - Conversão em GeoJSON.

Função responsável por retornar os pontos/polígonos como uma "geometria" GeoJSON.

SELECT ST_AsGeoJSON(ST_Transform(wkb_geometry, 4326), 6) FROM inferencia_out_2021

O parâmetro "6" é associado como maneira de reduzir o número máximo de casas decimais. Recomenda-se para o sistema de referência 4326, o valor 6.

ST_Contains e ST_MakeEnvelop - Seleção de pontos em área específica.

Na realização das atividades do Observatório Pantanal, como forma de selecionar polígonos em uma determinada precisão espacial, nossa solução são as funções ST_Contais e ST_MakeEnvelope.

A função ST_Contais retorna um booleano verdadeiro se e somente se nenhum ponto/polígono de B estiver no exterior de A, e pelo menos um ponto/polígonos do interior de B estiver no interior de A.

Enquanto a função ST_MakeEnvelope gera um polígono retangular a partir dos valores mínimo e máximo para X e Y. Os valores de entrada devem estar no sistema de referência espacial especificado pelo SRID. Se nenhum SRID for especificado, o sistema de referência espacial desconhecido (SRID 0) será usado.

Seguindo a área da aplicação, utiliza-se da função ST_MakeEnvelope para especificar a área desejada. Desse modo, a função ST_Contais, verifica os polígonos que estão totalmente contidos na área determinada, sempre mantendo o mesmo sistema de referência.

SELECT ST_AsGeoJSON(ST_Transform(wkb_geometry, 4326), 6) FROM inferencia_out_2021 
WHERE ST_Contains(ST_MakeEnvelope(-58,-22,-57,-21, 4326), ST_Transform(wkb_geometry, 4326))

Visualização do ST_Contains e ST_MakeEnvelop

Para visualizar os pontos/polígonos da área desejada, utilza-se o programa QGIS. Primeiramente, necessita-se criar um arquivo do tipo Views. Para isso, execute o próximo comando na Querry Tool do pgAdmin 4:

CREATE OR REPLACE VIEW view_inferencia_out_2021 AS (SELECT * FROM inferencia_out_2021 
WHERE ST_Contains(ST_MakeEnvelope(-58,-22,-57,-21, 4326), ST_Transform(wkb_geometry, 4326)))
SELECT * from view_inferencia_out_2021 

Posteriormente estabele-se um conexão entre o QGIS e o banco de dados. Observe a image abaixo:

Funções do PostGIS e manipulação do shapefile

Para manipulação dos shapefiles utilza-se a ferramenta OSGeo4W Shell , conectamos OSGeo4W Shell com o PostGIS e suas tabelas. Através do seguinte comando no terminal:

ogrinfo PG:"host=localhost port=5432 user='postgres' password='PASSWORD' dbname='geoia-db'"

INFO: Open of PG:host=localhost port=5432 user='postgres' password='PASSWORD' dbname='geoia-db'' using driver PostgreSQL' successful.

-nln - Atribuir nomes para as Tables

Para exemplificar os próximos passos e ajudar na visualização, utiza-se a função -nln para inserir as informações no banco de dados.

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=geoia-db password=PASSWORD" -nln "OUTPUT_NAME" -nlt POLYGON inferencia_out_2021.shp 

-simplify - Reduzir o tamanho do arquivo shapefile

A função -simplify gera um arquivo shapefile capaz de reduzir o tamanho do shapefile, por meio de um algoritmo de simplificação de polígonos.

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=geoia-db password=PASSWORD" -simplify 100 -nln "output_simplify100" -nlt POLYGON inferencia_out_2021.shp
Tolerance Polígonos Tamanho do Arquivo
Nenhuma 109273 45.38 MB
10 30878 17.39 MB
50 14672 11.43 MB
100 21695 10.51 MB
1000 21695 9.82 MB
5000 2091 9.77 MB

-skipfailures - Ignora erros na tabela e reduzir o tamanho do arquivo shapefile

A função -skipfailures optimiza a performance da tabela, ignorando erros.

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=geoia-db password=PASSWORD" -skipfailures -nln "OUTPUT_NAME" -nlt POLYGON inferencia_out_2021.shp

Acesso de regiões no PostGIS

Por meio do Site do IBGE, instala-se os shapefiles das regiões do Brasil.

Ao instalar o arquivo ZIP, descompacte-o na workspace. Abra o OSGeo4W Shell, acesse o diretório do arquivo das regiões e insira o comando para registrar o shapefile no banco de dados:

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=geoia-db password=PASSWORD" -nln "regioes_brasil" -nlt POLYGON RG2017_regioesgeograficas2017.shp

Desse modo, os arquivos do IBGE estão cadastrados no dataset. Para visualiza-los, acesse o pgAdmin 4 e no QuerryTool, utilize o comando:

SELECT inferencia_out_2021.ogc_fid,
     inferencia_out_2021.fid,
     inferencia_out_2021.wkb_geometry
FROM inferencia_out_2021
WHERE st_contains(( 
SELECT st_transform(regioes_brasil.wkb_geometry, 4326) AS st_transform
FROM regioes_brasil
WHERE regioes_brasil.nome::text = 'Corumbá'::text), st_transform(inferencia_out_2021.wkb_geometry, 4326));

Monitoramento dos Dados da Geomática

Criou-se uma planilha para monitorar os dados recebidos pelo laboratório da Geomática. As informações são separadas baseado no mês e a região referente ao shapefile (região da Amazônia e região do Pantanal). Segue o link para a planilha de controle.

União dos Arquivos Shapefiles

Em razão de como são oferecidos os dados pela Equipe da Geomática, monitorados pelo professor Marcato, torna-se necessário unir os dataset disposto em, normalmente, 4 shapefiles. Para isso, utiliza-se dos seguintes comandos:

ogr2ogr -f "ESRI SHAPEFILE" -update -append MERGE_SHAPEFILE.shp SOURCE_X.shp

OBS: Existe a necessidade de rodar o código anterior para cada shapefile, nesse caso altere o nome dos arquivos na posição do: SOURCE_X.shp.

Solucionando a ausência do Arquivo de Referência (PRJ)

Em razão de como são oferecidos os dados pela Equipe da Geomática, monitorados pelo professor Marcato, torna-se necessário adicionar um ponto referencial no dataset. Para resolver esse problema no momento, utiliza-se do Software QGIS para fazer as alterações necessárias. Para isso, deve-se abrir o arquivo shapefile no QGIS:

Encontra-se o diretório em que o arquivo está salvo, e clique no arquivo MERGE_SHAPEFILE.shp. Ao cliclar no botão Adicionar, aparecerá uma interface. Insira na aba de pesquisa do Filtro o código de referência do Pseudo-Mercator, no caso: 3857.

OBS: Caso não apareça a interface, clique no canto inferior direito do QGIS, em que estará escrito algo similar: EPSG:4326.

Por fim, exporte o arquivo shapefile para o sistema de referência que o usuário desejar.