Ich implementiere ein Tool, mit dem der Benutzer ein Profil eines Features erstellen kann (in meinem Fall städtische Parzellen). Ist es möglich, automatisch einen Screenshot dieser Funktion (angezeigt in einem QGIS-Fenster) zu erstellen und im PDF-Profil anzuzeigen?
Das Bild sollte nur den Umfang des Features und möglicherweise eine WMS-Ebene zeigen, die jenseits des Features liegt. Gibt es bereits einige Tools, die Sie vorschlagen könnten?
Antworten:
kopi,
Es gibt verschiedene Lösungsansätze, aber dies kann einer der einfachsten sein (abhängig von Ihren Anforderungen):
Wählen Sie die Funktion mit QgsVectorLayer aus
Angenommen, Sie verweisen auf Ihre Vektorebene (vlayer) und die ID des Features (fid). Siehe auch
Zoomen Sie mit QgsInterface auf die ausgewählte Funktion
Deaktivieren Sie die Funktion mit QgsVectorLayer
Speichern Sie die Leinwand mit QgsMapCanvas als Bild
Dieser Ansatz erzeugt ein möglichst großes Foto, wenn Ihr Fenster vollständig erweitert wird, da das Speichern der Leinwand in Bildschirmauflösung erfolgt. Es wird jedoch nicht sichergestellt, dass Ihre Bilder dieselbe Kartenzoom-Skala haben, sondern nur relativ dieselbe Pixelgröße. Es gibt andere Optionen, z. B.
QgisInterface::actionPanToSelected()
wenn Sie die Zoomskala konsistent halten müssen.quelle
qgis.utils.iface.mapCanvas().zoomScale(scale)
, den Kartenmaßstab einzustellen. actionPanToSelected () akzeptiert keinen Parameter, gibt jedoch einen Verweis auf die Aktion selbst zurück (wie oben actionZoomToSelected ()). Verwenden Sie den öffentlichen Slotqgis.utils.iface.actionPanToSelected().trigger()
, um die Aktion auszulösen, mit der Sie herausfinden können, was ausgewählt wurde.