aprenda a executar testes lógicos no qgis para ... · caso contrário, manter as palavras...

11
Aprenda a executar testes lógicos no QGIS para substituição de textos na tabela de atributos QGIS TUTORIAL www.processamentodigital.com.br

Upload: dangnhan

Post on 09-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

Aprenda a executar testes lógicos no QGIS

para substituição de textos na tabela

de atributos

QGIS

TUTORIAL

www.processamentodigital.com.br

Page 2: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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.

Page 3: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

Í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

Page 4: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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

Page 5: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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

Page 6: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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

Page 7: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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

Page 8: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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

Page 9: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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

Page 10: Aprenda a executar testes lógicos no QGIS para ... · Caso contrário, manter as palavras existentes na coluna "NM_UVEG". Na Calculadora , você deve utilizar a função CASE combinada

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