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 :
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.
أكثر...
Steps :
- Add attributes in which to calculate mean
- Sum the average times of arrival per year (I'm working on 5 years)
- Get the number of years for which value is not null
- Divide sum by number of not-null-values
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.
أكثر...