Soy un principiante en Qgis y Python; necesito un script (no lo necesita para ser un plugin) para obtener los mapas de características seleccionadas a partir de una capa de satisfacer ciertas condiciones; Aquí está mi código:
from qgis.gui import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import time
fnam ='C:/Users/User/.qgis2/Test/Output/'
canvas = qgis.utils.iface.mapCanvas()
#print canvas.size()
Nom =QInputDialog.getText(None,"Value", "Enter text",0)
fnam2 = fnam + Nom[0] + '.txt'
#print fnam2
outfile = open (fnam2, 'w')
layer = iface.activeLayer()
layer.setSelectedFeatures([])
#provider =layer.dataProvider()
selection=[]
for f in layer.getFeatures():
n1 = f['Comune_1']
n2 = f['Comune_2']
n3 = f['Comune_3']
n4 = f['Comune_4']
n5 = f['Comune_5']
if (n1 == Nom[0]) or (n2 == Nom[0]) or (n3 == Nom[0]) or (n4 == Nom[0]) or (n5 == Nom[0]) :
selection.append(f.id())
line = '%s\n' % (f['link'])
unicode_line = line.encode('utf-8')
outfile.write(unicode_line)
layer.setSelectedFeatures(selection)
#provider.select()
outfile.close()
mnam ='C:/Users/User/.qgis2/Test/Output/' + Nom[0] + '.tif'
mnam2 ='C:/Users/User/.qgis2/Test/Output/' + Nom[0] + '.png'
#print mnam
canvas.zoomToSelected()
canvas.refresh()
canvas.update()
canvas.saveAsImage(mnam,None,'tif')
#time.sleep(3)
canvas.saveAsImage(mnam2,None,"PNG")
#print 'Finished'
Mi problema es que la imagen guardada(s) mostrar el mapa en el momento en que presione el botón "ejecutar" botón en la consola de Python, no el mapa basado en la última selección; he intentado insertar un tiempo.llamada sleep() retardo de ahorro, con la esperanza de que podría ayudar a la espera de representación para completar antes de guardar, pero no funciona; también traté de recursing todo el proceso con un bucle for, ni de trabajo; algunos consejos sobre lo que estoy haciendo mal?
Voy a intentar explicar de una mejor manera:
en este proyecto tengo dos capas/shapefiles:
una muestra de las aldeas en mi región con sus límites;
la segunda muestra la transcripción de las ortofotos en un 1:5000 de la escala del territorio (img1)
ahora los profesionales o de la aldea, los administradores pueden pedir las ortofotos de un determinado pueblo;
ejecutar mi script deseo:
- tener una lista de las ortofotos de la aldea (esto funciona bien con archivos txt creo);
- dar un mapa que muestra la disposición de los solicitados ortofotos como una ayuda complementaria.
Ahora, si ejecuto el script de la selección de, digamos, "Potenza", que finalmente se puede ver en Qgis el mapa actualizado con la selección deseada, pero guarda las imágenes muestran el conjunto de la región:(me refiero a "Potenza.png" es idéntico al de la imagen de arriba, mientras que debe ser como la de abajo);
sólo ahora me di cuenta de que hay selecciones, por lo que el problema parece estar en zoomToSelected comando.
si vuelvo a ejecutar la secuencia de comandos y seleccione otro pueblo, decir "Maratea", esto es lo que voy a encontrar como Maratea.png
(tif imágenes son idénticas a png);
(Cuando voy a tener un guión de trabajo seleccionado "rectángulos" mostrará el nombre de la imagen, y no voy a usar inputdialog pero voy a llegar a la aldea de los nombres de la primera shapefile y ejecutar solo una vez para todos los pueblos).