Substituir strings na tabela de atributos do QGIS

Hoje, ao rever uma camada vectorial de distribuição de fauna com interesse para a conservação com a nossa bióloga de serviço, Sara Saraiva, tive necessidade de corrigir (em todas as linhas de determinado atributo) o nome “Aquila fasciatus”, substituindo-o por “Aquila fasciata”.

Devido à opção tomada na organização dos dados, cada polígono continha uma listagem de espécies que nele ocorrem, e o nome a corrigir encontrava-se no meio da mesma. A correcção teria de ser feita sem alterar os restantes nomes.

Screenshot from 2013-05-29 19:44:20

Tratavam-se de cerca de 80 linhas, e na verdade o termo “Aquila fasciatus” parecia uma meia dúzia de vezes, podendo ser facilmente substituído manualmente. No entanto, a minha honra geek não me permitia efectuar tal processo repetitivo e interrogava-se: “E se fossem mais?”.

Tinha portanto de encontrar uma forma de o fazer automaticamente. Precisava de um género de “Localizar e substituir…”, funcionalidade muito comum em programas de edição de texto e folhas de calculo, e sabia que o QGIS não me iria deixar ficar mal.

Depois de alguma pesquisa, a solução foi encontrada na calculadora de campo, usando a função replace().

Screenshot from 2013-05-29 22:08:41

A expressão é:

replace("campo",'string_antiga','string_nova')

E o resultado foi o esperado.

Screenshot from 2013-05-29 22:14:37

Anúncios

6 thoughts on “Substituir strings na tabela de atributos do QGIS

  1. Excelente!
    “a minha honra geek não me permitia efectuar tal processo repetitivo e interrogava-se: “E se fossem mais?”.”
    Muitas vezes aconteceu-me o mesmo, mas como a minha honra não é tão orgulhosa fiz a edição manualmente, até que me deparei com dezenas de registos e tive que procurar maneira de agilizar o processo.

    1. Alexandre, se o que se passa é aparecerem caracteres estranhos no lugar de caracteres com acentos ou cedilhas, então é uma questão de encoding. Nas propriedades da layer, no separador geral, experimenta alterar o encoding para latin1.

  2. Muito obrigada! ajudou bastante.
    Aproveito para dizer que é possível usar a mesma função para editar apenas parte da string.
    Por exemplo, seria possível trocar apenas ‘fasciatus’ por ‘fasciata’.
    Descobri isso pois precisei trocar apenas a primeira palavra de várias feições.
    Isso pode ser útil por exemplo quando quiser trocar “Rua xxxx” ou “R. xxxx”, onde o segundo terma é diferente em cada feição.
    Espero ter complementado a sua ajuda!
    Abraço!

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s