Changer le type de données dans la table attributaire dans QGIS?

11

J'ai des données de comté dans lesquelles les FIP (en fait FIPS d'État et FIPS de comté combinés). J'ai des données importées au format CSV avec les mêmes données FIPS intitulées STCounty. Cependant, le fichier de formes FIPS est répertorié comme un réel et le CSV est entré comme un entier et la fonction Join ne semble pas fonctionner. Les boîtes de dépôt sont grisées / vides.

Donc, la plus grande question est de savoir comment changer le type d'attribut dans une table?

J'ai essayé de créer une nouvelle colonne dans le fichier de formes (données du comté) et de la définir sur un entier, puis de multiplier le FIPS * 1, mais j'ai obtenu une colonne pleine de "NULL".

Je suis nouveau sur QGIS et j'ai beaucoup d'expérience dans MapInfo, donc le concept de jointure n'est pas nouveau pour moi, juste la syntaxe dans QGIS.

user10525
la source

Réponses:

11

La création d'une nouvelle colonne entière est la bonne façon de procéder - mais celle 1*FIPSque vous avez utilisée (qui fonctionnerait dans Excel ou Libreoffice) est l'endroit où le problème entre en jeu; QGIS ne convertit pas automatiquement entre les types de champs dans un calcul.

Vous devez utiliser l'une des fonctions de conversion ( tointconvertit en entier, tostringen texte et torealen réel / décimal) avec le nom de colonne correct:

toreal("FIPS")

Vous pouvez utiliser le plugin Tablemanager pour supprimer ensuite les colonnes inutiles.

La configuration d'un fichier .csvt serait la meilleure solution reproductible mais pour une seule colonne, cela devrait être assez simple.

Simbamangu
la source
Le 1 * FIPS fonctionne également dans ArcGIS.
L_Holcombe
semble un peu idiot de ne pas pouvoir simplement changer le type de données. Cependant, cela semble être la bonne réponse
chrismarx
1

J'ai juste eu le même problème. Dans mon cas, je travaille avec Libreoffice et QGIS.

J'ai exporté une table de R vers .CSV avec deux colonnes: "id" et "veh". "id" est Integer et "veh" Real.

write.csv(tab2,file='/path/table.csv',row.names = F)

Lorsque j'ouvre la table.csv dans Libreoffice, le champ veh a été lu comme "chaîne". J'ai donc créé un autre coulmn "vehh" comme la multiplication de "veh" * 1, et le résultat était le nombre souhaité. Ensuite, j'ai enregistré le fichier au format .ODS (Libre Office)

Ensuite, je charge la table.ODS en qgis et "vehh" a été reconnu comme réel.

Sergio
la source