Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Pour consulter des statistiques sur l'emploi en géomatique

à partir de plus de 20 000 offres publiées depuis 2007

#1 Thu 14 November 2013 10:57

Julien34
Membre
Lieu: Lille
Date d'inscription: 19 Sep 2007
Messages: 102

QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Bonjour à tous,

J'ai un petit problème sur QGIS 2.0 : dans une colonne de la table attributaire d'une couche, je souhaiterais remplacer automatiquement des valeurs par d'autres. Par exemple, remplacer toutes les entités caractérisées "X" par "Y".

Je m'explique. Je travaille sur Corine Land Cover, couche composée de milliers et de milliers de polygones. Ceux-ci définissent l'occupation du sol, caractérisée dans une colonne qui catégorise selon un code chiffré, et non du texte. Exemple : les polygones intitulés "213" représentent les rizières; "422" : les marais salants, "124" les aéroports...

Je souhaiterais, en mode édition", remplacer tous les "213" par "rizière" et, plus globalement, touts les codes chiffrés par le libellé correspondant. Une sorte de fonction "remplacer ... par ...". Savez-vous comment faire ? Une réponse me permettrait d'économiser des jours de copier-coller wink

Je vous remercie par avance de votre coup de main. Bonne journée, Julien.

Hors ligne

 

#2 Thu 14 November 2013 11:51

damien_B
Membre
Lieu: Limoges
Date d'inscription: 14 Nov 2013
Messages: 10

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Bonjour,
tu peux le faire avec la calculatrice de champs.
Tu définis ton champ que tu veux mettre à jour puis tu utilise la fonction CASE WHEN.

Par exemple ca pourrait te donner ça dans l'idée

CASE
WHEN "TA COLONNE" = '213' then 'rizières'
WHEN "TA COLONNE" = '422' then 'marais salants'
------et cela autant de fois que tu veux remplacer une valeur (par contre il me semble que si une valeur n'est pas listé dans la fonction lors de la mise à jour la valeur deviendra NULL-------
END

(en sélectionnant le champ correspondant dans "champs et valeurs" tu peux aussi obtenir toute la liste des valeurs uniques de ton champ pour te faciliter le travail)
avec cette fonction tu peux faire bien plus évidemment, comme utiliser les autres opérateurs, etc.

En espérant que cette solution te convienne.

Hors ligne

 

#3 Thu 14 November 2013 12:12

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13652
Site web

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Bonjour,

Plus simple, une jointure sur le champ du code CLC devrait faire l'affaire. Prendre ce type de fichiers excel : http://georezo.net/forum/attachment.php?item=2171

Hors ligne

 

#4 Thu 14 November 2013 17:22

Julien34
Membre
Lieu: Lille
Date d'inscription: 19 Sep 2007
Messages: 102

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Merci Damien et Robin (ta table est parfaite!).
J'ai opté pour la réponse de Robin (mes formulations dans la table de calcul sont toujours fausses...), mais je n'arrive pas à faire la jointure (je n'en ai jamais fait auparavant, c'est l'occasion d'apprendre).
Sous QGIS 2.0, je vais dans l'onglet "MMQGIS", puis "combine->attribute join from CSV file" (j'ai transformé la table xls en csv), ça me semble être l'option idéale. Je suis la procédure, et au final il me sort "impossible, votre csv n'est pas encodé en UTF8". Pourtant il me semble avoir encodé (je ne sais même pas de quoi je parle en écrivant ça) le fichier sous excel, j'arrive pas à trouver de solution. J'ai aussi essayé les autres outils dans "MMQGIS/combine", et aussi "vecteur/outils de gestion de données/, mais y a rien.
Du coup je reviens vers vous en espérant avancer : auriez-vous une idée pour résoudre cette jointure ? Je vais aussi essayer la technique de Damien pendant ce temps.
D'avance merci.
Julien.

Hors ligne

 

#5 Thu 14 November 2013 18:07

florent vanhoutte
Membre
Lieu: Compiègne
Date d'inscription: 27 Apr 2006
Messages: 58

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Bonjour,

A toutes fins utiles pour la représentation de CLC dans Qgis.

Cordialement

