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

Rencontres QGIS 2025

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

#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

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB