Pages: 1
- Sujet précédent - QGIS 2.8 & PyQGIS : mise à jour champ avec surface calculée - Sujet suivant
#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é
Alors quand en plus ce qui me semble logique ne fonctionne pas, c'est TRÈS compliqué !
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 ?
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.
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.8 & PyQGIS : mise à jour champ avec surface calculée - Sujet suivant