Pages: 1
- Sujet précédent - QGIS : ajouter une légende à un shapefile à l'aide Pyscripter & biblio - Sujet suivant
#1 Tue 28 April 2015 09:42
- nora 27
- Participant actif
- Date d'inscription: 15 Jul 2014
- Messages: 59
QGIS : ajouter une légende à un shapefile à l'aide Pyscripter & biblio
Bonjour à tous,
Je travaille actuellement sous PyScripter pour but d'afficher un fichier vecteur avec sa symbologie et sa légende.
j'ai réussi à visualiser le fichier avec la symbologie par le code suivant:
Code:
def main():
def init():
# appel de l'application et initialisation
a = QgsApplication(sys.argv, True)
QgsApplication.setPrefixPath("C:/OSGeo4W/apps/qgis", True)
QgsApplication.initQgis()
return a
def show_shape(app):
# definition a connection
uri = QgsDataSourceURI()
uri.setConnection("localhost", "5432", "stat", "postgres", "admin")
uri.setDataSource("public", "com", "the_geom", ' ', "gid")
uri.uri()
# création d'une fenêtre et chargement d'une couche
carte = QgsMapCanvas()
layer=QgsVectorLayer(uri.uri(), 'com', 'postgres')
if not layer.isValid():
print "Layer failed to load!"
# add layer to the registry
QgsMapLayerRegistry.instance().addMapLayer(layer)
carte.setExtent(layer.extent())
# affichage de la couche dans une fenêtre
carte.setLayerSet( [ QgsMapCanvasLayer(layer) ] )
carte.show()
#personnaliser la symbologie
myTargetField = 'code'
myRangeList = []
myOpacity = 1
# Make our first symbol and range...
myMin = 0.0
myMax = 100.0
myLabel = '0.0-200'
myColour = QtGui.QColor('white')#ffee00
mySymbol1 = QgsSymbolV2.defaultSymbol(layer.geometryType())
mySymbol1.setColor(myColour)
mySymbol1.setAlpha(myOpacity)
myRange1 = QgsRendererRangeV2(myMin,myMax,mySymbol1,myLabel)
myRangeList.append(myRange1)
#now make two symbol and range...
myMin = 100.1
myMax = 102
myLabel = '200.1-500'
myColour = QtGui.QColor('yellow')#00eeff
mySymbol2 = QgsSymbolV2.defaultSymbol(layer.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)
layer.setRendererV2(myRenderer)
QgsMapLayerRegistry.instance().addMapLayer(layer)
print "fine"
app.exec_()
app = init()
show_shape(app)
if __name__ == "__main__":
main()Mais je rencontre une difficulté à afficher une légende, après une recherche je me trouve devant le code ci-dessous que je n'arrive pas à le comprendre:
Code:
# display legend legend = QgsComposerLegend(c) legend.model().setLayerSet(mapRenderer.layerSet()) c.addItem(legend)
Est ce que vous pouvez m'expliquer ou m'aider sur ce sujet?
Je vous remercie d'avance.
Hors ligne
Pages: 1
- Sujet précédent - QGIS : ajouter une légende à un shapefile à l'aide Pyscripter & biblio - Sujet suivant


