PyQgis - Adding attributes to a POSTGIS layer

المشرف العام

Administrator
طاقم الإدارة
After reading @underdark's answer to this question on creating a new vector layer and @Matthias Kuhn's to this one on field calculation, I wrote a script that allows me to calcultate the mean arrival-on-scene time for emergency response services per cell of a grid, even thought some of my values are null.

Steps :

  1. Add attributes in which to calculate mean
  2. Sum the average times of arrival per year (I'm working on 5 years)
  3. Get the number of years for which value is not null
  4. Divide sum by number of not-null-values
My problem is as follows :

The script works fine on OGR layers, but not on Postgres layers. I don't get any errors, but nothing happens when I try to add fields, which is my first step. So right now I have to save my postgres layer as a .shp on my computer to do the treatments I want. Which therefore don't automatically get saved in my database...

Here is the beginning of my script (the part that creates new attributes) :

from qgis.core import *import qgis.utilsfrom PyQt4.QtCore import *# supply path toqgisQgsApplication.setPrefixPath("C:\Program Files (x86)\QGIS Wien", True)# load providerQgsApplication.initQgis()qgis.utils.iface# set active layerclayer = qgis.utils.iface.activeLayer()provider = clayer.dataProvider()# start editing modeclayer.startEditing()# add new fieldscaps = provider.capabilities()if caps & QgsVectorDataProvider.AddAttributes: res = provider.addAttributes([QgsField("quotient", QVariant.Int), QgsField("moy", QVariant.Int)])clayer.updateFields()Is there a code line to indicate I want/have rights to alter my postgres layer ?

The most similar questions I could find - this one and this one - didn't get a solution.

I should say I am new to PyQgis so if you are so kind as to answer please explain your suggestion as clearly as possible.



أكثر...
 
أعلى