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