Utiliser Script Runner avec QGis

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.
activation du plugin script runner de qgis

Vous trouverez alors le menu de lancement de Script Runner sous le menu Extensions

menu de lancement du pugin script runner de qgis

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

configuration de l'éditeur de texte du plugin script runner de qgis

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 https://notepad-plus-plus.org/download/v6.9.2.html
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.

odèe de script créé par l'outil nouveau script de script runner de qgis

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:

barre d'outils du plugin script runner de qgis

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 .

menu contextuel de script runner de qgis

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:

console de sortie du plugin script runner de qgisLes 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:

arguments d'un script dans le plugin script runner de qgis

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

chaîne d'arguents pour un script du plugin script runner de qgis

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']

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *