sexta-feira, 17 de abril de 2020

CONSULTANDO DADOS DE OUTRO BANCO DE DADOS NO POSTGRESQL (DBLINK)

Utilizar dados de outro banco de dados pode, muitas vezes, parecer uma trabalhosa (e até mesmo arriscada) tarefa de exportação e importação. No entanto, com o uso do dblink, esses dados podem ser acessados diretamente.

Para habilitar o dblink utilize:

CREATE EXTENSION dblink;

Com a extensão habilitada, você pode buscar a informação que quiser em outro banco de dados passando os parâmetros de conexão, como no exemplo abaixo (inserir dados em uma tabela de clientes idosos buscando e filtrando clientes existentes em outro banco de dados, ambos no meu servidor local):

INSERT INTO cliente_idoso(codigo, nome)
SELECT d.codigo, d.nome FROM
  dblink('dbname=dados_clientes port=5432 user=postgres password=senha',
  'SELECT codigo, nome FROM cliente WHERE idade >= 60')
    AS d(codigo INT, nome VARCHAR(100));

segunda-feira, 3 de fevereiro de 2020

MODO ESCURO DO QGIS

Desde as últimas versões o QGIS possui um modo escuro, especialmente interessante para quem utiliza o software por longos períodos. Para ativar o modo escuro vá em "Configurações" > "Opções" e, na aba "Geral" > "Tema UI" escolha "Night Mapping". Dê OK, feche o QGIS e o abra novamente para que a alteração tenha efeito.


Na mesma tela de seleção do modo escuro também há algumas opções visuais interessantes que podem ser alteradas como o estilo do QGIS e o tamanho dos ícones no software.

terça-feira, 7 de janeiro de 2020

DESCOBRIR QUAL VERSÃO DO POSTGRESQL E DO POSTGIS ESTOU USANDO

Para saber qual é a versão do PostgreSQL e do PostGIS que você está usando, execute os comandos abaixo em uma ferramenta SQL conectada à base desejada (as imagens são do PgAdmin 4):

  • PostgreSQL: SELECT version(); ou SHOW server_version;
 


  • PostGIS: SELECT * FROM PostGis_Full_Version();


quarta-feira, 2 de outubro de 2019

VISUALIZANDO MAPAS DO POSTGIS NO PGADMIN 4

Nas últimas versões do PgAdmin 4 é possível visualizar os dados de uma consulta que tenha objetos espaciais no mapa. Observe a consulta abaixo, dos municípios com mais de 200.000 habitantes no estado de São Paulo:


No título da coluna com o dado espacial aparece um ícone com formato de "olho" (View all geometries in this column). Clicando nele (ou na aba "Geometry Viewer") é possível visualizar os dados em um mapa (onde é possível, inclusive, escolher o mapa base que fica sob as geometrias).


quarta-feira, 11 de setembro de 2019

CRIANDO MAPAS NO EXCEL

Você sabia que é possível criar mapas simples diretamente no Microsoft Excel? A partir de um conjunto de dados (tanto em formato de classificação - como o nome de uma região - quanto graduação - como a população de um local) que possam ser interpretados pelo Bing, basta selecionar os dados, ir na aba "Inserir" e escolher a opção "Mapas". As imagens abaixo foram criadas com dados de regiões por estados brasileiros e população por territórios australianos, dados facilmente encontrados na internet.




Para editar, por exemplo, as cores da série, basta clicar sobre o mapa que as opções aparecerão do lado direito.

domingo, 6 de maio de 2018

ATUALIZAÇÃO COM RELAÇÃO ESPACIAL NO QGIS

