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

State Of The Map 2024

#1 Fri 08 August 2014 11:41

snaileater
Participant actif
Date d'inscription: 5 Nov 2008
Messages: 121

QGIS 2.2 / Python : Modification d'attributs dans une memory layer ...

Bonjour,
je cherche à mettre à jour des attributs dans une memory Layer.
je pars des exemples "standards" que l'on trouve dans le CookBook (...)

J'ai défini la table en python de la façon suivante :

Code:

vl=QgsVectorLayer('Polygon','test','memory')
pro = vl.dataProvider()
bFlag1=pro.addAttributes([QgsField("nom", QVariant.String)])

j'y mets un objet géographique sans souci.

je cherche à mettre à jour l'attribut "nom" de la façon suivante :

Code:

bFlag3=vl.changeAttributeValue(fet.id(),0,'hello')

ou comme cela :

Code:

attrs = { 0 : "hello"}
bFlag3=vl.dataProvider().changeAttributeValues({ fet.id() : attrs })

Dans les deux cas la valeur retournée du booléen est bien True mais je ne vois aucun changement de valeur dans ma table.

Je fais un commitChanges() dans tous les cas.

Quand j'applique ce code aux autres couches de mon projet (qui ne sont pas des memory layers) je n'ai pas de problème (le contenu des tables se met bien à jour...)

Par la suite je me suis aperçu que je n'étais pas en mesure (dans l'interface de QGIS) de modifier manuellement les attributs de cette memory layer (créee par le code) ...

Quelqu'un peut-il m’indiquer ou se situe l'astuce ? (pb de droits, autre ... ?)

Merci d'avance.

Hors ligne

 

Pied de page des forums

Powered by FluxBB