Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 08 March 2024 08:57

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

QGIS 3.28/PYQGIS: Probl pour rajouter une valeur d attribut

Bonjour,

Désolé, mais je n'ai rien trouvé qui pourrait m'aider

Je dispose d'un couche mémoire dans laquelle, je rajoute un attribut (cela fonctionne), et quand je lit la table d'attribut, l'attribut VALREP a bien été rajouté et sa valeur est NULL.

Maintenait je fais une boucle sur une liste d'entité et pour chaque entité, je veux renseigner VALREP par "TOUS" ou bien par la valeur de l'attribut contenu dans la variable attribut

Ca ne fonctionne pas, VALREP est toujours à NULL et j'ai un message d'erreur
   

Code:

         print (feat["VALREP"])
             KeyError: 'VALREP'

Voici un extrait de code


Code:

layer.dataProvider().addAttributes([QgsField('VALREP',QVariant.String)])
   layer.updateFields()
   
   QgsProject.instance().addMapLayer(layer)
   
   idx = layer.dataProvider().fieldNameIndex('VALREP')
   print (idx)
   for feat in liste:
      layer.dataProvider().addFeatures([feat])
      if (attribut == "TOUS"):
          val = "TOUS"
      else:
         val = feat[attribut]
      attrs = { idx : val }
      print(attrs)
      print (feat["TYPVOIE"])
      layer.dataProvider().changeAttributeValues({feat.id(): attrs})
      layer.updateFeature(feat)
      print (feat["VALREP"])

pour info, j'ai aussi essayer avec

Code:

feat["VALREP"] = "ma_valeur"

Sans résultat non plus


VALREP est le 2ème attribut

Code:

Avec feat[1] = val
KeyError: '1'

Si vous aves une idée, je suis rapidement preneur

Pour info, j'ai regardé dans des exemples sur internet, et ce que j'ai mis en place, pour moi, ne devrait pas poser de problème ;-) mais je ne vois pas l'erreur de code.


Merci et bonne journée, PYJ

Dernière modification par pyjoubert (Mon 11 March 2024 10:57)

Hors ligne

 

#2 Fri 08 March 2024 09:08

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

Re: QGIS 3.28/PYQGIS: Probl pour rajouter une valeur d attribut

Pour completer, voici un extrait de maliste d'entités.

Code:

[<qgis._core.QgsFeature object at 0x000001C2C57D2DC0>, <qgis._core.QgsFeature object at 0x000001C2C57D2E50>, <qgis._core.QgsFeature object at 0x000001C2C57D2EE0>, <qgis._core.QgsFeature object at 0x000001C2C57D2F70>, <qgis._core.QgsFeature object at 0x000001C2C57D2040>, <qgis._core.QgsFeature object at 0x000001C2C6427310>, <qgis._core.QgsFeature object at 0x000001C2C6427160>, <qgis._core.QgsFeature object at 0x000001C2C6427280>, <qgis._core.QgsFeature object at 0x000001C2C64271F0>

Hors ligne

 

#3 Thu 14 March 2024 09:32

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

Re: QGIS 3.28/PYQGIS: Probl pour rajouter une valeur d attribut

Bonjour,
C'était une erreur de code de ma part, je rajoutais l'attribut VALREP dans ma nouvelle couche temporaire, mais je le relisais sur ma couche initiale
Mea Culpa

Problème résolu

Hors ligne

 

Pied de page des forums

Powered by FluxBB