1 votos

Modificación de los valores de los atributos de las características seleccionadas mediante PyQGIS

Estoy seleccionando las características por "Property_T" y su atributo es 'Open Land' y quiero añadir algún atributo a "SS" para el mismo registro. ¿Qué ocurre?

from PyQt5.QtCore import QVariant

fn = "D:\Practice\Parcels.shp"
layer = iface.addVectorLayer(fn, '', 'ogr')

caps = layer.dataProvider().capabilities()

if caps & QgsVectorDataProvider.AddAttributes:
    res = layer.dataProvider().addAttributes([QgsField('SS', QVariant.String)])
    layer.updateFields()

query = "Property_T = 'Open Land'"
selection = layer.getFeatures(QgsFeatureRequest().setFilterExpression(query))
layer.selectByIds([s.id() for s in selection])
iface.mapCanvas().setSelectionColor(QColor('Blue'))

features = layer.selectedFeatures()

for feat in features:
    if feat['Property_T'] == 'Open Land':
        with edit(layer):
            feat['SS'] = 'RR'
            layer.updateFeature(feat)

3voto

ARUNBALAN NV Puntos 101

Otra opción es trabajar con el selectedFeatureIds() y changeAttributeValue() métodos de la QgsVectorLayer clase.

ss_idx = layer.fields().lookupField('SS') #index of the "SS" field

with edit(layer):
    for feat_id in layer.selectedFeatureIds():
        layer.changeAttributeValue(feat_id, ss_idx, 'RR')

Referencias:

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X