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 Fri 19 March 2021 17:50

jeremy SERIEYE
Participant occasionnel
Date d'inscription: 19 Mar 2021
Messages: 30

QGIS: Calculatrice de champs dans console python

Bonjour,

je cherche à intégrer le traitement "Calculatrice de champ" dans ma console python.

Je recherche le nom du traitement à utiliser de type :
          processing.run("qgis:xxxxxxx"

Merci!

Hors ligne

 

#2 Fri 19 March 2021 21:54

Olivier Pompier
Participant occasionnel
Date d'inscription: 8 Sep 2013
Messages: 49

Re: QGIS: Calculatrice de champs dans console python

Bonjour,

La liste des algorithmes peut être affichée via ce script

Code:

for alg in QgsApplication.processingRegistry().algorithms():
    print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName()))

Mais je pense pas que l'algorithme Calculatrice de champs existe, je me trompe peut être.

Hors ligne

 

#3 Fri 19 March 2021 23:59

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 948
Site web

Re: QGIS: Calculatrice de champs dans console python

Bonsoir,

Voici un recette sur comment mettre à jour en utilisant la calculatrice de champs mais il ne s'agit pas d'un traitement dans le module processing.

Code:

# En admettant que vous utilisiez la coucche que vous avez sélectionnée
vl = iface.activelayer()
# ou (décommenter ci-dessous et commenter au dessus)
# vl = QgsProject.instance().mapLayersByName('nom de votre couche')[0]
context = QgsExpressionContext()
context.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(vl))
# Mettre votre expression
votre_expression = 'numerateur/denominateur'
expression1 = QgsExpression(votre_expression)

with edit(vl):
    for f in vl.getFeatures():
        context.setFeature(f)
        f['new_col'] = expression1.evaluate(context)
        # ou
        # f['existing_col'] = expression1.evaluate(context)
        vl.updateFeature(f)

PS: j'ai repris ce tutoriel en anglais https://anitagraser.com/pyqgis-101-intr … ld-values/


Cordialement

Hors ligne

 

#4 Mon 22 March 2021 09:39

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3946

Re: QGIS: Calculatrice de champs dans console python

Bonjour,

Je recherche le nom du traitement à utiliser de type :
          processing.run("qgis:xxxxxxx"


Dans la boîte à outils traitements, amenez la souris au-dessus de l'algorithme que vous souhaitez utiliser, patientez un tout petit peu et vous verrez s'afficher son id.
Et pour info, "native" et "qgis" se valent. De mémoire, "native" sert juste (aux développeurs) à identifier que le code source de l'algorithme n'est plus en python mais a été porté en c++.

Hors ligne

 

#5 Mon 22 March 2021 10:59

jeremy SERIEYE
Participant occasionnel
Date d'inscription: 19 Mar 2021
Messages: 30

Re: QGIS: Calculatrice de champs dans console python

Merci à tous, j'ai bien trouvé l'ID cependant impossible de faire fonctionner ce dernier :




import processing

processing.run("qgis:fieldcalculator",{'INPUT': 'D:/couleur/test_couleur/lignes.shp','FIELD_NAME': 'toto','FIELD_TYPE': 2,'FIELD_LENGTH': 254,'FIELD_PRECISION': 3, 'NEW_FIELD': True, 'FORMULA': '$id+1','OUTPUT': 'memory' })




Vous trouverez en PJ les différents codes erreurs.

Dernière modification par jeremy SERIEYE (Mon 22 March 2021 10:59)


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

Hors ligne

 

#6 Mon 22 March 2021 14:27

antonio.andrade
Participant occasionnel
Date d'inscription: 9 Feb 2021
Messages: 17

Re: QGIS: Calculatrice de champs dans console python

Bonjour,

Après avoir testé avec QGIS 3.14, je pense qu'il manque un ":" après memory :

Code:

import processing

processing.run("qgis:fieldcalculator",{'INPUT': 'D:/couleur/test_couleur/lignes.shp','FIELD_NAME': 'toto','FIELD_TYPE': 2,'FIELD_LENGTH': 254,'FIELD_PRECISION': 3, 'NEW_FIELD': True, 'FORMULA': '$id+1','OUTPUT': 'memory:' })

Je n'ai pas d'explication sur la signification des ":"...

Antonio

Hors ligne

 

#7 Mon 22 March 2021 14:39

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3946

Re: QGIS: Calculatrice de champs dans console python

Autre astuce: menu Traitements --> Historique vous affiche la liste des commandes Python envoyées lorsque vous utilisez l'interface graphique pour exécuter des algorithmes. Il suffirait donc d'en lancer un avec les paramètres voulus puis recopier l'expression et adapter/appliquer dans la console ou votre script...

Hors ligne

 

#8 Mon 22 March 2021 15:01

jeremy SERIEYE
Participant occasionnel
Date d'inscription: 19 Mar 2021
Messages: 30

Re: QGIS: Calculatrice de champs dans console python

Merci Antonio pour les ":" manquants.

Merci à toi aussi SANTANNA pour l'historique des commandes !

Hors ligne

 

Pied de page des forums

Powered by FluxBB