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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#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: 3824

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