Mã tuyệt vời, tuy nhiên điều này chỉ hoạt động cho lớp đã chọn và chỉ in nó. Với một số trợ giúp từ các bài đăng khác và Joseph tôi đã biến nó thành một mã bổ sung một thuộc tính cho tất cả các lớp trong dự án của bạn với độ dài.
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 )