Voglio usare PyQGIS per aggiungere un nuovo campo e calcolare i valori per ogni funzione. Simile all'opzione Field Calculator.
La mia espressione "Field Calculator" è ad esempio: 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()
Questo è l'errore che ottengo:
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'