Como duplicar uma camada no QGIS?

9

Gostaria de exibir os mesmos dados vetoriais de maneiras diferentes e diferentes camadas. Embora seja muito útil copiar e colar o estilo de camada no 1.8+, seria bom poder selecionar uma camada e clicar com o botão direito do mouse para copiar ou duplicar diretamente.

Alguma maneira fácil de fazer isso, como um comando Python?


Atualização: a sugestão de @ dakcarto funciona perfeitamente. Como eu precisava adicionar muitas camadas duplicadas, eu a adaptei para repetir quantas vezes fosse necessário:

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

O único problema é que a nova camada se torna o activeLayer e, portanto, adiciona "_clone" e o número ao nome anterior, terminando com example_clone1, example_clone1_clone2, até o pesado exemplo_clone1_clone2_clone3_clone4_clone5. Precisa descobrir como duplicar a partir da camada originalmente selecionada, agora.

Simbamangu
fonte
Isso não é realmente uma resposta, mas o QGIS não se importa se você adicionar a mesma camada de vetor a um projeto duas vezes.
L_Holcombe
sim, adicionei muitas duplicatas mais tarde, mas apenas por "adicionar camada" e navegando para selecionar a camada a cada vez. Mínimo de 4 cliques e alguma rolagem, o que é cansativo com a necessidade de duplicar uma camada 20 vezes.
Simbamangu
11
@Simbamangu Existem diferentes pontos de vista sobre isso, eu visitei o GIS wiki. Eu definitivamente aprecio a sua opinião, deixe-me compartilhar a minha. Considero o título da pergunta como uma referência à essência da questão. Como se trata de perguntas, as introduções "Como faço para ...", "Por que é ..." não acrescentam nada de novo, pois fica claro que essa é uma pergunta. Isso pode tornar a pergunta mais legível, mas, de qualquer forma, você precisa examinar o corpo da pergunta para ver do que se trata. Ver a página inteira de perguntas que começam com "Como faço para ..." é pelo menos improdutivo para mim.
TomazicM
11
E a razão pela qual mudei o título da sua antiga pergunta? Ele apareceu na página inicial do GIS por causa da ação de alguém e admito que tenho o (péssimo) hábito de remover partes das perguntas "Como" e "Por que".
TomazicM
11
@Simbamangu Pessoalmente, prefiro perguntas sem "Como" e "Por que", porque essas palavras não acrescentam nada ao conteúdo. Eles podem tornar o título mais readabale, mas não vejo nenhum problema se o título for um pouco ambíguo, pois é preciso ler o corpo da pergunta de qualquer maneira para ver do que se trata. E admito que comecei a remover essas palavras depois que vi a PolyGeo fazendo isso e depois li alguns meta-artigos sobre boas práticas ao postar / editar perguntas.
TomazicM

Respostas:

10

Há duas solicitações de recursos relacionadas a isso ( # 5899 e # 1483 ). Este é certamente um recurso factível e provavelmente poderia ser incluído na versão 2.0, se um desenvolvedor estivesse interessado em adicioná-lo; ou, um desenvolvedor de plug-in Python considerou o assunto.

O problema # 5899 também inclui algum código Python para duplicar uma camada (enviado pelo desenvolvedor Giuseppe Sucameli):

Enquanto isso, selecione a camada vetorial, abra o console python do QGis e execute:

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

O código anterior adiciona ao mapa a mesma subcamada.

É difícil fazer isso usando um script python de uma linha como o anterior, mas se você souber o nome da subcamada, poderá substituí-lo vl.source()por vl.source().split("|")[0] + "|layername=my_sublayer_name"onde my_sublayer_name é o nome da sua subcamada.

Aparece após a execução do código de duplicação, você terá que copiar / colar o estilo da camada original.

dakcarto
fonte
Funciona perfeitamente. Adicionando 'v' como a chave para colar o estilo da camada, a duplicação da camada e do estilo leva apenas alguns segundos agora.
Simbamangu
Esse recurso foi implementado na revisão c11df1aa79. hub.qgis.org/projects/quantum-gis/repository/revisions/…
Vladimir
2
A ligação do Python para esse commit no branch master funciona da seguinte maneira: iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()onde my_layer é um QgsMapLayer que está definido para a camada selecionada ativa na legenda; então, o actionDuplicateLayer () é acionado para funcionar nas camadas selecionadas na legenda (seu padrão).
Dakcarto 02/11
1

As versões recentes do QGIS agora têm uma opção "Duplicate Layer". Clique com o botão direito do mouse na camada que deseja duplicar e ela inserirá uma nova cópia logo abaixo.

Nota lateral: parece que você precisa pressionar View --> Refreshpara que as alterações feitas em uma camada sejam propagadas para a próxima.

user94812
fonte