Comment puis-je dupliquer une couche dans QGIS?

9

Je voudrais afficher les mêmes données vectorielles de différentes manières que différentes couches. Bien qu'il soit très pratique de pouvoir copier et coller le style de calque dans la version 1.8+, ce serait bien de pouvoir sélectionner un calque et cliquer avec le bouton droit pour le copier ou le dupliquer directement.

Une manière simple de le faire, comme une commande Python?


Mise à jour: la suggestion de @ dakcarto fonctionne parfaitement. Comme j'avais besoin d'ajouter de nombreux calques en double, je l'ai adapté pour boucler autant de fois que nécessaire:

for n in range(1,5): 
    iface = qgis.utils.iface; vl = iface.activeLayer(); iface.addVectorLayer(vl.source(), vl.name() + "_clone" + str(n), vl.providerType())

Le seul problème est que la nouvelle couche devient la couche active, donc elle ajoute "_clone" et le numéro au nom précédent, se terminant par example_clone1, example_clone1_clone2, jusqu'à la lourde exemple_clone1_clone2_clone3_clone4_clone5. Besoin de comprendre comment dupliquer à partir du calque initialement sélectionné, maintenant.

Simbamangu
la source
Ce n'est pas vraiment une réponse, mais cela ne dérange pas QGIS si vous ajoutez deux fois la même couche vectorielle à un projet.
L_Holcombe
oui, j'ai ajouté plus d'un doublon plus tard, mais seulement en "ajoutant un calque" et en parcourant pour sélectionner le calque à chaque fois. 4 clics minimum et un certain défilement, ce qui devient fastidieux avec la nécessité de dupliquer une couche 20 fois.
Simbamangu
1
@Simbamangu Il y a différentes vues à ce sujet, j'ai parcouru le wiki SIG. J'apprécie vraiment votre point de vue, permettez-moi de partager le mien. Je considère le titre de la question comme une indication sur l'essentiel de la question. Puisqu'il s'agit de questions, les intros "Comment puis-je ...", "Pourquoi c'est ..." n'ajoutent rien de nouveau car il est clair que c'est une question. Cela pourrait rendre la question plus lisible, mais de toute façon vous devez regarder le corps de la question pour voir de quoi il s'agit. Voir une page entière de questions commençant par "Comment puis-je ..." est au moins pour moi improductif.
TomazicM
1
Et la raison pour laquelle j'ai changé le titre de votre ancienne question? Il s'est cogné sur la page d'accueil du SIG à cause de l'action de quelqu'un et j'avoue avoir une (mauvaise) habitude de supprimer les parties "Comment" et "Pourquoi" des questions.
TomazicM
1
@Simbamangu Je préfère personnellement les questions sans "Comment" et "Pourquoi" car ces mots n'ajoutent rien au contenu. Ils peuvent rendre le titre plus lisible, mais je ne vois aucun problème si le titre est un peu ambigu, car il faut quand même lire le corps de la question pour voir de quoi il s'agit. Et j'avoue avoir commencé à supprimer ce mot après avoir vu PolyGeo le faire, puis lire quelques méta articles sur les bonnes pratiques lors de la publication / modification de questions.
TomazicM

Réponses:

10

Il y a deux demandes de fonctionnalités à ce sujet ( # 5899 et # 1483 ). C'est certainement une fonctionnalité réalisable, et pourrait probablement être incluse dans la version 2.0, si un développeur souhaitait l'ajouter; ou, un développeur de plugin Python y a réfléchi.

Le problème # 5899 inclut également du code Python pour la duplication d'une couche (soumis par le développeur Giuseppe Sucameli):

En attendant, sélectionnez la couche vectorielle puis ouvrez la console python QGis et exécutez:

iface = qgis.utils.iface; vl = iface.activeLayer(); iface.addVectorLayer(vl.source(), vl.name() + "_clone", vl.providerType())

Le code précédent ajoute à la carte la même sous-couche.

Il est difficile de le faire en utilisant un script python d'une ligne comme le précédent, mais si vous connaissez le nom de la sous-couche, vous pouvez simplement le remplacer vl.source()par vl.source().split("|")[0] + "|layername=my_sublayer_name"où my_sublayer_name est le nom de votre sous-couche.

Il apparaît après avoir exécuté le code de duplication, vous devrez copier / coller le style du calque d'origine.

dakcarto
la source
Marche parfaitement. En ajoutant «v» comme clé pour coller le style de calque, la duplication du calque et du style ne prend plus que quelques secondes.
Simbamangu
Cette fonctionnalité est implémentée dans la révision c11df1aa79. hub.qgis.org/projects/quantum-gis/repository/revisions/…
Vladimir
2
La liaison Python pour cette validation sur la branche principale fonctionne comme iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()suit : où my_layer est un QgsMapLayer qui est défini sur le calque actif sélectionné dans la légende; ensuite, l'actionDuplicateLayer () est déclenché pour travailler sur les calques sélectionnés dans la légende (sa valeur par défaut).
dakcarto
1

Les versions récentes de QGIS ont désormais une option "Duplicate Layer". Cliquez avec le bouton droit sur le calque que vous souhaitez dupliquer et il insérera une nouvelle copie juste en dessous.

Note latérale: Il semble que vous devez frapper View --> Refreshpour que les modifications apportées dans une couche se propagent à la suivante.

user94812
la source