Estoy implementando una herramienta que permite al usuario crear un perfil de una característica (en mi caso, parcelas urbanas). ¿Es posible tomar automáticamente una captura de pantalla de esta función (que se muestra en una ventana QGIS) y mostrarla en el perfil PDF?
La imagen solo debe mostrar el alcance de la función y tal vez una capa WMS que se encuentra más allá de la función. ¿Ya hay algunas herramientas que podría sugerir?
Respuestas:
kopi
Existen varios enfoques para una solución, pero este puede ser uno de los más simples (según sus necesidades):
Seleccione la función usando QgsVectorLayer
Asumiendo una referencia a su capa vectorial (vlayer) y la identificación de la entidad (fid). Ver también
Zoom a la función seleccionada usando QgsInterface
Anule la selección de la función con QgsVectorLayer
Guarde el lienzo como imagen usando QgsMapCanvas
Este enfoque produce una foto lo más grande posible, si su ventana se expande por completo, porque guardar el lienzo está en resolución de pantalla. Sin embargo, no garantiza que sus imágenes tengan la misma escala de zoom del mapa, solo relativamente el mismo tamaño de píxel. Hay otras opciones como
QgisInterface::actionPanToSelected()
si necesita mantener la escala de zoom consistente.fuente
qgis.utils.iface.mapCanvas().zoomScale(scale)
establecer la escala del mapa. actionPanToSelected () no toma un parámetro, pero devuelve una referencia a la acción en sí (como actionZoomToSelected () arriba). Use su ranura públicaqgis.utils.iface.actionPanToSelected().trigger()
para activar la acción, que se encargará de averiguar qué se selecciona.