Conditions dans le calculateur de champ du modélisateur

9

Je veux vérifier un fichier vectoriel s'il y a une colonne "Source".

Si oui, rien à faire. S'il n'y a pas de colonne "Source", elle doit être créée et remplie avec "0".

Est-ce possible de le faire via le modeleur?

Pimpel
la source

Réponses:

10
  1. Créez un nouveau script à partir de:

    Processing Toolbox > Scripts > Tools > Create new script
    
  2. Utilisez quelque chose comme ceci:

    ##Example=name
    ##Layer=vector
    
    from qgis.core import QgsField
    from PyQt4.QtCore import QVariant
    
    layer = processing.getObject(Layer)
    idx = layer.fieldNameIndex('Source')
    
    if idx != -1:
        pass
    else:
        layer.startEditing()
        layer.dataProvider().addAttributes( [ QgsField("Source", QVariant.Int) ] )
        layer.updateFields()
        for feat in layer.getFeatures():
            layer.changeAttributeValue(feat.id(), layer.fieldNameIndex('Source'), '0')
        layer.commitChanges()
    
  3. Enregistrez le script dans votre C:/Users/You/.qgis2/processing/scripts/répertoire. Vous devriez alors pouvoir appeler ce script dans votre modeleur.

Joseph
la source
1
@Pimpel - Très bienvenu, heureux que cela ait aidé =)
Joseph