Le plugin QGIS Python ScriptRunner fournit un outil intermédiaire pour les processus d’automatisation de QGis, entre la console interactive Python et les développements compliqués de plugins. Il fournit une boîte de dialogue de gestion de scripts qui vous permet de charger facilement, créer, modifier et exécuter des scripts pour l’automatisation de QGIS à grande échelle.
Tout d’abord vous devez installer et activer le plugin à partir du gestionnaire d’extensions.
Vous trouverez alors le menu de lancement de Script Runner sous le menu Extensions
Avant de commencer à l’utiliser, vous devez configurer l’éditeur de texte à utiliser pour éditer vos scripts.
- Ouvrez Script Runner,
- cliquez sur l’icône de Préférences (la roue dentée)
- Dans les Options générales cochez la case Edit Scripts Using…
- Cliquez sur le bouton … et pointez sur le programme d’édition de texte choisi
Vous pouvez utiliser le bloc-notes de Windows que vous trouverez dans C:/Windows/System32/notepad.exe, mais vous pouvez aussi utiliser des outils plus performants tels que Notepad++ (gratuit et disponible sur le site
Si vous suivez l’installation par défaut vous devrez rentrer C:/Program Files (x86)/Notepad++/notepad++.exe dans la fenêtre de Script Runner.
Ce qu’il faut savoir
Le point d’entrée de tout script dans Script Runner est la fonction:
def run_script(iface):
run_script avec au moins un argument, l’objet iface. Vous n’avez aucune obligation d’utiliser cet objet dans votre code, mais il doit obligatoirement être passé comme premier ou unique argument.
Quand vous cliquez sur l’icône New Script, de toutes façons vous trouverez cette fonction déjà déclarée.
Cette structure vous permet d’utiliser directement, sans déclaration explicite, la classe QGisInterface. Mais sans autre déclaration, vous êtes limité aux méthodes contenues dans cette classe.
Par contre, vous pouvez ajouter des import de tous les modules souhaités et les utiliser dans votre code. La création d’un nouveau script avec Script Runner possède déjà quatre imports par défaut:
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- from qgis.core import *
- from qgis.gui import *
que vous pouvez laisser ou enlever à votre convenance, et aussi compléter avec tout autre module Python nécessaire.
Comment ça marche?
Le fonctionnement de Script Runner est très simple. Vous avez la barre d’outils:
Qui permet de créer un nouveau fichier .py, ajouter un fichier Python existant, exécuter le script sélectionné dans la liste des fichiers scripts, recharger un fichier modifié, etc.
Et un menu contextuel (clic droit sur un script de la liste de gauche) qui vous permet principalement d’ouvrir le fichier Python dans votre programme d’édition de texte et de le créer ou de le modifier .
Une fois sauvegardé le contenu de l’éditeur de texte, n’oubliez pas de recharger le script pour que script runner prenne en compte les modifications que vous venez d’apporter.
Quand vous exécutez un script avec script runner, toutes les commandes print sont dirigées vers la console de sortie de script runner:
Les messages d’erreur sont aussi dirigés vers cette fenêtre.
Pour terminer, le paramétrage de vos scripts
La dernière chose à savoir sur le fonctionnement de vos scripts dans script runner est comment passer des arguments à votre script.
La première méthode est de rentrer ces arguments dans la commande de lancement du script:
def run_script(iface, data_path, buffer_size):
Dans cet exemple, vous souhaitez deux arguments, un chemin de fichier et une valeur de tampon.
Au moment de l’exécution du script, une fenêtre vous demandera de renseigner les paramètres:
Une autre façon de passer des arguments est de créer une chaîne de paramétrage
def run_script(iface, **myargs):
Dans ce cas, vous devrez rentrer les différents arguments sous forme de couples nom/valeur
Dans votre code vous accédez aux différents arguments sous la forme:
def run_script(iface, **myargs): data_path = myargs['data_path'] my_buffer_size = myargs['buffer_size']