Post on 09-Nov-2018
Aprenda a executar testes lógicos no QGIS
para substituição de textos na tabela
de atributos
QGIS
TUTORIAL
www.processamentodigital.com.br
O Processamento Digital é um Canal de
Conteúdo GEO oferecido pela HEX –
Tecnologias Geoespaciais Inovadoras, que
traz ao público interessado nas Tecnologias
Geoespaciais o que há de novo no setor. Este
canal foi idealizado com o objetivo de ajudar
o público, trocar informações e gerar debates
acerca dos temas da área.
ÍNDICE
1. Dados utilizados no tutorial .............................................................. 4
2. Trabalhando com grades articuladas ...............................................5
3. Teste Lógico com a função CASE ..................................................... 6
4. A Função CASE no QGIS .................................................................... 8
www.processamentodigital.com.br
1. Dados utilizados no tutorial
A base de dados de um arquivo shapefile pode conter caracteres
com problemas de acentuação que podem ser corrigidos
com a troca da codificação. Na maioria dos casos, o cadastro
alfanumérico está associado aos codificadores UTF-8 e
Windows-1252. Em casos onde o usuário recebeu uma tabela com
codificação diferente desses dois formatos, podemos realizar uma
substituição dos caracteres para tentar corrigir este problema.
4
www.processamentodigital.com.br
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos
Os dados são do projeto PROBIO para cobertura vegetal no estado
do Maranhão-MA:
Download do Shapefile: https://dl.dropbox.com/s/opm7jje2m1868qe/
20160428_Tutorial_QGIS_002_shapefile.rar
Fonte: http://www.mma.gov.br/biomas/caatinga/mapa-de-cobertura-vegetal
2.Trabalhando com grades articuladasPara o mapa da vegetação fornecida pelo Ministério do Meio
Ambiente, nós identificamos uma codificação de caracteres cuja
origem é desconhecida. Para visualizar este problema, observe o
comportamento de caracteres na coluna "NM_UVEG" da Tabela
de Atributos:
www.processamentodigital.com.br
5
No QGIS, existe a função replace que possui a tarefa de substituir
textos. No exemplo acima, poderíamos executar a seguinte
instrução:
1. Localizar na coluna "NM_UVEG" a palavra 'Ombr�fila' e
substituir por 'Ombrófila';
2. Localizar na coluna "NM_UVEG" a palavra 'cip�s' e
substituir por 'cipós'.
3. Na Calculadora de Campo do QGIS, o comando replace seria
utilizado dessa forma:
4. replace ("NM_UVEG", 'Ombr�fila', 'Ombrófila')
5. replace ("NM_UVEG", 'cip�s', 'cipós')
O único problema seria o incômodo de executar repetidamente a
função replace para corrigir as duas palavras destacadas acima e
outras que poderiam ser identificadas. Para evitar o retrabalho,
devemos aplicar um teste lógico com a finalidade de substituir
todos os erros automaticamente.
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos
3.Teste Lógico com a função CASE
www.processamentodigital.com.br
6
CASE WHEN "NM_UVEG" LIKE '%Ombr�fila%'
THEN replace(replace("NM_UVEG", 'Ombr�fila', 'Ombrófila'), 'cip�s', 'cipós') ELSE "NM_UVEG"
END
Para localizar e substituir palavras na tabela de atributos, podemos
escrever textualmente a seguinte proposição lógica:
Se o campo "NM_UVEG" contiver as palavras 'Ombr�fila' e 'cip�s',
substituir as palavras 'Ombr�fila' e 'cip�s' por 'Ombrófila' e 'cipós'.
Caso contrário, manter as palavras existentes na coluna "NM_UVEG".
Na Calculadora, você deve utilizar a função CASE combinada com
a função replace para estabelecer critérios de substituição de texto.
Para substituir duas palavras na mesma frase, é necessário aninhar a
função replace como pode ser observado na expressão abaixo:
A função replace aninhada permite substituir uma ou mais
palavras no mesmo atributo. O ELSE que está presente no final do
comando precisa ser mantido para preservar as palavras que não
foram enquadradas na condição anterior.
Esta expressão corrige as palavras 'Ombrófila' e 'cipós' que
designam o tipo de classe de vegetação, porém, temos outras
palavras que precisam ser corrigidas na tabela de atributos.
Abaixo temos uma lista com as palavras que serão substituídas
automaticamente no QGIS:
CLASSE EXEMPLO DE SUBSTITUIÇÃO COM replace
Floresta Ombr�fila Aberta Terras Baixas com cip�sreplace(replace("NM_UVEG", 'Ombr�fila', 'Ombrófila'), 'cip�s', 'cipós')
Forma��es Pioneiras com influ�ncia fluvial e / ou lacustre - arbustiva com palmeiras
replace(replace("NM_UVEG", 'Forma��es', 'Formações'), 'in-flu�ncia', 'influência')
Forma��es Pioneiras com influ�ncia fluvial e / ou lacustre - herb�cea sem palmeiras
replace(replace(replace("NM_UVEG", 'Forma��es', 'Forma-ções'), 'influ�ncia', 'influência'), 'herb�cea', 'herbácea')
Forma��es Pioneiras com influ�ncia fluviomarinha - arb�rea
replace(replace(replace("NM_UVEG", 'Forma��es', 'Forma-ções'), 'influ�ncia', 'influência'), 'arb�rea', 'arbórea')
Savana Gram�neo-Lenhosa com floresta-de-galeria replace("NM_UVEG", 'Gram�neo', 'Gramíneo')
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos
www.processamentodigital.com.br
7
1. Para os atributos que contém a palavra 'Ombr�fila', temos
duas palavras para substituir;
2. Para os atributos que contém a palavra 'Forma��es', temos
quatro palavras para substituir;
3. Para os atributos que contém a palavra 'Gram�neo', temos
uma palavra para substituir.
A lógica para aplicar a função CASE deve ser esta:
1. Quando localizar a palavra '%Ombr�fila%', substituir as
palavras 'Ombrófila' e 'cipós'.
2. Quando localizar a palavra '%Forma��es%', substituir as
palavras 'Formações', 'influência', 'herbácea' e 'arbórea'.
3. Quando localizar a palavra '%Gram�neo%', substituir a
palavra 'Gramíneo'.
O sinal % é um delimitador. Durante a pesquisa, o operador SQL
LIKE deve ser utilizado para localizar palavras posicionadas antes
e depois do símbolo %. Este é um recurso utilizado para buscar
qualquer sequência de caracteres dentro de um atributo da tabela.
O operador CASE fará uma varredura no campo "NM_UVEG"
da tabela de atributos para localizar as palavras que podem ser
substituídas pelo comando replace. Para aplicar a função CASE,
digite a expressão na linguagem reconhecida pelo QGIS:
CASE
WHEN "NM_UVEG" LIKE '%Ombr�fila%' THEN replace(replace("NM_UVEG", 'Ombr�fila', 'Ombró-fila'), 'cip�s', 'cipós')
WHEN "NM_UVEG" LIKE '%Forma��es%' THEN replace(replace(replace(replace("NM_UVEG", 'Forma��es', 'Formações'), 'influ�ncia', 'influência'), 'herb�cea', 'herbácea'), 'arb�rea', 'arbórea')
WHEN "NM_UVEG" LIKE '%Gram�neo%' THEN replace("NM_UVEG", 'Gram�neo', 'Gramíneo') ELSE "NM_UVEG"
END
Neste exemplo, temos até quatro funções replace aninhadas. Este
é o critério para substituição de texto em casos onde mais de uma
palavra para ser corrigida.
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos
www.processamentodigital.com.br
8
Para verificar os resultados da substituição, recomenda-se criar
um campo chamado TESTE antes de aplicar as mudanças na
coluna original. Os procedimentos para substituição de texto
estão descritos abaixo.
1 – Abra a tabela de atributos do arquivo shapefile e clique nas
ferramentas Alternar Edição e Calculadora de Campo:
4.A Função CASE no QGIS
2 – Na Calculadora de Campo, você deve colar a fórmula utilizada
para substituir os caracteres com problemas no campo "NM_UVEG".
Para outras substituições,
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos
www.processamentodigital.com.br
9
3 – Crie um novo campo chamado TESTE do Tipo Texto com
Largura 100. Cole a fórmula no campo Expressão e clique no
botão OK:
O novo campo TESTE garante uma avaliação dos resultados sem
comprometer o dado original. Faça uma verificação em todos
os registros da coluna e confira se a acentuação das palavras
corresponde com o que foi definido na função CASE.
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos
www.processamentodigital.com.br
10
Para gravar o resultado no campo original, basta acessar
novamente a Calculadora de Campo e definir a saída do algoritmo
para a coluna "NM_UVEG".
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos
www.processamentodigital.com.br