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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 03 August 2023 08:43

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

QGIS: Resultat union d'objets sélectionnes dans couche temporaire

Bonjour,


Voilà, j'ai dans ma sélection plusieurs objets et je voudrais faire l'union de ces objets.
Ils peuvent être jointif ou distants (Dans ce dernier cas, un objet multi part sera créé).

Je voudrais que cet objet nouvellement créé le soit dans une couche temporaire. afin de ne pas polluer la couche initiale

Je n'ai rien trouvé dans les docs ni dans le forum

Voici ce que je pense faire :

Code:

liste = calque.selectedFeatures()
geoms = [f.geometry() for f in liste]
g = QgsGeometry.unaryUnion(geoms)

Mais comment aire pour que ce nouvel objet soit créé dans la couche temporaire et comment l'a créé ?

Merci de vos réponse et bonne journée, PYJ

Hors ligne

 

#2 Fri 11 August 2023 07:07

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

Re: QGIS: Resultat union d'objets sélectionnes dans couche temporaire

Bonjour,
Avez-vous une idée ?
Merci et bonne journée

PYJ

Hors ligne

 

#3 Mon 04 September 2023 08:29

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

Re: QGIS: Resultat union d'objets sélectionnes dans couche temporaire

Bonjour,
Pour compléter ma problématique, je voudrais que le résultat de cette opération (unaryUnion) ne soit pas dans la couche source, mais ailleurs (voir même être stocké dans un fichier Shape.

Comment puis-je procéder ?

Merci de vos réponses et bonne journée
PYJ

Hors ligne

 

#4 Wed 13 September 2023 22:35

louloupzh18
Participant occasionnel
Lieu: Le Mans
Date d'inscription: 9 Apr 2015
Messages: 11

Re: QGIS: Resultat union d'objets sélectionnes dans couche temporaire

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

Hors ligne

 

Pied de page des forums

Powered by FluxBB