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 Thu 23 April 2015 15:50

Sam_Dalembert
Participant actif
Lieu: Mérignac
Date d'inscription: 5 Aug 2009
Messages: 121

QGIS 2.8 & PyQGIS : mise à jour champ avec surface calculée

Bonjour à tous,



Malheureusement je n'y connais rien en python, donc j'essaye de reprendre des bouts de code par-ci par-là...forcément c'est compliqué smile
Alors quand en plus ce qui me semble logique ne fonctionne pas, c'est TRÈS compliqué ! sad

Quand j'affiche la surface calculée de tous les polygones de ma couche active, ça fonctionne :

Code:

import processing
layer = qgis.utils.iface.activeLayer()
features = layer.getFeatures()
for feature in features:
    geom = feature.geometry()
    print "Area:", geom.area()

Mais quand je veux mettre à jour mon champ avec -quasiment- le même code, ça ne fonctionne pas :

Code:

import processing
layer = qgis.utils.iface.activeLayer()
features = layer.getFeatures()
for feature in features:
    geom = feature.geometry()
    attrs = feature.attributes()
    caps = layer.dataProvider().capabilities()
    if caps & QgsVectorDataProvider.ChangeAttributeValues:
        attrs = { 17 : geom.area() }
        layer.dataProvider().changeAttributeValues({ 255:attrs,})

Quand je mets un nombre comme attribut (à la place de geom.area() ), ça fonctionne. Mais avec la surface calculée, ça ne fonctionne pas...
Comment faire ? sad
J'ai beau chercher dans les tutoriels, sur google, je ne trouve rien sur la mise à jour d'un champ avec une géométrie calculée.


Merci pour vos réponses.

Hors ligne

 

#2 Sat 25 April 2015 21:04

bidounight
Participant occasionnel
Date d'inscription: 17 Mar 2010
Messages: 27

Re: QGIS 2.8 & PyQGIS : mise à jour champ avec surface calculée

Le "Et" logique en python s'écrit "and" et non pas "&". De là à ce que le code marche, il y a peut-être d'autres pas. smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB