banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 14 April 2014 10:44

GAILLOT Alexis
Participant actif
Lieu: REMIREMONT
Date d'inscription: 26 Mar 2009
Messages: 53

QGIS 2.2 osgeo4w Win7 : extension Script Runner 2.0.1 Erreur execution

QGIS 2.2 du pack osgeo4w sous Win7 32bits et 64bits, Extension Script Runner 2.0.1 de Gary Sherman.

Bonjour,
J'ai testé l'excellente extension Script Runner 2.0.1, qui permet d'exécuter facilement des scripts python externes depuis QGIS, dans l'idée de faire exécuter un script facilement à des utilisateurs novices. Mon script doit réceptionner une valeur saisie par l’utilisateur, et faire un traitement qu'il est inutile de détailler ici.
A cet effet, j'utilise la fonctionnalité Passing Arguments décrite dans l'aide de l’extension : "You can pass mandatory as well as keyword arguments to your script. Script Runner examines your script at runtime and presents you with a dialog for entering each argument".
J'ai commencé par exécuter le script exemple fournit dans l'aide, pour maîtriser cette fonctionnalité dans un contexte très simple : voir le code ci-dessous.

Code:

# -*-coding:Utf-8 -*
"""Load all shapefiles in a given directory."""
from glob import glob
from os import path
from qgis.core import *
from qgis.gui import *
import qgis.utils
class Loader:
    def __init__(self, iface):
        """Initialize using the qgis.utils.iface
        object passed from the console.

        """
        self.iface = qgis.utils.iface

    def load_shapefiles(self, shp_path):
        """Load all shapefiles found in shp_path"""
        print "Loading shapes from %s" % path.join(shp_path, "*.shp")
        shps = glob(path.join(shp_path, "*.shp"))
        for shp in shps:
            (shpdir, shpfile) = path.split(shp)
            print "Loading %s" % shpfile
            lyr = QgsVectorLayer(shp, shpfile, 'ogr')
            QgsMapLayerRegistry.instance().addMapLayer(lyr)

def run_script(iface, data_path, buffer_size, **myargs):
    ldr = Loader(iface)
    print "Loading all shapefiles in %s" % myargs['shape_path']
    ldr.load_shapefiles(myargs['shape_path'])
    # Do something with data_path and buffer_size...
    print "data_path = %s" % data_path
    print "buffer_size = %s" % buffer_size

Lors de l'execution du script exemple, j'ai l'erreur suivante :
Traceback (most recent call last):
  File "C:/Users/agaillot/.qgis2/python/plugins\scriptrunner\scriptrunner.py", line 548, in run_script
    print "----------%s----------" % datetime.datetime.now()
  File "C:/Users/agaillot/.qgis2/python/plugins\scriptrunner\stdout_textwidget.py", line 55, in write
    sys.__stdout__.flush()
IOError: [Errno 9] Bad file descriptor

Quelqu'un a-t-il un retour d'expérience là-dessus ? Cette façon de réceptionner une valeur transmise par l'utilisateur ( Passing Arguments) fonctionne-t-elle avec cette version de QGIS ?
Merci. Cordialement,
Alexis GAILLOT

Hors ligne

 

#2 Fri 11 December 2015 13:03

nicart
Juste Inscrit !
Date d'inscription: 11 Dec 2015
Messages: 2

Re: QGIS 2.2 osgeo4w Win7 : extension Script Runner 2.0.1 Erreur execution

Bonjour,
Il se trouve que j'ai exactement le même problème (le script fonctionne très bien sous linux).
Avez-vous trouvé une solution depuis ?
Merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB