Imágenes (logotipos) en Map Composer con PyQGIS

En un post pasado se consideró cierto código para la adición de labels y rejilla (Grid) empleando los objetos de Map Composer en PyQGIS. En esta oportunidad vamos a complementar ese código para incluir una imagen externa (formato *.png) como logotipo en el producto resultante.

El logotipo escogido es un icono de QGIS, de 111 x 111 píxeles, que se puede bajar de aquí. Lo coloqué en esta ruta:

    /home/zeito/pyqgis_data/qgis-icon_21.png

El código siguiente incluye sólo lo necesario para inicializar el objeto QgsComposerPicture y las ocho líneas anteriores para ubicarlo en el contexto del publicado con anterioridad.

.
.
.
    #Grid Parameters at composerMap
    composerMap.setGridEnabled(True)
    composerMap.setGridFrameStyle(1)
    composerMap.setGridAnnotationPrecision(2)
    composerMap.setGridIntervalX(0.1)
    composerMap.setGridIntervalY(0.1)
    composerMap.setShowGridAnnotation(True)
    c.addItem(composerMap)
    
    #Initialize the picture object
    logo = QgsComposerPicture(c) #c is a QgsComposition object
    logo.setPictureFile("/home/zeito/pyqgis_data/qgis-icon_21.png")
    logo.setSceneRect(QRectF(0,0,20,20)) #Resize logo
    logo. setItemPosition(20,20)
    c.addItem(logo)
.
.
.

Cuando se ejecuta el código con el trozo anterior se obtiene:

image2

Si se modifica el objeto QRectF(0,0,20,20) a QRectF(0,0,40,40) se redimensiona al doble el logotipo y se obtiene el resultado siguiente:

image1

Esta solución se adaptó de la propuesta en el libro “QGIS Python Programming Cookbook” de Joel Lawhead porque allí se utiliza una clase y, además, existe una omisión importante; no se emplea el método ‘addItem’ para añadir el logo al QgsComposition object.

Esta entrada fue publicada en PyQGIS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s