#1 Wed 28 July 2021 22:01
- Will987
- Participant occasionnel
- Date d'inscription: 23 Jul 2021
- Messages: 12
QGIS: Probleme Python
Bonjour,
j'essaie de coder une fonction python pour l'exécuter dans un champs virtuel QGIS.
voici mon code /
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def my_int_res(value1, value2, feature, parent):
a = float()
a = 0
a1 = float()
a1 = 0
b = float()
b = 0
for i in range(value2):
if value1[i] == 1:
a = a+value2[i]
a1 = a
else:
a1 = b
return a1
Pourriez-vous me dire, qu'est ce qu'il manque pour que ça fonctionne sur QGIS ?
Je vous remercie d'avance
Hors ligne
#2 Thu 29 July 2021 08:00
Re: QGIS: Probleme Python
Bonjour,
La fonction range prend un entier en argument, mais value2[i] laisse penser que value2 est une liste...
Code:
for i in range(len(value2)):
Dernière modification par SIGEAL (Thu 29 July 2021 08:01)
Christophe Damour (SIGéal)
Hors ligne
#3 Thu 29 July 2021 13:37
- Will987
- Participant occasionnel
- Date d'inscription: 23 Jul 2021
- Messages: 12
Re: QGIS: Probleme Python
Oui, mais lorsque je modifie ça m'affiche ce resultat :Erreur d'évaluation: object of type 'float' has no len()
Je veux que la fonction prenne en argument un entier et un réel
Voiçi un exemple en python de ce que je veux réaliser :
"""tab & phase sont les attributs que je veux prendre en argument"""
tab = [5.5,8.5,9.9,6.3]
phase = [1,1,1,2]
"""Var Intensité Res"""
a = 0
a1 = 0
a2 = 0
"""Constante NULL"""
b = 0
"""I-Res-P1"""
for i in range(len(tab)):
if phase[i] == 1:
a=a+tab[i]
print(a)
else:
print(b)
Resultat :
5.5
14.0
23.9
0
Voilà je veux juste en faire une fonction sur QGIS
Hors ligne
#4 Fri 30 July 2021 07:19
Re: QGIS: Probleme Python
Bonjour,
C'est difficile de t'aider si tu n'expliques pas plus précisément ton problème : que se passe-t-il lorsque tu lances ta fonction dans QGIS ?
Christophe Damour (SIGéal)
Hors ligne
#5 Fri 30 July 2021 14:13
- Will987
- Participant occasionnel
- Date d'inscription: 23 Jul 2021
- Messages: 12
Re: QGIS: Probleme Python
Elle ne fonctionne pas sur QGIS car c'est un code en Python.
Je ne sais pas comment le retranscrire sur QGIS. C'est pourquoi j'ai publié précédemment ce que doit faire la fonction en python .
Ma fonction devrait permettre de prendre deux colonnes (attributs) d'une table en argument (PHASE, I-Lum) et faire une somme récursive à chaque champs de l'attribut I-Lum, à condition que dans ce champ l'attribut PHASE = 1.
Vous pouvez voir ci-joint une image qu'il illustre sous format Excel ce que je veux produire. Sur cette feuille, il y a une colonne qui s'appelle I-Res-P1 et c'est cette colonne que la fonction doit calculer.
Voilà en espérant avoir été plus clair, j'espère que vous pourrez m'aider.
Hors ligne