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 Fri 03 June 2022 17:50

G. Navennec
Juste Inscrit !
Date d'inscription: 23 Jan 2018
Messages: 4

QGIS 3/Python: probl pour recuperer le chemin d'une couche

Bonjour,

Je suis en train de coder un petit script avec comme données en entrée une couche et deux de ses champs :

Code:

class Test(QgsProcessingAlgorithm):

    def initAlgorithm(self, config=None):
        self.addParameter(QgsProcessingParameterVectorLayer('couche', 'couche', types=[QgsProcessing.TypeVectorPoint], defaultValue=None))
        self.addParameter(QgsProcessingParameterField('X', 'X', type=QgsProcessingParameterField.Numeric, parentLayerParameterName='couche', allowMultiple=False, defaultValue=''))
        self.addParameter(QgsProcessingParameterField('Z', 'Z', type=QgsProcessingParameterField.Numeric, parentLayerParameterName='couche', allowMultiple=False, defaultValue=''))
        self.addParameter(QgsProcessingParameterField('Y', 'Y', type=QgsProcessingParameterField.Numeric, parentLayerParameterName='couche', allowMultiple=False, defaultValue=''))
        self.addParameter(QgsProcessingParameterFeatureSink('Resultat', 'resultat', type=QgsProcessing.TypeVectorPoint, createByDefault=True, defaultValue=None))

Pour la suite du traitement j'ai besoin de récupérer le chemin de la couche en entrée. Dans mon souvenir, il suffisait d'appeler l'entrée correspondante dans le dictionnaire

Code:

chemin = parameters['couche']

. D'ailleurs au démarrage du script, dans le journal j'ai bien ceci

Code:

Paramètres en entrée:
{ 'X' : 'X', 'Y' : 'Y', 'couche' : 'C:/Users/Desktop/dossier/exemple.shp' }

Pourtant cela ne fonctionne pas : le script plante et quand je me renvoie parameters['couche'] dans un log, j'obtient pour seul résultat une chaine de caractère comme ça : exemple_15b7ff9b_ce41_43g1_8be5_t5t947b74ef9

J'ai raté quelque chose ?
Une idée pour récupérer le chemin de ma couche sur une variable ?
Dites moi si jamais il vous faut plus d'infos

Merci d'avance !

Hors ligne

 

#2 Wed 08 June 2022 08:18

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS 3/Python: probl pour recuperer le chemin d'une couche

Bonjour,
Il y a eu une refonte de l'API de processing.
Il faut maintenant appeler la fonction :

Code:

self.parameterAsVectorLayer

Le mieux est de regarder l'exemple ici :
https://docs.qgis.org/3.22/en/docs/user … galgorithm

La doc vers l'API se trouve ici :
https://api.qgis.org/api/classQgsProces … rithm.html

Hors ligne

 

#3 Wed 08 June 2022 13:59

G. Navennec
Juste Inscrit !
Date d'inscription: 23 Jan 2018
Messages: 4

Re: QGIS 3/Python: probl pour recuperer le chemin d'une couche

Bonjour JD et merci pour ta réponse. Avec tes infos j'ai pu terminer mon script en utilisant cette fonction

Bonne continuation

Hors ligne

 

#4 Tue 14 June 2022 15:56

G. Navennec
Juste Inscrit !
Date d'inscription: 23 Jan 2018
Messages: 4

Re: QGIS 3/Python: probl pour recuperer le chemin d'une couche

Rebonjour,

J'ai décidé de réutiliser mon sujet pour un problème assez similaire :
Je cherche toujours à exploiter ma couche vecteur en entré. La fonction self.parameterAsVectorLayer fonctionne très bien pour récupérer une couche. Mais maintenant je veux faire pareil avec plusieurs couche sur parametre de type "source multiple" :

Code:

def initAlgorithm(self, config=None):
        param = QgsProcessingParameterMultipleLayers('listeCouche', 'listes couches', layerType=QgsProcessing.TypeVectorAnyGeometry, defaultValue=None)

Du coup là dessus je n'arrive pas à récupérer les couches vecteur sur des variables séparées pour pouvoir ensuite travailler dessus. Et je n'ai pas trouvé beaucoup de doc sur les couches multiples...

Hors ligne

 

#5 Tue 14 June 2022 22:46

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS 3/Python: probl pour recuperer le chemin d'une couche

Bonsoir,
c'est mieux d'utiliser un autre sujet en général.
Je pense qu'il faut uiliser :

Code:

parameterAsCompatibleSourceLayerPathAndLayerName()

https://qgis.org/pyqgis/3.22/core/QgsProcessingAlgorithm.html?highlight=parameterascompatiblesourcelayerpathandlayername

Hors ligne

 

Pied de page des forums

Powered by FluxBB