Quando for necessário atualizar um dado baseado em uma relação espacial no QGIS (por exemplo, os trechos de uma rodovia que interceptam Áreas de Proteção Ambiental), podemos utilizar o Editor de Funções do mesmo. Para isso:
1) Selecione a camada (com um clique do botão esquerdo sobre seu nome) a partir da qual se quer selecionar os dados (de acordo com o exemplo, os trechos de uma rodovia);
2) Abra a "Calculadora de campos" e clique na aba "Editor de funções";
3) Clique em "Novo arquivo", dê um nome (por exemplo, "consulta_espacial") e clique em "OK";
4) Substitua o texto que aparece na parte do editor de funções (ao lado direito) por:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Personalizado')
def intersection_field_update(layername, column, feature, parent):
    layer = QgsMapLayerRegistry.instance().mapLayersByName(layername)[0]
    for feat in layer.getFeatures():
        if feature.geometry().intersects(feat.geometry()):
            return feat[column]

5) Clique em "Carregar";
Nesse momento, você criou uma função chamada intersection_field_update no grupo "Personalizado";
6) Volte para a aba "Expressão" e perceba que agora no conjunto de funções existe um grupo "Personalizado" com a função intersection_field_update. Use ela para atualizar ou criar um campo com dados de outra camada que possua relação de interceptar com a camada em uso - Será necessário passar dois parâmetros: a tabela e o campo (nessa ordem).

Considerando o exemplo, imaginemos um projeto com duas tabelas: trecho_rodovia e apa, e que na tabela apa exista um campo nome (com o nome da APA). Se utilizarmos a função para criar um campo virtual chamado apa na tabela trecho_rodovia, com o nome da APA que o trecho intercepta, teríamos o seguinte:


Obs.: O texto da expressão nesse caso é intersection_field_update('apa','nome') 

Ao clicar em OK será criado um campo virtual com o nome apa na tabela trecho_rodovia, onde estará o nome da APA que o trecho intercepta (ou nulo, se ele não intercepta nenhuma APA).

Após criar a função não é mais necessário fazer as etapas 3 a 5 para utilizá-la novamente, pois ela já estará criada. Essa função inclusive pode ser alterada para atingir outros objetivos (por exemplo, substituindo  o "intersects" por "within" é possível estabelecer uma relação de um elemento "estar contido" em outro - Como consta na postagem cujo link está nos agradecimentos).

Agradecimentos a Alexandre Miguel Freitas da Silva e Ciro Borges de Oliveira, que incentivaram essa pesquisa, e a Detlev (https://gis.stackexchange.com/users/45346/detlev), cuja resposta em (https://gis.stackexchange.com/questions/178522/update-field-based-on-spatial-query-qgis?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa) possibilitou o embasamento para essa postagem.

terça-feira, 27 de março de 2018

ADICIONANDO TILES NO QGIS

A partir da versão 2.18, o QGIS ganhou a funcionalidade de adicionar camadas de tiles que, superficialmente falando, são imagens divididas em diversas partes e níveis de zoom e, portanto, carregam apenas a parte que o usuário está visualizando e com resolução de acordo com seu nível de zoom, o que as torna muito mais rápidas do que adicionar a imagem como um todo (ou um arquivo raster).

Para adicionar imagens de um servidor de tiles ao seu projeto QGIS, vá ao Navegador (se ele não estiver aberto, basta ir em Exibir - Painéis - Navegador) e encontre a opção Tile Server (XYZ). Clique com o botão direito do mouse sobre ela e selecione New Connection...

Digite ou cole a URL dos tiles e dê OK. Exemplos:

Bing Aerial:
http://ecn.t3.tiles.virtualearth.net/tiles/a{q}.jpeg?g=1
Google Hybrid:
https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}
Google Satellite:
https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}
OpenStreetMap:
http://tile.openstreetmap.org/{z}/{x}/{y}.png

Dê um nome a esse Tile Server e clique em OK.

Pronto, o Tile Server já está configurado e disponível (se não estiver visualizando ele, basta clicar na seta para baixo ao lado de Tile Server (XYZ)). Para adicioná-lo ao seu projeto clique sobre o nome do Tile Server desejado, segure e arraste ele para as camadas na posição desejada.