Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

 

Pied de page des forums

Powered by FluxBB