Pages: 1
- Sujet précédent - QGIS 3/Python: probl pour recuperer le chemin d'une couche - Sujet suivant
#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
Pages: 1
- Sujet précédent - QGIS 3/Python: probl pour recuperer le chemin d'une couche - Sujet suivant