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

#1 Tue 27 August 2024 10:54

ThomasS
Juste Inscrit !
Date d'inscription: 30 Sep 2022
Messages: 6

QGIS: enumeration dynamique comme parametres d un algo processing

Bonjour,

Dans le cadre de la création d'un plugin qui s'ajoute dans la boite à outils de traitement, je cherche à définir comme paramètre une énumération dont les valeurs dépendent d'une autre énumération d'un pramètre précédant.


Param1 : catégorie
Param2 : Année

les années proposées dépendent de la catégorie chosie.

J'ai demandé a deux reprises a un agrégateur statistique (ChatGPT) mais les réponses apportées ne fonctionnent pas.

Mon code exemple ressemble à ça suivant ces deux essais précédants :

class TestAlgorithm(QgsProcessingAlgorithm):
    CATEGORY = 'CATEGORY'
    ITEM = 'ITEM'
   
    def initAlgorithm(self, config=None):
        # Define the first enum parameter: Category
        self.addParameter(
            QgsProcessingParameterEnum(
                self.CATEGORY,
                self.tr('Category'),
                options=['Fruit', 'Vegetables']
            )
        )

        # Define the second enum parameter: Item, initially empty
        self.addParameter(
            QgsProcessingParameterEnum(
                self.ITEM,
                self.tr('Item'),
                options=[],
                optional=True
            )
        )


    def updateParameters(self, parameters, context):
        # Get the selected category
        category_index = self.parameterAsEnum(parameters, self.CATEGORY, context)
        category = ['Fruit', 'Vegetables'][category_index]

        # Update the item parameter based on the selected category
        if category == 'Fruit':
            parameters[self.ITEM].setOptions(['Apple', 'Banana', 'Orange'])
        elif category == 'Vegetables':
            parameters[self.ITEM].setOptions(['Carrot', 'Potato', 'Tomato'])
        else:
            parameters[self.ITEM].setOptions([])

        return super().updateParameters(parameters, context)

  def processAlgorithm(self, parameters, context, feedback):
............... suite


Mais cette approche ne semble pas fonctionner. Est-ce que quelqu'un possède des pistes (ou tout du moins connait un plugin processing qui fait ça afin que je puisse examiner le code) ?.

merci d'avance.

Hors ligne

 

Pied de page des forums

Powered by FluxBB