Estou escrevendo um tutorial para alunos de mestrado que usam o QGIS. Uma das tarefas requer que os dados do atributo sejam modificados (consulte o rascunho em PDF do tutorial aqui, se estiver interessado).
A questão é como fazê-los editar os dados do atributo. Sei que essa pergunta já foi feita antes , e a resposta costumava ser simples: basta usar o LibreOffice calc para modificá-lo e salvá-lo, garantindo que a ordem das linhas e os títulos das colunas sejam os mesmos. Eu usei essa abordagem antes com grande efeito.
Infelizmente, a solução não funciona mais: salvar o arquivo .dbf, no LibreOffice (5.4.2) ou no OpenOffice (3.4.1) Calc embaralha os dados da perspectiva do QGIS (apenas números inteiros aleatórios aparecem na tabela de atributos) e cria um arquivo .dbt adicional.
Então, para chegar à pergunta: como posso instruir uma turma de estudantes de mestrado na próxima semana? Eu considerei as seguintes opções:
- Use R em vez disso (ótimo para mim, mas assustador para os alunos)
- Edite o arquivo como .csv e ingresse com base no carimbo de data / hora (ótimo, mas parece excessivamente complexo e poderá introduzir mais erros nas 2 horas práticas)
- Use um programa alternativo: tentei o Gnumeric e o Excel, nenhum dos quais gerou bons resultados rapidamente.
Para ajudar a responder a essa pergunta, criei um exemplo replicável . Abra o arquivo "points.shp" no QGIS, observe a tabela de atributos e feche. Edite algumas células na tabela de atributos "points.dbf" no LibreOffice - salve. Abra novamente "points.shp" no QGIS e observe a tabela de atributos codificados. Os outros shapefiles na pasta .zip já foram corrompidos pelo LibreOffice e OpenOffice para ilustrar como é o problema para mim.
Em suma, como melhor resolvo esse problema?
fonte
Respostas:
Resposta mais simples que encontrei, com base nos conselhos de Ryan Garnett para fazê-lo no QGIS:
Use regexp_replace
Esse recurso foi adicionado à calculadora de campo há 1 ano por Jürgen Fischer (conforme ilustrado neste relatório de erro ). Tentei por um tempo descobrir como fazer isso, mas não procurei "qgis regex" e outros termos vagos.
Sua funcionalidade é provavelmente melhor ilustrada pela necessidade de padronizar todos os valores na coluna "nome". Por exemplo, se precisarmos substituir todas as células que contêm o padrão "Tesc" por 'Tesco', removendo informações supérfluas como "Tesco, Infirmary Road" (que os contribuidores do OSM freqüentemente adicionam), a seguinte função pode ser usada:
regexp_replace ("nome", 'Tesc. *', 'Tesco')
Eu acho que essa é uma funcionalidade de expressão regular Pythonic, pois é um pouco diferente do grep, que eu usei antes.
Acho que é necessária mais documentação (os detalhes no site do QGIS estão limitados a algumas palavras) sobre como isso funciona, então marquei as páginas a seguir para referência futura:
Esta solução tem algumas vantagens:
Desculpas por responder à minha própria pergunta e muito obrigado a outros por me guiarem em direção à luz! Espero que esse segmento de perguntas seja de uso educacional para outras pessoas que enfrentam problemas semelhantes.
fonte
Esta pode ser uma resposta idiota, pois pode ser um objetivo de aprendizado para os alunos de pós-graduação, mas há uma razão pela qual você não está editando os atributos no QGIS com o uso da Calculadora de Campo? Nas versões anteriores do QGIS (pré 1.7), a edição de atributos diretamente no QGIS não era possível; daí a necessidade de editar arquivos .DBF no OpenOffice etc.
A partir de 1.7 e 1.8, você pode editar os dados do atributo diretamente na Calculadora de Campo, com a capacidade de executar expressões condicionais. Também existem plug-ins de atributo Python disponíveis, que podem fornecer opções adicionais para edição de atributos. Esta pode ser uma solução e / ou uma opção para o seu tutorial.
Como um estudante de mestrado anterior e agora um funcionário da universidade, entendo esse problema, o requisito anterior para realizá-lo fora do QGIS, e agora aprecio a capacidade de executar todas as edições de atributo no QGIS. Eu ficaria feliz em ajudá-lo com isso mais, se você desejar.
fonte
Você pode usar a Base do LibreOffice para modificar seus arquivos dbf .
Agora você pode começar a editá-los. Espero que isso seja bom o suficiente para seus propósitos.
Você também pode tentar o DBF Explorer, embora seja apenas para Windows. Ele tem pesquisa e substituição embora.
fonte