Suite

Comment connecter le paramètre d'entrée à l'algorithme du calculateur de champ dans le modélisateur graphique ?

Comment connecter le paramètre d'entrée à l'algorithme du calculateur de champ dans le modélisateur graphique ?


Je construis un modèle dans le modélisateur graphique de QGIS 2.8.1 Wien et j'aimerais donner la possibilité à l'utilisateur d'entrer un nombre dans le modèle avec lequel un champ sélectionné sera multiplié, mais je ne peux pas comprendre comment me connecter le paramètre pour l'entrée utilisateur dans l'algorithme du calculateur de champ.

Des idées à ce sujet ?


Au lieu d'utiliser l'outil Calculatrice de champ, une solution de contournement possible consiste à créer un script personnalisé qui permet à l'utilisateur de choisir un champ d'attribut et de le mettre à jour avec une valeur qu'il a saisie.

Pour ce faire, rendez-vous sur Boîte à outils de traitement > Scripts > Outils > Créer un nouveau script et copiez ce qui suit :

## Mettre à jour le champ par numéro=nom ##Layer=vector ##Fields=Field Layer ##Number=number 0 from qgis.core import QgsExpression layer = processing.getObject(Layer) layer.startEditing() idx = layer.fieldNameIndex( Fields) n = str(Number) i = str(Fields) e = QgsExpression(n + '*' + i) e.prepare(layer.pendingFields()) pour f dans layer.getFeatures() : f[idx] = e.evaluate(f) layer.updateFeature(f) layer.commitChanges()

Enregistrez le script dansC:/Users/You/.qgis2/processing/scripts. Vous aurez besoin de 3 paramètres :

  • Couche - Couche vectorielle
  • Champ - Champ Table
  • Nombre - Nombre

Ajoutez ensuite le script de la liste des algorithmes à votre modèle. Utilisez le Algorithmes parents option si vous souhaitez que ce script s'exécute après un outil spécifique (c'est-à-dire à la fin du modèle). :


J'ai fait un test simple où je veux mettre à jour leidentifiantchamp en entrant5dans le Nombre paramètre. Voici la table attributaire initialement :

Paramétrage et exécution du modèle :

Résultat:


Voir la vidéo: ML - Données manquantes - Encodage variables qualitatives - Echantillonnage aléatoire - Python 22