Message posté par : eliezer (afrikgeotech(a)gmail.com)
----------------------------------------
Bonjour,
j'essaie de télécharger le plan de situation de chaque point de mon réseau. cela me
permettra de remplir une fiche technique avec une photo du SIG avec le regard au centre.
j'ai réussi à trouver comment télécharger le canvas QGIS en cours et ajuster le niveau
de zoom.
mon soucis est que la capture est fait avant que Qgis déplace mon point. j'ai fais des
tests en mettant mon canvas dans un endroit inconnu avant de lancer mon script python.
l'image qui en résulte est l'image de l'endroit que j'ai choisi au hasard
avant que qgis centre le canvas sur mon point.
la conséquence est que lorsque je passe en prod la capture du canvas n'est pas juste
parce qu'il est sur le point précédent.
j'espère avoir été bien explicite voici un fichier teste ?
https://www.grosfichiers.com/4DEs3Rdment
-----------------
Code :
-----------------
from qgis.core import *
from PyQt5.QtCore import QDateTime, QTimer
import os
from qgis.utils import iface
# Récupérer l'instance du projet
project = QgsProject.instance()
regards = project.mapLayersByName("fiche_regard fiche_reg")[0]
# Créer un répertoire si nécessaire
output_dir = "R:/Commun/Eliezer/developpement en cours/fiche_SAUR/"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# Récupérer les entités (features) de la couche et les convertir en liste
def capture_plan(nom_image):
point_geom = QgsGeometry.fromPointXY(QgsPointXY(495521.80476182291749865,
6913526.50558853521943092))
# Récupérer les coordonnées du point
point = point_geom.asPoint()
iface.mapCanvas().saveAsImage(os.path.join(output_dir,
f"{nom_image}.jpg"))
buffer_size = 21
extent = iface.mapCanvas().extent()
extent.setXMinimum(point.x() - buffer_size)
extent.setXMaximum(point.x() + buffer_size)
extent.setYMinimum(point.y() - buffer_size)
extent.setYMaximum(point.y() + buffer_size)
# Appliquer l'extension et rafraîchir la carte
iface.mapCanvas().setExtent(extent)
iface.mapCanvas().refresh()
QgsApplication.processEvents() # Forcer le traitement des événements
capture_plan("PAR_REG_578")
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=370082#p370082
Pour y répondre : geolibre(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net