[Qgis-user] pyQGIS - set attributes by expression

Nyall Dawson nyall.dawson at gmail.com
Wed Feb 6 23:08:15 PST 2019


On Wed, 6 Feb 2019 at 18:14, Wouter Impens <wouter.impens at gmail.com> wrote:
>> > I'm trying to iterate over the fields of a vector layer (using the index) and fill in the values by an expression
>> >
>> >  my_features = a_layer.getFeatures()
>> >     for a_feat in my_features:
>> >         mijn_index = a_feat.fieldNameIndex('perc_nr')
>> >         value = an_expr

Change this to:

my_features = a_layer.getFeatures()
context = QgsExpressionContext()
for a_feat in my_features:
    mijn_index = a_feat.fieldNameIndex('perc_nr')
    context.setFeature(a_feat)
    value = an_expr.evalute(context)
    ...

Nyall


>>
>> What's "an_expr" here? Is it a QgsExpression object?
>>
>> Nyall
>>
>> >          a_feat.setAttribute(mijn_index, value)
>> >
>> >     a_layer.commitChanges()
>> >
>> > I don't get an error but nothing is filled in. I evaluated the expression and it's true. It also works in the field calculator.
>> >
>> > Anyone an idea?
>> >
>> >
>> > Kind regards
>> > Wouter
>> > _______________________________________________
>> > Qgis-user mailing list
>> > Qgis-user at lists.osgeo.org
>> > List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
>> > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user


More information about the Qgis-user mailing list