मैं एक नए क्षेत्र को जोड़ने और प्रत्येक सुविधा के लिए मूल्यों की गणना करने के लिए PyQGIS का उपयोग करना चाहता हूं। फ़ील्ड कैलकुलेटर विकल्प के समान।
उदाहरण के लिए मेरा 'फील्ड कैलकुलेटर' अभिव्यक्ति है: 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()
यह मुझे मिलने वाली त्रुटि है:
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'