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?

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/


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


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


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


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


-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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.