Changer la valeur d'attribut de la couche CSV du texte en nombre dans QGIS?

28

J'ai lu dans un fichier CSV pour un lien vers un fichier .shp.

Toutes les variables qui ne sont que des chiffres sont entrées sous forme de texte.

Comment changer les variables de texte en numérique dans QGIS?

HealthMaps
la source

Réponses:

37

J'ai eu une fois la même question. La réponse est que vous placez un fichier dans le même dossier avec le csvt final. Par exemple, votre nom de fichier est xyzdata.csv vous ajoutez le fichier xyzdata.csvt

Celui-ci, vous pouvez le modifier avec l'éditeur par exemple. Et vous définissez le type de données comme ceci. "Entier", "Chaîne", "Entier", "Entier", "Chaîne", "Réel"

L'entier est maintenant la variable pour la première colonne, la chaîne pour la seconde et ainsi de suite ... Assurez-vous que les fichiers sont nommés de manière identique.

Modifier: Voir ici aussi si nécessaire: http://underdark.wordpress.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Shepherdjo
la source
Merci beaucoup1, est-il vrai que tous les fichiers CSV seront lus sous forme de texte? J'ai peut-être imaginé cela, mais quand j'ai commencé avec QGIS il y a quelque temps, j'ai lié un fichier CSV et les nombres étaient des nombres. Semble que ces informations devraient être dans le manuel d'utilisation. (peut-être que je l'ai manqué)
HealthMaps
Oui, c'était assez bizarre pour moi aussi. Mais si vous n'avez que quelques colonnes, cette méthode est facile à réaliser. Alors ... est-ce que ça a fonctionné pour vous?
Shepherdjo
Oui, ça marche parfaitement! Attention à la configuration de votre fichier CSVT dans Excel; des guillemets supplémentaires restent coincés, etc. J'utilise SAS ou R pour créer les fichiers que je veux lier, il n'est donc pas trop difficile de créer un fichier CSVT avec le fichier CSV. Semble que cela doit être corrigé. Un autre SIG que j'utilise voit des nombres dans une colonne CSV, il les lit comme des nombres.
HealthMaps
J'ai trouvé un plugin MMQGIS qui changera une colonne de texte en float ou float en text. Fonctionne uniquement pour un fichier de forme, pas un fichier lié ou un fichier csv importé. Voir michaelminn.com/linux/mmqgis
HealthMaps
Bien d'entendre ça. Et merci pour le conseil du plug-in. Je vous serais également reconnaissant si vous acceptez ma réponse, n'est-ce pas?
Shepherdjo
15

Plutôt que de jouer avec le fichier d'entrée, d'essayer d'obtenir une image parfaite, utilisez simplement la calculatrice de champ pour convertir le texte en nombre / réel. Voir les exemples ci-dessous:

Calculatrice de champ

Calculatrice de champ en nombre

Calculatrice de champ en réel

Table d'attributs après la fonction

nagytech
la source
Lorsque j'ai apporté le fichier CSV, je n'ai pas pu le modifier. Le bouton d'édition a été grisé. Comment puis-je le rendre modifiable?
HealthMaps
Je ne suis pas sûr que vous puissiez modifier un csv via qGIS. Je pense que j'ai mal lu votre question en ce que vous aviez déjà importé les données csv dans le fichier de formes .
nagytech
2
J'ai fait le lien, .shp vers un fichier csv qui avait des colonnes numériques mais qui étaient vraiment du texte. Apparemment, on ne peut faire aucune modification sur un fichier CSV seul ou s'il est lié à un fichier SHP. J'ai donc enregistré le fichier lié, puis je l'ai rechargé et j'ai pu modifier les fichiers de numéros de texte dans un format entier comme vous l'avez suggéré. Il semble que l'utilisation du fichier .csvt fonctionne mieux si vous avez beaucoup de colonnes de texte à convertir, puis utilisez la méthode du calculateur de champ s'il n'y en a pas autant. Il serait utile de pouvoir éditer le fichier CSV seul, sans lien avec quoi que ce soit.
HealthMaps
11

Au lieu de charger le fichier .csv à l'aide de la couche Ajouter un vecteur, utilisez l'outil de couche de texte délimité. Il essaiera de détecter le type de données le plus approprié pour chaque colonne.

Pour plus de détails, consultez le guide d'utilisation de QGIS .

entrez la description de l'image ici

obscur
la source
Insta-fix! Merci
user94812
5

MMQG est à l'origine de ce problème et, en fin de compte, il peut le résoudre.

Une fois que vous avez joint vos données Shapefile et CSV, utilisez l'outil Modifier> Texte en flottant de MMQGis.

Comme d'habitude, il laisse une trace de fichiers de formes intermédiaires indésirables, mais quoi de neuf

boulder_ruby
la source
1

Dans QGIS 3.x, une source d'erreur courante consiste à choisir le mauvais séparateur décimal. Cochez ou décochez la case "Le séparateur décimal est une virgule" avant de charger votre CSV dans QGIS:

entrez la description de l'image ici

MrXsquared
la source
-2

Une autre alternative en cas de grands ensembles de données à gérer et évidemment beaucoup de temps pour continuer avec le calculateur de terrain (sans boucle) ou dans un éditeur de texte: - enregistrer vos données en tant que variable CSV + XY + pour le joint avec notre fichier de formes polugone - télécharger votre CSV avec le plug-in (import csv) puis enregistrez-le sous forme de fichier de forme (point) - puis fermez q gis - retournez dans le dossier avec le point de fichier de forme, dupliquez la table dbf correspondante / renommez - ouvrez Qgis - téléchargez le nouveau dbf et joignez-vous à fichier de formes (entités polygonales)

Une pierre, deux pigeons: vous avez potentiellement 1) un point shapefile avec toutes les données et toutes les possibilités de représentation 2) et un shapefile indépendant avec table dbf jointe (modifiable!) Lié au polygone pour la cartographie thématique

C'est un peu grossier, mais assez simple ...

bs_epidemio

bsepidemio
la source
3
Bien que cette réponse explique comment obtenir le .csvfichier dans un format modifiable, elle ne répond pas à la question d'origine de savoir comment convertir une valeur d'attribut d'un texte en un nombre . Bien qu'il soit important d'avoir des questions ciblées de qualité, il est tout aussi essentiel que les réponses à ces questions soient aussi ciblées et pertinentes que possible par rapport à ce qui a été demandé à l'origine.
Obtenez Spatial