Suite

PyQgis - Ajout d'attributs à une couche POSTGIS


Après avoir lu la réponse de @underdark à cette question sur la création d'une nouvelle couche vectorielle et celle de @Matthias Kuhn à celle-ci sur le calcul sur le terrain, j'ai écrit un script qui me permet de calculer le temps moyen d'arrivée sur place pour les services d'intervention d'urgence par cellule d'un grille, même si certaines de mes valeurs sont nulles.

Pas :

  1. Ajouter des attributs dans lesquels calculer la moyenne
  2. Additionner les temps moyens d'arrivée par an (je travaille sur 5 ans)
  3. Obtenir le nombre d'années pour lesquelles la valeur n'est pas nulle
  4. Diviser la somme par le nombre de valeurs non nulles

Mon problème est le suivant :

Le script fonctionne bien sur les couches OGR, mais pas sur les couches Postgres. Je ne reçois aucune erreur, mais rien ne se passe lorsque j'essaie d'ajouter des champs, ce qui est ma première étape. Donc maintenant, je dois enregistrer ma couche postgres en tant que .shp sur mon ordinateur pour faire les traitements que je veux. Qui ne sont donc pas automatiquement enregistrés dans ma base de données…

Voici le début de mon script (la partie qui crée de nouveaux attributs) :

depuis qgis.core import * import qgis.utils depuis PyQt4.QtCore import * # chemin d'accès toqgis QgsApplication.setPrefixPath("C:Program Files (x86)QGIS Wien", True) # charger le fournisseur QgsApplication.initQgis() qgis. utils.iface # définir la couche active clayer = qgis.utils.iface.activeLayer() provider = clayer.dataProvider() # démarrer le mode d'édition clayer.startEditing() # ajouter de nouveaux champs caps = provider.capabilities() if caps & QgsVectorDataProvider. AddAttributes : res = provider.addAttributes([QgsField("quotient", QVariant.Int), QgsField("moy", QVariant.Int)]) clayer.updateFields()

Y a-t-il une ligne de code pour indiquer que je veux/ai le droit de modifier ma couche postgres ?

Les questions les plus similaires que j'ai pu trouver - celle-ci et celle-ci - n'ont pas trouvé de solution.

Je dois dire que je suis nouveau sur PyQgis, donc si vous avez la gentillesse de répondre, veuillez expliquer votre suggestion aussi clairement que possible.


Voir la vidéo: QGIS using Python Programming for Beginners (Octobre 2021).