Eu quero usar o PyQGIS para adicionar um novo campo e calcular os valores para cada recurso. Semelhante à opção Calculadora de campo.
Minha expressão 'Calculadora de campo' é, por exemplo: y(start_point($geometry))
from PyQt4.QtCore import QVariant
from qgis.core import QgsField, QgsExpression, QgsFeature
vl = iface.activeLayer()
vl.startEditing()
#step 1
myField = QgsField( 'myNewColumn', QVariant.Float )
vl.addAttribute( myField )
idx = vl.fieldNameIndex( 'myNewColumn' )
#step 2
e = QgsExpression( 'y(start_point($geometry))' )
e.prepare( vl.pendingFields() )
for f in vl.getFeatures():
f[idx] = e.evaluate( f )
vl.updateFeature( f )
vl.commitChanges()
Este é o erro que recebo:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/var/folders/0r/q6nxg6w54fv4l7c8gksb2t500000gn/T/tmp9dosIe.py", line 30, in <module>
f[idx] = e.evaluate( f )
KeyError: '-1'