7 votos

Cómo agregar una leyenda a un lienzo en un independiente PyQGIS aplicación?

Estoy tratando de desarrollar un independiente PyQGIS aplicación. La visualización del mapa no suponen ningún problema, pero no sé cómo agregar una leyenda a la lona.

11voto

Elliott Maynard Puntos 11

Para complementar Luigi la respuesta, esta es la forma en que usted puede utilizar la Capa de la Vista de Árbol para añadir una leyenda y/o una tabla de contenido para su aplicación.

Después de crear tu lienzo en su independiente PyQGIS aplicación, usted necesita para crear un QgsLayerTreeView. Para eso, se necesita un modelo, y el modelo que necesita la capa de la raíz del árbol. Además, es necesario utilizar un QgsLayerTreeMapCanvasBridge para mantener tanto el mapa y el árbol en la sincronización. Todo esto se hace con el siguiente fragmento de código (tomado de esta Martin Dobias' post):

self.root = QgsProject.instance().layerTreeRoot()
self.bridge = QgsLayerTreeMapCanvasBridge(self.root, self.canvas)
self.model = QgsLayerTreeModel(self.root)
self.model.setFlag(QgsLayerTreeModel.AllowNodeReorder)
self.model.setFlag(QgsLayerTreeModel.AllowNodeRename)
self.model.setFlag(QgsLayerTreeModel.AllowNodeChangeVisibility)
self.model.setFlag(QgsLayerTreeModel.ShowLegend)
self.view = QgsLayerTreeView()
self.view.setModel(self.model)

Ahora, usted puede ser que desee incrustar la vista en un muelle widget dentro de la aplicación. Para ello, puede escribir el siguiente código justo debajo del código anterior:

self.LegendDock = QDockWidget( "Layers", self )
self.LegendDock.setObjectName( "layers" )
self.LegendDock.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
self.LegendDock.setWidget( self.view )
self.LegendDock.setContentsMargins ( 9, 9, 9, 9 )
self.addDockWidget( Qt.LeftDockWidgetArea, self.LegendDock )

Cuando ejecute la aplicación y la carga de capas o alterar cualquier simbología de capa, usted debe ver los cambios reflejados en el dock de widget, de esta manera:

enter image description here

Seguí a @kelly-thomas, el primer ejemplo de Cómo aplicar un graduado renderer de PyQGIS? para los símbolos de graduado en Tierra Natural de los Datos.

Además de mostrar sus capas' la simbología de la Capa de la Vista de Árbol le permite cambiar el nombre de las capas, ajustar la visibilidad de la capa y cambiar el orden de las capas en el mapa de lona.

Nota: asegúrese de que la importación de los módulos necesarios de qgis.gui, PyQt4.QtCorey PyQt4.QtGui (o, simplemente, hacer from xxxx import * para los tres).

1voto

Balda Puntos 13

siga esta guía Lutra de consultoría de qgis-capa-árbol-api-parte-3

saludos, Luigi Pirelli

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X