Avevo un requisito simile e ho messo insieme un plug-in QGIS per generare le mappe, basato su un file di forma con località punto per tutte le specie (presuppone un nome taxon univoco nella tabella degli attributi come identificatore comune). Le mie esigenze non erano così complesse: non avevo bisogno di informazioni stagionali, titoli o legende, ma potrebbe essere un utile punto di partenza per te. Per gli aspetti più complessi, dovrai utilizzare il compositore di mappe. Vedi il libro di cucina PyQGIS per ulteriori informazioni al riguardo.
Collegare
Il plug-in automatizza la creazione delle mappe e consente di configurare estensioni, risoluzione e altri aspetti. Applica lo stesso stile all'output dell'overlay della griglia. Attualmente funziona solo con la versione di sviluppo di QGIS (1.9 o successiva).
Script Sextante
Prima di creare il plugin, ho elaborato la logica usando SEXTANTE. Questo script utente dovrebbe funzionare anche in 1.8 (non l'ho testato). Il file di stile di distribuzione (.qml) è lo stile delle distribuzioni di output (ignora lo stile dell'overlay di distribuzione). Attualmente posiziona le mappe di output nella directory temp in base alle impostazioni predefinite del sistema operativo (/ tmp in Linux e varie posizioni in Windows, definite dalla variabile ambientale TEMP). Tuttavia, puoi facilmente definirlo nel codice. Sarà inoltre necessario modificare l'estensione e la risoluzione di output nel codice (e il colore di sfondo se si desidera un colore diverso per il mare).
#Definition of inputs and outputs
#==================================
##[Scratch]=group
##all_localities=vector
##taxon_field=field all_localities
##africa_map=vector
##sa_map=vector
##grid_layer=vector
##distribution_style_file=file
#Algorithm body
#==================================
from qgis.core import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from sextante.core.QGisLayers import QGisLayers
from sextante.core.SextanteVectorWriter import SextanteVectorWriter
import tempfile
import os
def print_map(taxon,taxon_shp):
#load taxon layer (necessary?)
#QGisLayers.load(taxon_shp,name = "taxon",style = distribution_style_file)
taxon_layer = QgsVectorLayer(taxon_shp,"taxon","ogr")
QgsMapLayerRegistry.instance().addMapLayer(taxon_layer)
taxon_layer.loadNamedStyle(distribution_style_file)
# create image (dimensions 325x299)
img = QImage(QSize(325,299), QImage.Format_ARGB32_Premultiplied)
# set image's background color
color = QColor(192,192,255) # blue sea
img.fill(color.rgb())
# create painter
p = QPainter()
p.begin(img)
p.setRenderHint(QPainter.Antialiasing)
render = QgsMapRenderer()
# create layer set
africa_layer = QGisLayers.getObjectFromUri(africa_map)
sa_layer = QGisLayers.getObjectFromUri(sa_map)
#taxon_layer = QGisLayers.getObjectFromUri(taxon_shp)
lst = []
lst.append(taxon_layer.id())
lst.append(sa_layer.id())
lst.append(africa_layer.id())
render.setLayerSet(lst)
# set extent (xmin,ymin,xmax,ymax)
rect = QgsRectangle(14.75,-36.00,34.00,-21.00)
render.setExtent(rect)
# set output size
render.setOutputSize(img.size(), img.logicalDpiX())
# do the rendering
render.render(p)
p.end()
# save image
#outdir = os.path.dirname(os.path.abspath(output))
tempdir = tempfile.gettempdir()
img.save(os.path.join(tempdir,taxon+".png"),"png")
# remove taxon layer from project
QgsMapLayerRegistry.instance().removeMapLayers([taxon_layer.id()])
tempdir = tempfile.gettempdir()
taxa = sextante.runalg('qgis:listuniquevalues', all_localities, taxon_field, None)['UNIQUE_VALUES'].split(";")
for taxon in taxa:
sextante.runalg('qgis:selectbyattribute', all_localities, taxon_field, 0, taxon)
sextante.runalg('qgis:selectbylocation', grid_layer, all_localities, 0)
filename = os.path.join(tempdir,"taxon.shp") #memory file better?
sextante.runalg('qgis:saveselectedfeatures', grid_layer, filename)
print_map(taxon,filename)