FV


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#6 Thu 14 November 2013 18:07

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13652
Site web

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Je mets ci joint une autre table en CSV directement.

Pour la suite, j'ai mis quelques copies d'écran sur comment l'importer + faire la jointure.

1. Menu couche/Ajouter une couche de texte délimité :

[img]http://georezo.net/forum/attachment.php?item=5674&download=1[/img]

2. Propriétés de la couche corine/Jointure/ajouter une jointure (bouton +)/ choix des colonnes :

[img]http://georezo.net/forum/attachment.php?item=5673&download=1[/img]


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#7 Fri 15 November 2013 08:46

damien_B
Membre
Lieu: Limoges
Date d'inscription: 14 Nov 2013
Messages: 10

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Effectivement la solution de Robin est beaucoup plus simple que celle que je t'ai proposé, et plus adaptée à ton problème wink. (Mes compétences en SIG sont limitées, je suis étudiant et notre "formation" sur SIG est assez...légère. C'est essentiellement le stage de master que je suis en train d'effectuer qui me forme réellement dans ce domaine)

Mais Robin, si je ne me trompe pas, dans le cas où on ne dispose pas d'un fichier pour faire une jointure, alors la solution que j'ai proposé est adaptée? (J'en profite pour savoir si je dis des absurdités ou pas)

Hors ligne

 

#8 Fri 15 November 2013 10:08

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13652
Site web

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Mais Robin, si je ne me trompe pas, dans le cas où on ne dispose pas d'un fichier pour faire une jointure, alors la solution que j'ai proposé est adaptée? (J'en profite pour savoir si je dis des absurdités ou pas)


Si c'est juste 1 valeur = 1 autre alors il vaut mieux passer par ma solution, en recréant soit même un fichier d'équivalence, c'est globalement le plus simple (à mon goût) mais ça n'implique pas que ta suggestion est mauvaise non plus, elles se valent. Par contre, dès qu'il y a des requêtes plus complexes (genre population entre 10 000 et 20 000 = "ville moyenne", ton type de solution est indispensable.

Hors ligne

 

#9 Fri 15 November 2013 10:21

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13652
Site web

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

(par contre il me semble que si une valeur n'est pas listé dans la fonction lors de la mise à jour la valeur deviendra NULL)


Oui, tu peux résoudre ça avec ELSE, exemple :

Code:

CASE
  WHEN  "id"  = 311 THEN  'Bois'
  ELSE  'Non renseigné'
END

Hors ligne

 

#10 Fri 15 November 2013 15:23

Julien34
Membre
Lieu: Lille
Date d'inscription: 19 Sep 2007
Messages: 102

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Salut tout le monde,
Merci à vous, j'ai résolu mon problème de jointure ! J'avais pas vu l’icône dans "propriété de la couche". Et merci aussi pour les bidouilles dans la fenêtre de calcul sur la table attributaire.
Je dois encore tabler sur la mise en forme (couleurs...), mais globalement, 111=zone urbaine continue;)
Bonne fin de journée,
Julien.

Hors ligne

 

#11 Wed 20 May 2020 14:55

OliveT21
Membre
Date d'inscription: 7 Dec 2006
Messages: 34

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Bonjour,
Désolé de déterrer un vieux post, mais c'est un des seuls que j'ai trouvé qui se rapproche de ma question.

Je cherche à faire une mise à jour des valeurs de mes champs, selon une autre table, sous condition de correspondance entre les champs identifiants des 2 tables.
Etant un ancien de MapInfo, c'était tout simple avec la fonction Mise à jour colonne.

Est-ce qu'un équivalent existe sous QGIS ?
Peut on faire fonctionner la fonction CASE WHEN évoquée pour conditionner à la correspondance des identifiants des 2 tables ?

Merci.

Hors ligne

 

#12 Wed 20 May 2020 16:23

carteq
Membre
Date d'inscription: 8 Mar 2008
Messages: 784

Re: QGIS 2: Remplacer valeurs automatiquement par autre dans table attrib

Ça se fait via la calculatrice de champs, oui. Ou en SQL avec un Update.

Vous pouvez aussi faire un joint de table, puisque que vos identifiants correspondent. Mettre à jour une colonne à partir d'une autre est ensuite beaucoup plus simple.

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |