#1 Thu 15 January 2015 18:58
- oligaga
- Juste Inscrit !
- Date d'inscription: 15 Jan 2015
- Messages: 3
QGIS 2.6 : remplissage de champs en série
Bonjour à tous
Voilà un problème que je me suis posé mais qui semble ne pas avoir de solution... en tout cas je n'ai pas trouvé !
Mais je ne désespère par de pouvoir en trouver une grâce à vous.
J'ai une table avec de nombreux champs, dont plusieurs sont liés. Je m'explique : j'ai un champ H1 qui est déjà rempli et des champs H1_A, H1_B et H1_C qui ne sont pas remplis. Ensuite les champs H2, H3 se répètent jusqu'à H12 de la même manière, avec à chaque fois les trois champs A B et C qui y sont liés.
J'ai une table csv "typologie" donnant la correspondance entre le premier champ et A, B et C, qui me permet, en faisant par exemple la jointure sur le champ H1, de remplir H1_A, H1_B et H1_C, mais en demandant à chaque fois une manip pour dire via la calculatrice "mettre à jour H1_A" puis une deuxième manip pour "mettre à jour H1_B", etc.
Multiplié par mes 12 champs "H", ça fait tout de même 36 opérations, susceptibles de générer des erreurs....
Donc, je voulais savoir si il est possible de simplifier toutes ces différentes manips, de les grouper de manière à remplir automatiquement tous mes champs, ou au moins par paquets de 3 (par exemple H1_A, H1_B et H1_C) ce qui me simplifierait au pire à douze opérations à réaliser....
Il existe probablement une solution avec du Python, mais je suis loin d'être assez compétent en la matière pour m'y risquer....
Je vous remercie d'avance pour l'attention que vous voudrez bien accorder à cette requête et j'espère avoir été suffisamment clair pour pouvoir obtenir une réponse.
A bientôt
Hors ligne
#2 Thu 15 January 2015 23:19
- Julien Gondellon
- Participant actif
- Date d'inscription: 17 Apr 2014
- Messages: 67
Re: QGIS 2.6 : remplissage de champs en série
Bonsoir,
Si j'ai bien compris ta demande, as-tu essayer de passer les champs à remplir automatiquement en "champs virtuel" dans la calculatrice de champs ?
Par contre, ces champs virtuel ne seront actif qui si tu en créés des nouveaux.
Bon courage.
Hors ligne
#3 Fri 16 January 2015 10:59
- oligaga
- Juste Inscrit !
- Date d'inscription: 15 Jan 2015
- Messages: 3
Re: QGIS 2.6 : remplissage de champs en série
Merci mais je ne pense pas que cela convienne.
Apparemment (je ne connaissais pas cette utilisation) les champs virtuels ne peuvent pas se conserver en dehors des projets qgis
Et puis ma table existe déjà, je ne peux pas perdre trop de temps à créer de nouveaux champs, virtuels ou non.
Peut-être qu'une requête SQL bien chiadée permettrait de résoudre ce problème...
Hors ligne
#4 Fri 16 January 2015 11:52
- Miniopterine
- Participant assidu
- Date d'inscription: 29 Nov 2005
- Messages: 278
Re: QGIS 2.6 : remplissage de champs en série
et en utilisant un logiciel genre Talend ou FME?
En ligne
#5 Fri 16 January 2015 17:11
- Florent45
- Juste Inscrit !
- Date d'inscription: 1 Nov 2010
- Messages: 4
Re: QGIS 2.6 : remplissage de champs en série
Je ne suis pas sûr d'avoir tout compris, tu as une table "table1" de cette forme :
H1 | H1_A | H1_B | H1_C | H2...
-----|---------|--------|---------|------
1 | | | |
1 | | | |
2 | | | |
45 | | | |
1 | | | |
etc..
Et tu voudrais remplie les champs A, B, C à partir d'une table de typologie "table2" du type :
nom_champ | valeur_champ|signif code A | signif code B | signif code C |
--------------|-----------------|----------------|------------------|----------------|
H1 |1 | truc | machin | chose |
H1 | 2 | truc | machin | chose |
H1 | 3 | truc | machin | chose |
etc...
Dans ce cas avec du SQL ça doit pouvoir se faire en utilisant une requête du type :
UPDATE table1 AS t1
SET H1_A = t2.H1_B,
H1_B = t2.H1_B,
H1_C = t2.H1_C
FROM
(
SELECT c1.H1, c2.signif_code_A AS H1_A, c2.signif_code_B AS H1_B, c2.signif_code_C AS H1_C
FROM table1 AS c1
LEFT JOIN (SELECT valeur_champ, signif_code_A, signif_code_B, signif_code_C
FROM table2
WHERE nom_champ = 'H1') c2 ON c1.H1 = c2.valeur_champ
) AS t2
WHERE t1.H1 = t2.H1
Si je ne me trompe pas, ça doit marcher, par contre il faut refaire la requête pour les 12 modalités.
Hors ligne
#6 Fri 16 January 2015 21:13
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: QGIS 2.6 : remplissage de champs en série
Salut,
Si je ne me trompe pas, ça doit marcher, par contre il faut refaire la requête pour les 12 modalités.
Pour dupliquer les requêtes avec une liste de valeurs --> Scriptgen
Là --> http://www.forumsig.org/showthread.php/ … WOR-en-JPG
ou ici même ----> http://georezo.net/forum/download.php
A+
Joël
Hors ligne
#7 Tue 20 January 2015 09:33
- oligaga
- Juste Inscrit !
- Date d'inscription: 15 Jan 2015
- Messages: 3
Re: QGIS 2.6 : remplissage de champs en série
Merci beaucoup pour vos réponses.
Par contre pour Scriptgen, il semblerait que ce soit adapté pour arcgis ou mapinfo, je suis sous QGIS 2.6.1
Petite précision, la "table2" typologique se présente plutôt comme ça :
H | code_A | code_B | code_C
------------------------------------
1 | truc1 | machin1 | chose1
2 | truc2 | machin2 | chose2
45| truc45 | machin45| chose45
etc. sachant que toutes les valeurs en Hx (H1, H2, H3 ... H12) sont communes à tous les champs "H".
Par contre pour la requête SQL j'ai un peu de mal à comprendre :
- à quoi correspond "t1" : est ce le nouveau nom de la table actualisée ?
- même chose pour "t2" : est ce un raccourci pour dire "table2" ou le nouveau nom d'une table ?
- même chose avec c1, c2, c3... nom de champ ?
Merci !
Hors ligne
#8 Tue 20 January 2015 10:24
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: QGIS 2.6 : remplissage de champs en série
Par contre pour Scriptgen, il semblerait que ce soit adapté pour arcgis ou mapinfo, je suis sous QGIS 2.6.1
Scriptgen ne sert qu'à dupliquer des requêtes, peut importe ce que vous utilisez derrière.
A+
Joël
Hors ligne