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

GEODATA DAYS 2024

#1 Tue 10 December 2013 12:47

CGuillaume
Participant actif
Lieu: Annecy
Date d'inscription: 3 Aug 2011
Messages: 59

QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Bonjour,

Je travaille sur un plugin qui aura pour mission de faire en sorte que les étapes suivantes soient « transparentes » pour l’utilisateur avec un clic :
   1. Créer une table avec des champs prédéfinis
   2. Enregistrer cette table dans postgis puis l’ouvrir dans Qgis
   3. Modifier les propriétés (surtout les propriétés de l’onglet champs) de cette couches pour :
          - Paramétrer les « Outils d’édition » (ou edit widget) des champs
          - Associer un formulaire réalisé avec Qt Creator

Pour les étapes 1 et 2 c’est OK smile

En revanche malgré les recherches effectuées dans le Cookbook de qgis et sur les forums, je ne trouve pas les fonctions qui me permettront de réaliser l’étape 3 à l’aide de la console python…

Je viens donc vers vous pour savoir si un (ou plusieurs) d’entre vous peuvent éclairer ma lanterne…

Merci d’avance
Guillaume

Hors ligne

 

#2 Tue 07 January 2014 10:56

CGuillaume
Participant actif
Lieu: Annecy
Date d'inscription: 3 Aug 2011
Messages: 59

Re: QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Bonjour,

N'ayant toujours pas trouvé la solution, je me permet de relancer le post.
N'hésitez pas à me dire si vous souhaitez plus d'informations ou si je dois reformuler ma question.

Merci encore
Guillaume

Hors ligne

 

#3 Wed 05 February 2014 12:00

CGuillaume
Participant actif
Lieu: Annecy
Date d'inscription: 3 Aug 2011
Messages: 59

Re: QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Bonjour,

J'ai trouvé une solution au problème... qui est toute simple en plus !

L'ensemble des propriétés de la couche pouvant être enregistrées dans un fichier style (.qml), il suffit donc :

   - De créer un style avec les paramétrages voulus
   - D'enregistrer le style
   - De lier le style à notre couche au moment de son chargement dans QGIS, à l'aide du code suivant.
             

Code:

ma_couche.loadNamedStyle("C:/teststyle.qml")

Toutefois j'ai remarqué que l'on pouvait enregistrer les styles directement dans une BD PostGis, mais je n'arrive pas à les récupérer à l'aide de la fonction ma_couche.loadNamedStyle().
Connaissez vous la syntaxe ou les termes à utiliser pour lier une style PostGis à une couche ?

D'avance je vous remercie

Guillaume

Hors ligne

 

#4 Wed 05 February 2014 13:42

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3884

Re: QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Bonjour,

Je ne sais pas si ça répond directement à ta question mais tu peux aussi indiquer le style en question comme étant le style par défaut de ta couche. Donc par défaut, c'est avec le paramétrage du style qu'elle s'ouvrira. Sauf si t'as différents styles que tu comptes prédéfinir, c'est peut-être le plus simple, non?

Hors ligne

 

#5 Wed 05 February 2014 15:22

CGuillaume
Participant actif
Lieu: Annecy
Date d'inscription: 3 Aug 2011
Messages: 59

Re: QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Bonjour,

J'avais déjà penser à cette solution mais dans ma situation, je créé une nouvelle couche à partir du plugin donc elle ne peut pas avoir de style par défaut avant de lui avoir attribuer un style une première fois (qu'il soit par défaut ou non).

Le style par défaut est une solution pour pérenniser l'utilisation du style mais pas pour l'attribuer à la couche lors de sa création.

Hors ligne

 

#6 Wed 05 February 2014 16:07

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3884

Re: QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Ah oui, c'est vrai, j'avais zappé le début de ta démarche.
Pour ton style, il semble qu'il existe loadnamedstylefromdb. C'est peut-être ce qu'il te faut

Hors ligne

 

#7 Thu 06 February 2014 15:01

CGuillaume
Participant actif
Lieu: Annecy
Date d'inscription: 3 Aug 2011
Messages: 59

Re: QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Bonjour,

J'ai tenté mais c'est un échec... pour le moment wink

Dans la doc on me demande 3 arguments :

Code:

loadNamedStyleFromDb (const QString & db, const QString & theURI, QString & qml)

mais lorsque je tente dans la console on ne me demande que 2 arguments... donc je ne vois pas trop comment lui faire comprendre quel style il faut utiliser...

Code:

TypeError: QgsMapLayer.loadNamedStyleFromDb(QString, QString) -> (bool, QString): too many arguments

Après je ne sais pas, mais en faisant des recherches, j'ai eu l’impression que cette fonction était utilisée pour les styles prédéfinis de QGIS contenus dans une base sqlite, non ?

Merci de votre aide

Guillaume

Dernière modification par CGuillaume (Thu 06 February 2014 15:08)

Hors ligne

 

#8 Tue 25 March 2014 11:09

CGuillaume
Participant actif
Lieu: Annecy
Date d'inscription: 3 Aug 2011
Messages: 59

Re: QGIS 2.0.1 : Modification propriétés d'une couche avec console python

Bonjour,

SANTANA je reviens vers vous pour savoir si vous saviez comment définir un style comme étant le style par défaut à l'aide de la console python ?
Je bloque un peu...

Merci d'avance
Guillaume

Hors ligne

 

Pied de page des forums

Powered by FluxBB