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

Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !

10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …

Faire un don 

Retrouver nos membres bienfaiteurs

#1 Mon 19 May 2014 09:54

SchlosserA
Juste Inscrit !
Date d'inscription: 19 May 2014
Messages: 9

QGIS 2.0 : Développement de plugin en python

Bonjour à la communauté !

Je suis actuellement en master géomatique à l'université de Strasbourg et j'effectue un stage de fin d'année qui me demande de développer un plugin en python pour QGis capable, sans trop rentrer dans les détails, de charger des données raster, d'accéder aux valeurs qu'elles contiennent et de produire d'autres rasters combinant ces données. J'ai bien eu des cours de programmation python en cours d'années mais mes compétences ne concernent pour l'instant que des bases de traitement d'image... Le développement que j'ai à faire m'apparaît donc un peu obscur.

Je suis vite tombé sur le plugin builder de QGis qui m'a posé les bases de la structure d'un plugin et je me suis tourné vers le développement d'une interface PyQt à l'aide de Glade, qui une fois traduite m'a donné un certain nombre de fichiers .py pour chaque fenêtre que mon plugin doit contenir (pour charger les données et rentrer les différents paramètres). En bricolant un petit peu, j'ai pu charger l'interface à partir de QGis, la première fenêtre s'affiche, c'est génial, mais... à partir de là, les ennuis commencent.

Mon niveau en python se limitant à des traitements d'images basiques comme je les dis, je maîtrise assez peu la partie "programmation évènementielle" et, même après avoir consulté un certains nombres de cours sur développez.net et openclassrooms (anciennement site du zéro), le concept de signaux/slots que python utilise pour lier les fonctions aux différents widgets de mon interface me semble assez complexe. Le principal problème est que je n'arrive pas à naviguer dans l'interface (il faudrait détruire certaines fenêtres, en afficher d'autres avec des boutons du style suivant/précédant). Mon plugin reste donc bloqué sur la première fenêtre avec des boutons non fonctionnels.

J'ai essayé en parallèle de développer un script console pour contourner momentanément ce problème, mais là se pose le problème du chargement et de l'accès aux données en python... J'ai bien trouvé le "Python Cookbook" http://www.qgis.org/fr/docs/pyqgis_deve … index.html qui liste certaines des fonctions disponibles avec PyQgis mais les explications données sont assez sommaires.

Donc voilà, m'étant déjà tourné vers les superviseurs de mon stage qui malheureusement ne connaissent pas beaucoup plus python que moi et ayant essayé, sans succès, d'obtenir de l'aide auprès des enseignants en informatique auquel j'avais accès, je me tourne vers vous en espérant qu'un âme charitable pourra prendre un peu de son temps pour m'expliquer comment naviguer dans une interface et faire des traitements sur des rasters...

Bonne journée et merci d'avance à ceux qui répondront smile
Arnaud

Hors ligne

 

#2 Mon 19 May 2014 16:30

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: QGIS 2.0 : Développement de plugin en python

Bonjour,
La doc en lien montre un exemple d'ajout de fichier raster :

Code:

fileName = "/path/to/raster/file.tif"
fileInfo = QFileInfo(fileName)
baseName = fileInfo.baseName()
rlayer = QgsRasterLayer(fileName, baseName)

Commencer par un script console est une très bonne idée.
A votre place, j'utiliserai la boîte à outil (processing) directement dans le script python, si possible des outils GRASS.
http://www.qgis.org/fr/docs/user_manual … nsole.html

NB : quand on lance un outil de la boîte à outil (processing), on peut observer dans le fichier de log (C:\Users\USER\.qgis2\processing\processing.log) la commande python correspondante.

NB2 :
une fois que votre script tourne dans la console, il sera bien assez temps de vous préoccuper de l'interface utilisateur :
- un plugin QGis : voir les tutos et le plugin Qgis "plugin builder" très pratique pour créer l'ossature.
- un script à incorporer dans la boîte à outil
  ==> http://www.qgis.org/fr/docs/user_manual … he-toolbox

Dernière modification par Cornet Jérémie (Mon 19 May 2014 16:34)

Hors ligne

 

#3 Tue 20 May 2014 09:20

SchlosserA
Juste Inscrit !
Date d'inscription: 19 May 2014
Messages: 9

Re: QGIS 2.0 : Développement de plugin en python

Bonjour et merci d'avoir pris le temps de me répondre !

Je vais laisser l'interface de côté comme conseillé pour essayer de faire fonctionner le tout en mode console dans ce cas, la boîte à outils semble effectivement être une piste intéressante pour le traitement de mes couches, je vais m'intéresser de près à tout ça.

Merci pour votre aide !
Arnaud

Hors ligne

 

#4 Tue 20 May 2014 18:19

Titius
Participant actif
Date d'inscription: 27 Aug 2013
Messages: 69

Re: QGIS 2.0 : Développement de plugin en python

Bonjour,

Étant moi même en train de tenter de faire un plugin, voici le tuto sur lequel je me suis appuyé (en anglais) :
http://www.qgisworkshop.org/html/workshop/index.html

Ça aide aussi beaucoup de fouiller dans le code des autres plugins pour comprendre comment tout s'organise.

Pour vos problème de fenêtres, peut être pourriez vous contourner le problème en faisant une seule fenêtre avec plusieurs onglets.

Hors ligne

 

#5 Tue 20 May 2014 19:14

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: QGIS 2.0 : Développement de plugin en python

Hors ligne

 

#6 Wed 21 May 2014 09:19

SchlosserA
Juste Inscrit !
Date d'inscription: 19 May 2014
Messages: 9

Re: QGIS 2.0 : Développement de plugin en python

Bonjour et merci à Titius et Robin pour vos liens. Je vais aussi explorer l'idée des onglets.
J'espère qu'avec ça je pourrais mener à bien mon projet, en tous cas merci beaucoup pour votre aide !

Arnaud

Hors ligne

 

Pied de page des forums

Powered by FluxBB