bonjour,

j'ai réussi à afficher une vue crée sur postgresql à partir de qgis en utilisant code python:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
uri = QgsDataSourceURI()
uri.setConnection("localhost", "5432", "stat", "postgres", "admin")
uri.setDataSource("public", "view2", "the_geom", ' ',"gid")
uri.uri()
qgis.utils.iface.addVectorLayer(uri.uri(), "allcountries", "postgres")
maintenant je veux afficher cette vue avec une symbologie (classes), j'ai cherché beaucoup mais c'était pas claire.
exemple: j'ai tenté de le faire avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
myVectorLayer = QgsVectorLayer("polygon", "mypoly", 'ogr')
myTargetField = 'code'
myRangeList = []
myOpacity = 1
# Make our first symbol and range...
myMin = 0.0
myMax = 50.0
myLabel = 'Group 1'
myColour = QtGui.QColor('#ffee00')
mySymbol1 = QgsSymbolV2.defaultSymbol(myVectorLayer.geometryType())
mySymbol1.setColor(myColour)
mySymbol1.setAlpha(myOpacity)
myRange1 = QgsRendererRangeV2(myMin,myMax,mySymbol1,myLabel)
myRangeList.append(myRange1)
#now make another symbol and range...
myMin = 50.1
myMax = 100
myLabel = 'Group 2'
myColour = QtGui.QColor('#00eeff')
mySymbol2 = QgsSymbolV2.defaultSymbol(
           myVectorLayer.geometryType())
mySymbol2.setColor(myColour)
mySymbol2.setAlpha(myOpacity)
myRange2 = QgsRendererRangeV2(myMin,myMax,mySymbol2,myLabel)
myRangeList.append(myRange2)
myRenderer = QgsGraduatedSymbolRendererV2('', myRangeList)
myRenderer.setMode(QgsGraduatedSymbolRendererV2.EqualInterval)
myRenderer.setClassAttribute(myTargetField)
 
myVectorLayer.setRendererV2(myRenderer)
QgsMapLayerRegistry.instance().addMapLayer(myVectorLayer)
ça donne une erreur: "mySymbol1.setColor(myColour)
AttributeError: 'NoneType' object has no attribute 'setColor'"

merci à votre aide ou indication.