Códigos de ações para qgis

Códigos de ações para qgis

Vou compartilhar dois códigos muito úteis usados em nosso projeto. Se você viu os outros posts, este é mais uma dica de como administrar pelo qgis layers com grande número de dados.

O primeiro código adiciona uma imagem raster com transparência

lyr = qgis.utils. iface.activeLayer()

rlayer = qgis.utils.iface.addRasterLayer(‘//seu endereço/[% “sua coluna” %].jpg’)

 qgis.utils.iface.activeLayer()

rlayer.renderer(). setOpacity(0.5)

qgis.utils.iface.setActiveLayer(lyr)

O segundo código faz uma seleção com a  introdução de uma variável. Tome cuidado com a identação. Código muito útil quando os layers possuem uma grande quantidade  de atributos. Não achei nada pronto, então elaborei este:

PARA O QT4 – QGIS 18

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

query = ( ” \”sua coluna\” = ‘{}’ “.format(texto))
layer =qgis.utils.iface.activeLayer()
selection = layer.getFeatures(QgsFeatureRequest().setFilterExpression(query))
layer.setSelectedFeatures([k.id() for k in selection])
qgis.utils.iface.actionZoomToSelected().trigger()

E O MESMO CÓDIGO PARA O QT5 – QGIS 3

from PyQt5.QtCore import *

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *

texto, ok = QInputDialog.getText(None, “Pesquisa”, “Introduza seu SQL: “)

if ok:

query = ( ” \”sua coluna\” = ‘{}’ “.format(texto) )

layer =qgis.utils.iface.activeLayer()

request = QgsFeatureRequest(QgsExpression(query)).setFlags(QgsFeatureRequest.NoGeometry).setSubsetOfAttributes([])

selection = layer.getFeatures(request)

layer.selectByIds([s.id() for s in selection])

qgis.utils.iface.actionZoomToSelected().trigger()

Código inserido na ação
Para chamar a ação clique em ações e depois dentro de qualquer poligono pertecente ao layer o qual você adicionou a ação.
A ação chama o poligono e dá o zoom.

Formulário QT4 no qgis

Formulário QT4 no qgis

O QT4 designer se instala junto com o qgis no windows . No linux use “sudo apt-get install python-qt4”.  Ele é  uma interface gráfica para criar formulários. No nosso projeto ele será usado para administrar o banco de dados ‘Familia’  criado no postgis. Ver posts anteriores. Quando você clica no ícone para a brir o programa, a primeira tela lhe oferece vários templates e tamanhos para o formulário. Escolhi main window, com formulário tamanho VGA Landscape  640X480.

ui1

Na próxima tela começamos nosso projeto escolhendo um container à esquerda, clicamos em cima dele e arrastamos para dentro do nosso formulário. O container escolhido já vem com duas abas Tab1 e Tab2.

ui2

Do lado direito do Qt você pode trocar os nomes das abas. Se você quiser acrescentar mais abas é só clicar com o mouse do lado direito e acrescentar.

Segue a figura  mostrando como mudar os nomes das abas:

ui4

Dentro da aba ‘Pais’ vamos inserir linhas que mostrem os dados da tabela no qgis. Para isso necessitamos que o nome da coluna do qgis seja identico ao que vamos colocar no nosso formulário. Do lado esquerdo clicamos e arrastamo ‘label’ para dentro da nossa aba pais. O label serve para colocarmos um texto livre, adicionamos ‘Nome do pai’ . Depois puxamos o LineEdit para dentro da mesma aba, e do lado direito colocamos o nome que está na coluna do qgis.

ui5ui15

Faça igual para nome da mãe.  Acrescentamos uma coluna no qgis chamada ‘Responsavel’.  Note que não usamos acento nas colunas do qgis. O QT não aceita acentos.  Esta nova coluna é para demonstrar como  utilizar o combobox no qgis.

Puxe um combobox da esquerda e coloque o nome ‘Responsavel’. O mesmo nome da tabela no qqgis.

ui6_ui16

Agora vamos para a aba ‘Filhos’.  Esta tabela foi alvo de relacionamento no post “Administrando Relacionamento postgres-postgis no qgis”.  Para fazer um relacionamento no QT. Puxe um widget para dentro da aba filhos, depois clique no sinal de ‘+’ em na cor verde do lado direito no Property Editor, escreva ‘qgisRelation’ como na figura abaixo. Depois do lado direito, escolha o nome que você deu ao relacionamento no qgis, no nosso caso foi ‘Relacionamento’. Na imagem da direita, recordamos como fazer o relacionamento no qgis.

ui7relacionamento2

E agora é só salvar o seu formulário do QT e chamá-lo no qgis.

No qgis abrimos’ propriedades’, ‘campos’, ‘fornece um arquivo ui’, ‘url onde está o arquivo salvo’. Clique em aplicar, OK e abra o formulário no qgis através do ícone de informação.

ui15ui17

SEO scoO 

Administrando Relacionamento postgres-postgis no qgis

Administrando Relacionamento postgres-postgis no qgis

Continuando com o mesmo projeto feito  para os posts anteriores. Note que quando abrimos o projeto ele solicita a senha do banco de dados postgres. Esta senha é que define se o usuário terá ou não permissão à edição.

relacionamento4

Depois do projeto aberto observemos as tabelas. A primeira tabela shp denominada Familia. A segunda somente dados, denominada filhos. Veja os dados a seguir.relacionamento1

A tabela  Familia contém cinco campos gid, id, familia, mae e pai. Recordando o post anterior o campo familia foi definido como chave primária no postgresql. A chave primária tem que ser única, para ser cruzada com outras tabelas relacionadas.  A segunda tabela tem três colunas, id, familia, filhos. Nesta segunda tabela o campo familia será a chave estrangeira, e o id a chave primária.

IMPORTANTE – Toda tabela tem que necessariamente ter uma chave primária.

No projeto qgis, temos que informar que estas tabelas estão ligadas entre si. Informar qual a chave primária e qual a chave estrangeira. Esta informação é feita no campo PROJETO, PROPRIEDADE DO PROJETO, RELAÇÕES. Agora é só seguir os passos com na figura e depois salvar o projeto.relacionamento2

 

 

 

Clique com o icone de informação sobre o poligono e você poderá inserir informações tanto na tabela Familia como na tabela filhos.relacionamento3

 

No próximo post vou mostrar como fazer o formulário no QT junto com o relacionamento.

Conexão postgis-qgis parte2 (Fazendo um relacionamento sql)

Conexão postgis-qgis parte2 (Fazendo um relacionamento sql)

Para se ter um banco de dados geográfico completo, precisamos fazer relacionamentos SQL entre as tabelas.  No post anterior, criei uma camada shp chamada familia,  importei para o postgres-postgis.

post1post2

A camada principal, que é geográfica, tem o campo ‘pai’, o campo ‘mãe’ e o campo ‘familia’, que será a chave primária, e que não poderá se repetir, para podermos usá-la no relacionamento de quantas tabelas quisermos.

Agora faremos uma outra camada relacionada à camada familia. Desta vez utilizando o próprio postgres. A camada não terá elementos gráficos somente dados. Teremos o campo ‘familia’ que será a chave estrangeira , com isto esta famila terá quantos filhos quiser.

Acompanhe passo à passo a nova tabela ‘filhos’.

rel1rel2

rel3rel4

 

Clique em table, new table. Preencha o nome da tabela, adicione as colunas. Não se esqueça de fazer uma coluna ‘id’. Toda a tabela tem que necessariamente ter uma chave primária. O seu ‘id’ será esta chave.  O “data type” do seu campo ‘id’ será ‘serial’, quando você inserir uma nova informação, este campo será preenchido automaticamente. Adicione também a coluna ‘familia’, esta coluna  será definida como chave estrangeira, e por fim a coluna ‘filhos’. Não se esqueça de colocar as permissões. No post anterior ensinamos como trabalhar com “login groups e login roles”.  Dê permissão para o grupo que vai editar as informações. No Nosso caso o ‘Grupo’.

Voltemos para a tabela familia para verificar as configurações:

fam1fam2fam3fam4

Por último verifique as autorizações do Banco de dados  Familia e do shema onde suas tabelas se localizam. Neste caso é ‘public’ , para o Group role ‘Grupo’

data_baseshema

Quando você usa outro usuário que não seja o postgres, você deve prestar  muita atenção em todas estas permissões. Se faltar qualquer uma, não conecta.

Depois de pronto o banco e as permissões vamos abrir o banco no qgis e fazer os relacionamentos, tema do próximo post.

 

 

 

Permissões postgres-postgis-qgis

Permissões postgres-postgis-qgis

As permissões sao feitas em grupos. Todos os usuários precisam estar dentro dos grupos.

No pgadmin, dentro de Group roles, criei um grupo denominado ‘Grupo’.

grupo_6

A seguir criei um login ‘sylvia’ como no exemplo abaixo

grupo1

Depois de criado o login, no meu caso ‘sylvia’ , coloque o novo login dentro do grupo para fazer as permissões. Mova ‘Grupo’ de ‘Not member’ para ‘member’.

grupo2grupo3

O  código é esse:grupo4

Feito isso vá até a camada desejada e dê permissão para editar.

Escolhi a camada familia e permiti que o grupo ‘Grupo’ possa ter todas permissões de edição,leitura,escrita.

grupo8

Quando se cria um shema novo também é preciso colocar as mesmas permissões da camada no shema.

Conexão postgis-qgis parte1 (Importando arquivo shp)

Conexão postgis-qgis parte1 (Importando arquivo shp)

A grande dificuldade de quem trabalha com softwares geo é compartilhar arquivos. Quando comecei a trabalhar com Geo, eu dividia o meu layer em partes e distribuia aos estagiários  para trabalharem. Depois  de pronto juntava tudo de novo, devido a impossibilidade de duas ou mais pessoas salvarem o mesmo arquivo ao mesmo tempo.

Muito trabalhoso,  mas era o que eu possuia e desta forma produzi o layer de Loteamentos Irregulares de São Paulo, com aproximadamente 2000 poligonos. A descoberta do postgres-postgis, do sistema operacional linux e de todos os demais softwares livres facilitaram demais  o trabalho. A produção aumentou e  a qualidade também. A capacidade de compartilhamento então nem se fala. Neste post e nos outros à seguir, vou mostrar como é simples montar um banco de dados.

Isto é se você chegou até aqui, com todos os programas instalados. Se tiver alguma duvida pode enviar um questionamento,  a medida que eu puder vou melhorando os posts.

Criei um Banco de Dados chamado Familia como exemplo.

Clique no ícone do postgis para começar a importação. Você tem que se conectar ao Banco desejado, colocar a senha do usuário postgres e o local onde o Banco se encontra. No meu caso ele está no computador que estou trabalhando então é “localhost”.

capture1

Depois de feita a conexão, adicione o arquivo shp desejado, escolha também o shema. Se você não criou nenhum ele coloca  no shema “public”. Então coloque o número do SRID, que nada mais é que o número da projeção que você deseja utilizar. Exemplo WGS 84- 4674. O QGIS tem todos os números das projeções, se você não souber de uma olhada lá. E depois é só clicar import.

Nesta fase de importação. Se o  banco tem muitas colunas, você pode ter problemas com o ‘ecoding’. O default dele é ‘UTF8’. No meu caso, ele não aceitou  o UTF8, por causa dos acentos,  pediu para eu tentar LATIN1, eu coloquei e deu certo. Se não der certo em seu banco você pode excluir as colunas com problemas e adicionar depois, através da calculadora de campo do qgis.

capture2

Feito isso seu Banco de Dados postgres já terá a camada importada como no exemplo a seguir, vejam que  a minha tabela chamada familia já aparece dentro do Banco de Dados Familia que eu criei no postgres

 

capture3

 

Para abrir a camada familia no  Qgis, você precisa de uma conexão.

No QGIS vá em camada, adicionar camada postgis, NOVO e conecte-se ao Banco Familia como no exemplo:

capture9

Depois de conectado, repita os passos, camada, adicionar camada postgis, agora clique em conectar, clique na sua camada shp e pronto. A camada já pode ser editada.

capture10capture11

 

 

 

Instalando Postgres com extensão Postgis e Pgadmin no Ubuntu 18

Instalando Postgres com extensão Postgis e Pgadmin no Ubuntu 18

A Instalação se dará através do terminal.

Para abrir o terminal

Ctrl+Alt+T

escrever

sylvia@sylvia-BONEFISH:~$ sudo su
[sudo] senha para sylvia:
root@sylvia-BONEFISH:/home/sylvia# sudo apt-get install postgresql-10 postgresql-10-postgis-2.4 pgadmin3

Depois de instalado precisamos configurar alguns arquivos do postgres.  postgresql.conf e pg_hba.conf. Para fazer isso você precisa usar um editor. Eu uso o gedit.

root@sylvia-BONEFISH:/home/sylvia# sudo gedit /etc/postgresql/10/main/postgresql.conf

O arquivo postgresql.conf abrirá, encontre dentro do arquivo:

#listen_addresses = ‘localhost’ e faça o seguinte

retire o jogo da velha e coloque asterisco no lugar de localhost. Como a seguir

listen_addresses = ‘*’

clique em salvar.

Agora é a vez do pg_hba.conf

root@sylvia-BONEFISH:/home/sylvia# sudo gedit /etc/postgresql/10/main/pg_hba.conf

Ache no arquivo

#Database administrative login by Unix domain socket

e substitua todos  peer por md5 depois salve o arquivo.

Feche e salve. Toda vez que os arquivos do postgresql.conf e pg_hba.conf são alterados, é necessários restartar o serviço.

sudo /etc/init.d/postgresql restart

Após estas  configurações você precisa achar o atalho do pgadmin para administrar seu banco de dados.  Agora você pode usar a interface gráfica. Vá em arquivo – computador – usr -share – applications.  Nesta pasta ficam  os atalhos. Ache o simbolo do pgadmin3, clique com o lado esquerdo do mouse, copie, vá até a área de trabalho e cole.

atalho

Agora você precisa configurar uma senha para o usuário postgres. De volta ao terminal:

Ctrl+Alt+T

sylvia@sylvia-BONEFISH:~$ sudo -u postgres psql
[sudo] senha para sylvia:
psql (10.10)
Type “help” for help.

postgres=# alter user postgres with encrypted password ‘sua_senha’;

Agora você já pode administrar seu SGBD com sua nova senha. Para abrir  é só clicar no ícone  do pgadmin3 e você pode criar um servidor como a seguir:

captura-de-tela-de-2016-11-09-23-02-37

Depois crie seu banco de dados:

captura-de-tela-de-2016-11-09-23-05-06

E por último crie uma extensão Postgis para poder trabalhar no qgis.

Clique em cima do seu banco de dados, depois em SQL e  adicione

CREATE EXTENSION POSTGIS;

como a seguir, depois clique em run.  Agora você pode importar seus layers para postgis

captura-de-tela-de-2016-11-09-23-06-52

Atenção: Para o postgresql-10, o pgadmin 3 apresenta alguns erros, se for o seu caso, terá que instalar o pgadmin4.

Configurando o Proxy no Ubuntu.

Configurando o Proxy no Ubuntu.

Depois que você instalou seu Ubuntu e colocou o computador na Rede Windows, você precisa configurar o seu navegador com o número do proxy ou o endereço para acessar a internet. Veja a seguir:

captura-de-tela-de-2016-11-10-00-05-34

Para instalar programas no seu computador através do synaptic ou do terminal  você precisa configurar o proxy. Vá no terminal Ctrl+Alt+T e digite com usuário root:

sudo gedit /etc/apt/apt.conf

O arquivo apt.conf abrirá, então adicione:

Acquire::http::Proxy “http://meu_usuário:sua_senha@seu_proxy:sua_porta”;

Depois é só salvar e pronto, não esqueça de atualizar sua senha quando ela mudar.

PROBLEMAS COM PROXY NO QGIS

PROBLEMAS COM PROXY NO QGIS

Se você está em uma rede corporativa com certeza já ouviu falar no nome PROXY.   Para instalar plugins no qgis você precisa saber qual o número do PROXY.  Pergunte ao administrador ou veja no seu navegador, conforme a figura abaixo:

Se você está em uma rede corporativa com certeza já ouviu falar no nome PROXY. Para instalar plugins no qgis você precisa saber qual o número do PROXY. Pergunte ao administrador ou veja no seu navegador, conforme a figura abaixo.

O número do proxy e da porta aparecem no seu navegador na aba endereço. No caso este navegador é o Internet Explorer. O proxy  pode também estar configurado como um endereço (url). O endereço roda um  script que direciona seu usuário à internet. Se você copiar esta rotina e colocar em um navegador de qualquer computador que esteja dentro da rede, você terá acesso à rotina e o seu proxy e a porta estarão dentro desta rotina.
Depois de descobrir o número do proxy. Entre na aba opções e rede. Configure o seu proxy com usuário e senha. O login e a senha são os mesmos que você usa para acessar sua rede. Toda vez que houver uma modificação no login ou senha você deverá alterá-lo no qgis também.

Clique em configurações, opcçoes, rede.
Clique em configurações, opcçoes, rede.