J'implémente un outil qui permet à l'utilisateur de créer le profil d'une entité (dans mon cas parcelles urbaines). Est-il possible de prendre automatiquement une capture d'écran de cette fonctionnalité (affichée dans une fenêtre QGIS) et de l'afficher dans le profil PDF?
L'image ne doit montrer que l'étendue de la fonctionnalité et peut-être une couche WMS qui se trouve au-delà de la fonctionnalité. Y a-t-il déjà des outils que vous pourriez suggérer?
Réponses:
kopi,
Il existe plusieurs approches pour une solution, mais celle-ci peut être l'une des plus simples (selon vos besoins):
Sélectionnez la fonctionnalité à l'aide de QgsVectorLayer
En supposant une référence à votre couche vectorielle (vlayer) et à l'identifiant de l'entité (fid). Voir également
Zoom sur l' entité sélectionnée à l'aide de QgsInterface
Désélectionner la fonction à l'aide de QgsVectorLayer
Enregistrer le canevas en tant qu'image à l' aide de QgsMapCanvas
Cette approche produit une photo aussi grande que possible, si votre fenêtre est agrandie au maximum, car l'enregistrement de la toile est à la résolution d'écran. Cependant, cela ne garantit pas que vos photos seront à la même échelle de zoom de la carte, mais relativement à la même taille de pixels. Il existe d'autres options, par exemple
QgisInterface::actionPanToSelected()
si vous devez conserver une échelle de zoom cohérente.la source
qgis.utils.iface.mapCanvas().zoomScale(scale)
de définir l'échelle de la carte. actionPanToSelected () ne prend pas de paramètre, mais renvoie une référence à l'action elle-même (comme actionZoomToSelected () ci-dessus). Utilisez son emplacement publicqgis.utils.iface.actionPanToSelected().trigger()
pour déclencher l'action, qui gérera la détermination de ce qui est sélectionné.