Suite

Comment définir le nombre de décimales lors de l'ajout d'un nouveau champ en tant que double à une table attributaire avec python dans Qgis 2.1?


Comment changer l'expression pour définir le nombre de décimales ?

layer.dataProvider().addAttributes([QgsField("fieldname", QVariant.Double)])

Comme je l'ai lu dans la documentation de l'API QGIS :

Paramètres name Type de nom de champ Type de variante de champ, actuellement pris en charge : String / Int / Double typeName Type de champ (par ex. char, varchar, text, int, serial, double). len Longueur du champ prec Précision du champ

Alors j'essaye :

layer.dataProvider().addAttributes([QgsField("fieldname", QVariant.Double, 10, 3)])

Mais j'obtiens cette erreur :

TypeError : les arguments ne correspondent à aucun appel surchargé : QgsField(QString name=QString(), Type type=QVariant.Invalid, QString typeName=QString(), int len=0, int prec=0, QString comment=QString()) : l'argument 3 a un type inattendu 'int' QgsField(QgsField): l'argument 1 a un type inattendu 'str'

Essayer:

layer.dataProvider().addAttributes([QgsField("fieldname", QVariant.Double, "double", 10, 3)])

C'est la correction qui suggère le message d'erreur.

Je l'ai utilisé dans mon système pour ajouter deux champs (surface et périmètre) dans la table des attributs de mon fichier de formes et cela fonctionne.

Mon code coupé

… champs = [ QgsField('zone', QVariant.Double, 'double', 20, 2), QgsField('périmètre', QVariant.Double, 'double', 10, 3) ]…

La table des attributs de mon shapefile :


Voir la vidéo: QGIS Python PyQGIS - Calculate Field Values Field Calculator (Octobre 2021).