Pages: 1
- Sujet précédent - QGIS: Script pour diviser une couche en fonction d'un attribut - Sujet suivant
#1 Wed 30 August 2023 09:27
- insay
- Participant occasionnel
- Date d'inscription: 23 Mar 2018
- Messages: 25
QGIS: Script pour diviser une couche en fonction d'un attribut
Bonjour à tous,
J'ai pour objectif de diviser une couche selon un de ses attributs "MODE_POSE", il y a toujours 9 valeurs (de 0 à 8), à la base je le faisais a la main via la boite à outils "Extraire par attribut". Je vais devoir faire cette manip pour des centaines de fichiers assez souvent j'ai donc fait appel a une IA pour qu'elle me code un script me facilitant la tache.
le seul problème c'est que la fonction fait bien 9 couches distinctes mais c'est l'exact copie de la couche d'entrée a chaque fois, voici le code en question
Code:
from qgis.core import QgsProject, QgsVectorLayer, QgsVectorFileWriter, QgsCoordinateTransformContext input_layer_name = "Ma_Couche" output_directory = "Exemple\MonDossier" mode_values = { 0: "Couche_1", 1: "Couche_2", 2: "Couche_3", 3: "Couche_4", 4: "Couche_5", 5: "Couche_6", 6: "Couche_7", 7: "Couche_8", 8: "Couche_9" } input_layer = QgsProject.instance().mapLayersByName(input_layer_name)[0] if not input_layer: print(f"La couche {input_layer_name} n'a pas été trouvée.") exit() for mode_value, output_name in mode_values.items(): query = f'"MODE_POSE" = {mode_value}' filtered_layer = QgsVectorLayer(input_layer.source(), input_layer_name, 'ogr') filtered_layer.setSubsetString(query) options = QgsVectorFileWriter.SaveVectorOptions() options.driverName = "ESRI Shapefile" output_path = f"{output_directory}/{output_name}.shp" success, message = QgsVectorFileWriter.writeAsVectorFormatV2(filtered_layer, output_path, QgsCoordinateTransformContext(), options) if success == QgsVectorFileWriter.NoError: print(f"Export de {output_name} réussi.") else: print(f"Erreur lors de l'export de {output_name} : {message}") print("Export terminé.")
Est ce que l'un d'entre vous aurez une idée de ce qui cloche avec cette fonction ?
Dernière modification par insay (Wed 30 August 2023 09:45)
Hors ligne
#2 Wed 30 August 2023 12:04
- Vincent Vauchey
- Participant assidu
- Lieu: saint jean de braye
- Date d'inscription: 24 Jan 2006
- Messages: 288
Re: QGIS: Script pour diviser une couche en fonction d'un attribut
Bonjour
Pourquoi avant de demander à une IA de faire le travail, ne pas tout simplement utilise le modeleur graphique afin de faire cela !!!!!
Cordialement
Hors ligne
#3 Wed 30 August 2023 14:46
- insay
- Participant occasionnel
- Date d'inscription: 23 Mar 2018
- Messages: 25
Re: QGIS: Script pour diviser une couche en fonction d'un attribut
Désolé je ne connaissais pas le modeleur graphique et je pensais que ce que je cherchais ne pouvais se faire qu'avec un script, je vais jeter un œil sur la documentation Qgis pour utiliser le modeleur graphique et voir ce que je peux faire. Merci à toi Vincent
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Script pour diviser une couche en fonction d'un attribut - Sujet suivant