Alterar o valor do atributo da camada CSV de texto para número no QGIS?

28

Eu li em um arquivo CSV o link para um arquivo .shp.

Todas as variáveis ​​que são apenas números vieram como texto.

Como altero as variáveis ​​de texto para numérico no QGIS?

HealthMaps
fonte

Respostas:

37

Uma vez eu tive a mesma pergunta. A resposta é que você coloca um arquivo na mesma pasta com o csvt final. Por exemplo, seu nome de arquivo é xyzdata.csv, você adiciona o arquivo xyzdata.csvt

Este você pode editar com o editor, por exemplo. E nele você define o tipo de dados assim. "Inteiro", "String", "Inteiro", "Inteiro", "String", "Real"

Agora inteiro é a variável para a primeira coluna, string para a segunda e assim por diante ... Verifique se os arquivos são nomeados de forma idêntica.

Edit: Veja aqui também, se necessário: http://underdark.wordpress.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Shepherdjo
fonte
Muito obrigado1, então é verdade que todos os arquivos CSV serão lidos como texto? Talvez eu tenha imaginado isso, mas quando estava começando o QGIS há pouco tempo, vinculei um arquivo CSV e os números eram números. Parece que esta informação deve estar no manual do usuário. (talvez eu perdi)
HealthMaps
Sim, isso foi muito estranho para mim também. Mas se você tiver apenas algumas colunas, esse método é fácil de executar. Então ... realmente funcionou para você?
Shepherdjo
Sim, funciona perfeitamente! Cuidado com a configuração do seu arquivo CSVT no Excel; aspas extras ficam presas etc. Uso o SAS ou R para criar os arquivos que quero vincular, para que não seja muito complicado criar um arquivo CSVT junto com o arquivo CSV. Parece que isso precisa ser corrigido. Outro GIS que utilizo vê números em uma coluna CSV, lê-os como números.
HealthMaps
Eu encontrei um plugin MMQGIS que mudará uma coluna de texto para flutuar ou flutuar para texto. Funciona apenas para um arquivo de forma, não um arquivo vinculado ou um arquivo CSV importado. Veja michaelminn.com/linux/mmqgis
HealthMaps
Bom ouvir isso. E thx para a dica de plug-in. Ficaria muito grato também, se você aceitar minha resposta, aceita?
Shepherdjo
15

Em vez de mexer no arquivo de entrada, tentando obter uma imagem perfeita, basta usar a calculadora de campo para converter o texto em um número / real. Veja os exemplos abaixo:

Calculadora de campo

Calculadora de campo para número

Calculadora de Campo para Real

Tabela de atributos após a função

nagytech
fonte
Quando trouxe o arquivo CSV, não consegui editá-lo. O botão de edição estava acinzentado. Como posso editá-lo?
HealthMaps
Não sei se você pode editar um csv através do qGIS. Acho que interpretei mal sua pergunta, que você já importou os dados csv para o shapefile .
Nagytech 16/07/2012
2
Eu fiz o link .shp para um arquivo csv que tinha colunas numéricas, mas era realmente texto. Aparentemente, não é possível fazer nenhuma edição em um arquivo CSV por conta própria ou se estiver vinculado a um arquivo SHP. Então, salvei o arquivo vinculado, recarreguei-o e consegui editar os arquivos de números de texto em um formato inteiro, conforme sugerido. Parece que o uso do arquivo .csvt funciona melhor se você tiver muitas colunas de texto que precisam ser convertidas e, em seguida, use o método da calculadora de campo, se não houver muitas. Seria útil poder editar o arquivo CSV por conta própria, não vinculado a nada.
HealthMaps
11

Em vez de carregar o .csv usando Adicionar camada de vetor, use a ferramenta Camada de texto delimitado. Ele tentará detectar o tipo de dados mais adequado para cada coluna.

Para mais detalhes, consulte o guia do usuário do QGIS .

insira a descrição da imagem aqui

underdark
fonte
Insta-fix! Graças
user94812
5

O MMQGis causou esse problema e, como se vê, pode corrigi-lo.

Depois de ingressar nos dados Shapefile e CSV, use a ferramenta Modify> Text to Float do MMQGis.

Como sempre, deixa um rastro de shapefiles intermediários, mas o que mais há de novo

boulder_ruby
fonte
1

No QGIS 3.x, uma fonte de erro comum é escolher o separador decimal errado. Marque ou desmarque a caixa "Separador decimal é vírgula" antes de carregar seu CSV no QGIS:

insira a descrição da imagem aqui

MrXsquared
fonte
-2

Outra alternativa no caso de grandes conjuntos de dados serem gerenciados e obviamente demorados para prosseguir com a calculadora de campo (sem loop) ou dentro de um editor de texto: - salve seus dados como variável CSV + XY + para a articulação com nosso arquivo de forma polugone - faça o upload seu CSV com o plug-in (importar csv), salve como shapefile (point) - feche q gis - volte para a pasta com o shapefile point, duplique a tabela dbf correspondente / renomeie - open Qgis - faça o upload do novo dbf e junte-se a shapefile (recursos de polígono)

Uma pedra, dois pombos: você possui 1) um ponto de shapefile com todos os dados e toda a possibilidade de representação 2) e um shapefile independente com a tabela dbf unida (editável!) Vinculada ao polígono para cartografia temática

Isso é um pouco rude, mas bem direto ...

bs_epidemio

bsepidemio
fonte
3
Embora esta resposta discuta como obter o .csvarquivo em um formato editável, ela não aborda a questão original de como converter um valor de atributo de um texto em um número . Embora seja importante ter perguntas focadas em qualidade, é igualmente crítico que as respostas sejam tão focadas e relevantes quanto possível ao que foi originalmente solicitado.
Get Spatial