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é ?

#1 Sun 10 January 2021 09:35

Claire15
Juste Inscrit !
Date d'inscription: 26 Dec 2020
Messages: 1

QGIS/Pyqgis: attribuer une liste (int) a un nouveau champ ?

Bonjour, je viens de me lancer dans le script python et pour la première fois je dois l’utiliser au travers de qgis…
Voila mon problème : j’aimerais attribuer une liste (int) à un champ que je viens de créer je pense être sur la bonne voie seulement à chaque fois que je lance mon script et que je vérifie ma table attributaire, le champ « myint » n’est pas remplis par ma liste mais par NULL ..
J’ai éplucher cookbook plusieurs fois mais je suis toujours perdu …

Voici mon code :

import os

#selectionner la couche active
layer = iface.activeLayer()

#définir la variable nom pour la colonne nom_zone
liste=[]
for feature in layer.getFeatures():
Nom=feature[‘Nom’]
a = Nom.count(« a »)
o = Nom.count(« o »)
i = Nom.count(« i »)
u = Nom.count(« u »)
y = Nom.count(« y »)
e = Nom.count(« e »)
x = [a,i,o,u,y,e]
m=max(x)
s=x.index(m)
liste.append(s)
print(liste)

#début de l’édition de la couche
layer.startEditing()

from qgis.PyQt.QtCore import QVariant

if caps & QgsVectorDataProvider.AddAttributes:
res = layer.dataProvider().addAttributes(
[QgsField(« myint », QVariant.Int)])
layer.updateFields()

id_new_col=layer.dataProvider().fieldNameIndex(« myint »)

#ajout de la variable
for feature in layer.getFeatures():
layer.changeAttributeValue(feature.id(), id_new_col,liste )

#update de la modif
layer.commitChanges()

Hors ligne

 

#2 Sun 10 January 2021 20:59

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS/Pyqgis: attribuer une liste (int) a un nouveau champ ?

Bonsoir,
la plupart des provider ne permettent pas d’ajouter une liste dans un champ entier donc ce que vous voulez faire a priori n’est pas possible.
Pour tricher vous pouvez utiliser un champ texte et transformer votre liste en texte avec la fonction str

Hors ligne

 

Pied de page des forums

Powered by FluxBB