[Qgis-user] pyQGIS - set attributes by expression

Wouter Impens wouter.impens at gmail.com
Tue Mar 5 06:36:31 PST 2019


A very late thank you Nyall, but indeed this works. Maybe it can be added
to the PYGIS Cookbook documentation?

Cheers
Wouter

Op do 7 feb. 2019 om 08:08 schreef Nyall Dawson <nyall.dawson at gmail.com>:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20190305/c284004b/attachment.html>


More information about the Qgis-user mailing list