Kode yang bagus, namun ini hanya berfungsi untuk lapisan yang dipilih dan hanya mencetaknya. Dengan bantuan dari posting lain dan Joseph saya mengubahnya menjadi kode yang menambahkan atribut ke semua lapisan dalam proyek Anda dengan panjangnya.
from PyQt4.QtCore import QVariant
for layer in QgsMapLayerRegistry.instance().mapLayers().values():
features = layer.getFeatures()
for f in features:
geom = f.geometry()
leng = geom.length()
res = layer.dataProvider().addAttributes([QgsField("Length", QVariant.Int)])
layer.updateFields()
fieldIndex = layer.dataProvider().fieldNameIndex( "Length" )
attrFeatMap = {}
attrMap = { fieldIndex : leng }
for feature in layer.getFeatures():
attrFeatMap[ feature.id() ] = attrMap
layer.dataProvider().changeAttributeValues( attrFeatMap )