Come posso duplicare un livello in QGIS?


9

Vorrei visualizzare gli stessi dati vettoriali in modi diversi come livelli diversi. Sebbene sia molto utile poter copiare e incollare lo stile di livello in 1.8+, sarebbe bello poter selezionare un livello e fare clic con il tasto destro per copiarlo o duplicarlo direttamente.

Qualche modo semplice per farlo, come un comando Python?


Aggiornamento: il suggerimento di @ dakcarto funziona perfettamente. Dato che dovevo aggiungere molti livelli duplicati, l'ho adattato per eseguire il loop tutte le volte che è necessario:

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

L'unico problema è che il nuovo livello diventa activeLayer, quindi aggiunge "_clone" e il numero al nome precedente, finendo con example_clone1, example_clone1_clone2, fino a ingombrante esempio_clone1_clone2_clone3_clone4_clone5. Ora devi capire come duplicare dal livello originariamente selezionato.


Questa non è davvero una risposta, ma a QGIS non importa se aggiungi lo stesso layer vettoriale a un progetto due volte.
L_Holcombe,

sì, ne ho aggiunti molti duplicati in seguito, ma solo "aggiungi livello" e navigando per selezionare il livello ogni volta. Minimo 4 clic e alcuni scroll, che diventa noioso con la necessità di duplicare uno strato 20 volte.
Simbamangu

1
@Simbamangu Ci sono diversi punti di vista su questo, sono passato attraverso il wiki GIS. Apprezzo decisamente la tua opinione, lasciami condividere la mia. Considero il titolo della domanda come una domanda di direzione sull'essenza della domanda. Dal momento che si tratta di domande, quindi le introduzioni "Come posso ...", "Perché è ..." non aggiungere nulla di nuovo poiché è chiaro che questa è una domanda. Potrebbe rendere la domanda più leggibile, ma in ogni caso devi guardare il corpo della domanda per vedere di cosa si tratta. Vedere tutta la pagina di domande che iniziano con "Come posso ..." è per me almeno improduttivo.
TomazicM,

1
E il motivo per cui ho cambiato il titolo della tua vecchia domanda? Si è bloccato sulla home page di GIS a causa dell'azione di somebodys e ammetto che ho una (cattiva) abitudine di rimuovere parti di "How" e "Why".
TomazicM,

1
@Simbamangu Personalmente preferisco le domande senza "Come" e "Perché" perché queste parole non aggiungono nulla al contenuto. Potrebbero rendere il titolo più leggibile, ma non vedo alcun problema se il titolo è un po 'ambiguo, dal momento che uno deve leggere il corpo della domanda comunque per vedere di cosa si tratta. E ammetto che ho iniziato a rimuovere quelle parole dopo aver visto PolyGeo farlo e poi leggere alcuni meta articoli sulle buone pratiche durante la pubblicazione / modifica di domande.
TomazicM,

Risposte:


10

Esistono due richieste di funzionalità in merito ( # 5899 e # 1483 ). Questa è certamente una funzionalità fattibile, e potrebbe probabilmente essere inclusa nella versione 2.0, se uno sviluppatore fosse interessato ad aggiungerla; oppure, uno sviluppatore di plug-in Python ne ha tenuto conto.

Il numero # 5899 include anche del codice Python per la duplicazione di un livello (inviato dallo sviluppatore Giuseppe Sucameli):

Nel frattempo, seleziona il livello vettoriale, quindi apri la console QGis python ed esegui:

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

Il codice precedente aggiunge alla mappa lo stesso sublayer.

È difficile farlo usando uno script Python a una riga come quello precedente, ma se conosci il nome del sublayer puoi semplicemente sostituire vl.source()con vl.source().split("|")[0] + "|layername=my_sublayer_name"dove my_sublayer_name è il nome del tuo sublayer.

Appare dopo aver eseguito il codice di duplicazione, dovrai copiare / incollare lo stile del livello originale.


Funziona perfettamente. Aggiungendo 'v' come chiave per incollare lo stile di livello, la duplicazione di livello e stile richiede solo pochi secondi.
Simbamangu

Questa funzione è implementata nella revisione c11df1aa79. hub.qgis.org/projects/quantum-gis/repository/revisions/…
Vladimir

2
Il pitone vincolante per che impegnano a capolavori filiali in questo modo: iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()dove my_layer è una QgsMapLayer impostato al, livello selezionato attivo nella legenda; quindi, actionDuplicateLayer () viene attivato per funzionare sui livelli selezionati nella legenda (impostazione predefinita).
dakcarto,

1

Le versioni recenti di QGIS ora hanno un'opzione "Duplicate Layer". Fai clic con il pulsante destro del mouse sul livello che desideri duplicare e inserirà una nuova copia appena sotto.

Nota a margine: sembra che tu debba premere View --> Refreshper far sì che le modifiche apportate in un livello si propaghino al successivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.