banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 30 November 2009 16:50

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

Eclater un champ en attributs

Bonjour,

Je me retrouve une nouvelle fois (cf sujet un transformer pour transposer les données)confrontée à la réorganisation d'un fichier qui est de ce type:


_____variable_________code_insee______ donnee
_____champ1___________09100__________80
_____champ1___________25200__________125
_____champ2___________09100__________60
_____champ2___________25200__________55
_______....________________....____________....

J'aimerai pouvoir l'éclater dans la forme ci-aprés, en me disant qu'un transformer ou deux doit bien exister pour y parvenir...

___code_insee________champ1_____champ2___....
_____09100____________80_________60_____....
_____25200___________125_________55_____....
_______....______________...._________...._____....

J'ai cherché du côté des transformers "attribute...", mais rien ne me semble correspondre.

Pourriez-vous me dire si ce que je demande est possible, et si oui m'indiquer les transformers à utiliser?

Merci d'avance,

Dernière modification par ceucile (Mon 30 November 2009 16:56)

Hors ligne

 

#2 Mon 30 November 2009 17:21

Sarah - VEREMES
Participant actif
Date d'inscription: 21 Apr 2009
Messages: 51

Re: Eclater un champ en attributs

Bonjour,

Ça me semble possible, moi j'utiliserais un Aggregator en regroupant par code_insee et en mettant une liste.  Ensuite, je trierais la liste (ListSorter) par variable pour avoir tous les champ1 dans l'élément 0 de la liste et les champ2 dans l'élément 1. En faisant un clique droit sur l'attribut donnee de la liste (list.donnee{}), vous pouvez demander à éclater la liste (ici en 2). Vous pouvez utiliser attributeRenamer pour appeler, list.donnee{0} = champ1 et list.donnee{1} = champ2. Pour nettoyer un peu les données, un ListRemover et un AttributeRemover et  le tour est joué!

Dernière modification par Sarah - VEREMES (Mon 30 November 2009 17:25)


Sarah MOURE
Veremes : support FME & version française

Hors ligne

 

#3 Mon 30 November 2009 17:25

Mathieu
Participant occasionnel
Lieu: Paris
Date d'inscription: 6 Sep 2005
Messages: 37
Site web

Re: Eclater un champ en attributs

Pas très clair mais bon...

Si vous n'avez que 2 valeurs possibles dans le champ "variable" (cad 'champ1' et 'champ2') vous pouvez faire utiliser tester ("variable"='champ1') pour séparer vos enregistrement puis renommer (attributerenamer) le champ "donnee" en "donnee1" pour l'un et en "donnee2" pour l'autre, puis un featuremerger avec Code_insse pour arriver à "code_inssee" "donnee1" "donnee2"

Voilà, en fonction de ce que j'ai compris, vs devriez arriver à vos fins

Hors ligne

 

#4 Mon 30 November 2009 17:33

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

Re: Eclater un champ en attributs

C'est assez manuel mais une solution propre serait :
1. de définir tous les attributs à créer avec AttributeCreator
2. d'utiliser un AttributeFilter pour distinguer les différentes catégories de Variable (champ1, champ2...)
3. Pour chacune des sorties mettre un AttributeSetter dont seul le nom d'attribut changerait à chaque sortie. Le paramètre Valeur d'AttributeSetter serait bien sûr votre attribut "donnee".
4. Aggregator devrait pouvoir regrouper tous les attributs d'une même commune sans avoir à passer par des FeatureMerger (Regrouper par = "code_insee).


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

Hors ligne

 

#5 Mon 30 November 2009 19:28

ceucile
Participant occasionnel
Date d'inscription: 5 Dec 2006
Messages: 48

Re: Eclater un champ en attributs

Merci de toutes vos réponses.

Pour Mathieu et ogayte , j'ai malheureusement énormément de champs différents dans "variable", d'où les points de suspension à mes tableaux... C'est impossible donc de créer au préalable chaque attribut, je serais obligée de faire autrement.

J'ai testé la solution que propose Sarah - VEREMES, et qui me semblait faisable.
Dans cette solution, tout est presque parfait sauf une "petite" chose qui est celle-ci : Lorsque j'éclate ma liste en autant de variables différentes existant dans mon tableau (par exemple...200), il me crée des attributs "list{0}", "list{1}",...,"list{200}". Est-ce qu'il serait possible que ces attributs prennent automatiquement la valeur du nom du champ (dans la colonne variable du tableau initial), càd  "champ1", "champ2",...,
"champ200", sans que j'ai besoin de lui spécifier par un attributeRenamer?

Encore merci pour votre précieuse aide,

Hors ligne

 

Pied de page des forums

Powered by FluxBB