Pages: 1
- Sujet précédent - QGIS/Pyqgis: attribuer une liste (int) a un nouveau champ ? - Sujet suivant
#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
Pages: 1
- Sujet précédent - QGIS/Pyqgis: attribuer une liste (int) a un nouveau champ ? - Sujet suivant