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

GEODATA DAYS 2024

#1 Mon 03 April 2023 15:33

John_72
Juste Inscrit !
Lieu: Nouzilly
Date d'inscription: 23 Mar 2023
Messages: 2

QGIS 3.30/Script Python: Copie une selection de points

Bonjour,

En Python, je souhaite, depuis QGIS et par rapport à une couche Shapefile, copier une sélection de points vers une couche temporaire.
voici le script

# Récupération de la couche active dans QGIS
layer = iface.activeLayer()

# Affichage des entités sélectionnées dans la console de QGIS
selected_features = layer.selectedFeatures()
print("Nombre d'entités sélectionnées : ", len(selected_features))

# Création d'une nouvelle couche temporaire pour stocker les points sélectionnés
temp_layer = QgsVectorLayer('Point?crs='+layer.crs().authid(), 'temp_layer', 'memory')
temp_layer.startEditing()

# Copie des entités sélectionnées de la couche d'origine vers la couche temporaire
for feature in selected_features:
    temp_layer.addFeature(feature)

# Enregistrement des modifications sur la couche temporaire
temp_layer.commitChanges()

# Ajout de la couche temporaire à QGIS pour visualisation
QgsProject.instance().addMapLayer(temp_layer)

Résultat : je n'ai pas de message d'erreur, la couche temporaire a bien été créee,
le nombre de fichiers sélectionnés s'affiche correctement mais la couche est vide, aucun point n'a été copié.
Avez-vous déjà rencontré ce problème ?
Merci d'avance pour vos réponses, John

Hors ligne

 

#2 Mon 03 April 2023 16:02

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3869

Re: QGIS 3.30/Script Python: Copie une selection de points

Bonjour,
Dans la doc, il y a un exemple

Code:

#Créer une couche mémoire à partir de certaines entites Ids

from qgis.core import QgsFeatureRequest

memory_layer = layer.materialize(QgsFeatureRequest().setFilterFids(layer.selectedFeatureIds()))
QgsProject.instance().addMapLayer(memory_layer)

Hors ligne

 

#3 Tue 04 April 2023 11:28

John_72
Juste Inscrit !
Lieu: Nouzilly
Date d'inscription: 23 Mar 2023
Messages: 2

Re: QGIS 3.30/Script Python: Copie une selection de points

Super, ça fonctionne très bien.
Comme quoi j'aurais du passer plus de temps a lire les bases.
bien cordialement
John

Hors ligne

 

Pied de page des forums

Powered by FluxBB