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 !.
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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#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: 273

Re: QGIS 2.6 : remplissage de champs en série

et en utilisant un logiciel genre Talend ou FME?

Hors 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

 

Pied de page des forums

Powered by FluxBB