Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Fri 07 June 2019 11:16

zack
Participant occasionnel
Date d'inscription: 16 Jul 2014
Messages: 33

QGIS 3.6: Sortie unique dans boucle for PyQGIS

Bonjour,

J'ai une boucle for qui enchaine un certain nombre de traitements sur chacune de mes entités de ma couche d'entrée. Je cherche à produire un fichier unique en sortie. J'ai donc initialisé une couche qui s'appelle regroupee avant d'entrer dans ma boucle :

Code:

regroupee = QgsVectorLayer("Polygon", "temporary_polygons1", "memory")

Ensuite, la dernière étape de ma boucle est une fusion de couches vecteur ou dans mes input j'ai cette couche "regroupee" et la sortie de mon algo précédent (en l’occurrence calculatrice['OUTPUT']). J'enregistre le résultat temporaire dans la variable "merge" puis j'écrase regroupee avec ce résultat :

Code:

    
            # Fusionner des couches vecteur
            alg_params = {
                'CRS': None,
                'LAYERS': [regroupee, calculatrice['OUTPUT']],
                'OUTPUT': 'memory:merge'
            }
            
            merge = processing.run('native:mergevectorlayers', alg_params, context=context, is_child_algorithm=True)
            regroupee = merge['OUTPUT']
            
        QgsVectorFileWriter.writeAsVectorFormat(regroupee, "I:/chemin/regroupee.shp", "UTF-8", crs.createFromId(2154), "ESRI Shapefile")

Le problème c'est que la variable merge['OUTPUT'] est une sortie de dictionnaire, donc un string, et qu'il me le refuse l'export en shp après ma boucle... Est-ce qu'il y a une solution pour soit produire un regroupee qui est un vector layer tout du long, soit transformer le string en vector layer pour l'export après la boucle? Sinon tout boucle bien sans erreur avant l'export. Merci !

Hors ligne

 

Pied de page des forums

Powered by FluxBB