Message posté par : louloupzh18
----------------------------------------
Bonjour,
Voici un exemple de script permettant de sélectionner des données, les regrouper et les
enregistrer dans une couche temporaire. En deuxième partie l'enregistrement au format
shapefile du résultat.
-----------------
Code :
import processing
batiments = QgsProject.instance().mapLayersByName('batiments')[0] #Recupérer la
couche sur laquelle vous souhaitez selectionner des données
selected_features = processing.run("qgis:selectbyattribute",
{'INPUT':batiments,'FIELD':'type','OPERATOR':0,'VALUE':'apartments','METHOD':0,
'OUTPUT':'TEMPORARY_OUTPUT'}) #Selection par attributs
apartments_layer = selected_features['OUTPUT'] #enregistrement du résultat dans
une nouvelle couche
union = processing.run("native:dissolve",
{'INPUT':apartments_layer,'FIELD':[],'SEPARATE_DISJOINT':False,'OUTPUT':'TEMPORARY_OUTPUT'})
#Regrouper les entites selectionnées
unaryUnion = union['OUTPUT'] #enregistrement du résultat dans une nouvelle couche
QgsProject.instance().addMapLayer(unaryUnion) #Affichage du résultat dans qgis. unaryUnion
est la couche temporaire générée
#Pour enregistrer le résultat en shapefile:
shapefile_path = "C:/../fichier.shp" #Définir l'emplacement de la nouvelle
couce à crerr
writer = QgsVectorFileWriter.writeAsVectorFormat(unaryUnion, shapefile_path,
"UTF-8", batiments.sourceCrs(), "ESRI Shapefile") #Copie des données
dans cette nouvelle couche
resultat = QgsVectorLayer(writer, shapefile_path, "ogr") #Conversion du résultat
en shapefile
QgsProject.instance().addMapLayer(resultat) #Ajout du shapefile dans l'interface QGIS
-----------------
Est-ce que cela répond au besoin ? Ne pas hésiter si besoin d'éléments
complémentaires
Bien cordialement,
louloupzh
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=362550#p362550
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net