#1 Wed 28 January 2015 14:00
- Wilcar
- Participant actif
- Lieu: Nantes
- Date d'inscription: 25 Apr 2014
- Messages: 82
QGIS : jointure de table et calculatrice de champ
Bonjour,
J'utilise des données historiques de la SGF concernant la population communale en France métropolitaine.
Ces données sont jointes à une géolfa par le biais du COG (N° INSEE)
Mon problème vient de mon impossibilité de créer un champ à l'aide de la calculatrice qui permette d’établir un taux d'évolution de la population (valeur finale-valeur initiale)/valeur initiale
Les résultats obtenus sont aberrants.
Aussi, voici ma question: est-ce lié à la jointure? et comment y remédier?
Cordialement
Wilcar
Dernière modification par Wilcar (Wed 28 January 2015 20:44)
Hors ligne
#2 Wed 28 January 2015 16:21
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3885
Re: QGIS : jointure de table et calculatrice de champ
Bonjour,
peut-on avoir une idée du degré d'aberration des résultats?
Qu'est-ce qui est attendu? Qu'est-ce qui est obtenu?
Quel est le type du champ réceptacle? : Python a une façon assez particulière de faire les divisions
Et as-tu essayé dans un premier temps de juste créer le champ puis de le renseigner après?
Hors ligne
#3 Wed 28 January 2015 20:43
- Wilcar
- Participant actif
- Lieu: Nantes
- Date d'inscription: 25 Apr 2014
- Messages: 82
Re: QGIS : jointure de table et calculatrice de champ
bonjour, je viens de placer une capture d'écran de la calculatrice de champ + table
Ce qui est attendu: un décimal (qui permet de me mesurer une évolution entre deux dates)
Ce qu est obtenu: 0,00
Avec la capture, cela devrait être plus clair...
Dernière modification par Wilcar (Wed 28 January 2015 20:49)
Hors ligne
#4 Thu 29 January 2015 00:29
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3885
Re: QGIS : jointure de table et calculatrice de champ
Euh...
popu2006 - popu2006 renverra toujours 0.... Pas aberrant du tout.
Hors ligne
#5 Thu 29 January 2015 07:58
- Wilcar
- Participant actif
- Lieu: Nantes
- Date d'inscription: 25 Apr 2014
- Messages: 82
Re: QGIS : jointure de table et calculatrice de champ
Désolé pour ma capture...
Voici une nouvelle capture
J'ai modifié la table pour que cela soit plus clair.. champs POPU_1951 et POPU_2006 désormais contigus.
Je précise à nouveau que ma table est le résultats d'une jointure via le COG et que les champs de populatino sont de type Integer.
Voici la capture ("POPU_2006"-"POPU_1951")/"POPU_1951')
Les valeurs pour mes premières lignes (Ruffigné et Quilly) sont de 0,00 alors que l'évolution est de
-0,31 pour Ruffigny
+ 0,45 pour Quilly
Dernière modification par Wilcar (Thu 29 January 2015 08:03)
Hors ligne
#6 Thu 29 January 2015 09:34
Re: QGIS : jointure de table et calculatrice de champ
Bonjour,
C'est un problème de type de champs. En fait il faut que tous les champs soient en float, si un seul est un integer, je résultat le sera aussi. Donc 0.45 deviendra 0
Hors ligne
#7 Thu 29 January 2015 09:51
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3885
Re: QGIS : jointure de table et calculatrice de champ
Bonjour,
En fait il faut que tous les champs soient en float, si un seul est un integer, le résultat le sera aussi.
Il me semble que c'est plutôt si tous les champs sont entiers que le résultat le reste (la méthode de calcul assez particulière de Python à laquelle je faisais référence dans mon premier message). Ce qui est le cas ici. Il faut donc changer le type d'au moins une variable soit quelque chose comme
Code:
toreal ("POPU_2006"-"POPU_1951")/"POPU_1951"
Dernière modification par SANTANNA (Thu 29 January 2015 09:51)
Hors ligne
#8 Thu 29 January 2015 14:14
- Wilcar
- Participant actif
- Lieu: Nantes
- Date d'inscription: 25 Apr 2014
- Messages: 82
Re: QGIS : jointure de table et calculatrice de champ
Bonjour,
Merci, cela fonctionne! Que signifie la fonctionTOREAL?
Enfin, quelques remarques à confirmer car je peux meme tromper): Avant de réaliser cet ajout de champ, il m’apparait nécessaire de créer un nouveau SHAPE à partir des couches liées (GEOFLA + données historiques). Dans le cas contraire, Qgis ne peut que créer un champ virtuel et il n'est pas possible d’utiliser la symbologie catégorisée.
cordialement
Wilcar
Dernière modification par Wilcar (Thu 29 January 2015 19:05)
Hors ligne
#9 Thu 29 January 2015 14:31
- Benoit91
- Participant assidu
- Date d'inscription: 2 Oct 2008
- Messages: 263
Re: QGIS : jointure de table et calculatrice de champ
Bonjour
TOREAL (lire to real) permet de "convertir" les données integer en données "réel" (nombre décimal)
Cordialement
Hors ligne
#10 Thu 29 January 2015 14:56
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3885
Re: QGIS : jointure de table et calculatrice de champ
Toreal est une fonction disponible dans la catégorie "Conversion" de la fenêtre de saisie de l'expression. Elle a pour but de convertir en décimal la valeur qui lui est passée. Pas que les entiers d'ailleurs, on peut aussi lui passer du texte pour autant que ce puisse être pris pour un nombre : ex des code_insee qui sont en réalité du texte dans nos BD.
Par contre, je ne suis pas d'accord avec ta remarque sur la création d'un nouveau champ ni pour la symbologie. Après avoir fait une jointure, Je viens à l'instant de créer un nouveau champ en dur dans ma couche (résultat d'opérations utilisant des champs joints) et ai appliqué une symbologie catégorisé sur un des champs joints. Sans souci...
J'avais remarqué que dans les images jointes que t'as envoyées, c'est le champ virtuel qui était coché mais tu dois pouvoir prendre un champ en dur sans souci.
Dernière modification par SANTANNA (Thu 29 January 2015 15:00)
Hors ligne
#11 Thu 29 January 2015 19:11
- Wilcar
- Participant actif
- Lieu: Nantes
- Date d'inscription: 25 Apr 2014
- Messages: 82
Re: QGIS : jointure de table et calculatrice de champ
Merci pour toutes ces précisions!
Je pense avoir trouvé l'explication à ce problème de champ virtuel - champ en dur: j'avais réalisé une requête sur la geofla avant d’entreprendre la jointure...
Cordialement
Wilcar
Hors ligne
#12 Fri 30 January 2015 17:51
- Wilcar
- Participant actif
- Lieu: Nantes
- Date d'inscription: 25 Apr 2014
- Messages: 82
Re: QGIS : jointure de table et calculatrice de champ
Désolé mais...
Le problème des valeurs aberrantes se produit avec un nouveau jeu de données et ce, malgré l’utilisation de la fonction TOREAL...
Le problème de transtypage (INTEGER=>REAL) demeure et la fonction toreal ne semble pas fonctionner...
Je souhaite calculer la part de commune sans ecoles (cf ma capture)=> 0,000
Je travaille sur 2 tables jointes. Champs INTEGER
Dernière modification par Wilcar (Sat 31 January 2015 11:22)
Hors ligne
#13 Sat 31 January 2015 11:59
- Wilcar
- Participant actif
- Lieu: Nantes
- Date d'inscription: 25 Apr 2014
- Messages: 82
Re: QGIS : jointure de table et calculatrice de champ
Au final, j'ai trouvé une réponse à mon problème
1) Réaliser le trans-typage dans le tableur (Calc)
=> Formater les cellules nombre=>ajout de deux décimales
2) dans Qgis
2.1 Les champs importés prennent le format de type double(0,0)
2.2 calculatrice de champ: calcul de pourcentage à l'aide de la fonction toreal
Dernière modification par Wilcar (Sun 01 February 2015 13:41)
Hors ligne