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