¿Cómo puedo duplicar una capa en QGIS?

9

Me gustaría mostrar los mismos datos vectoriales de diferentes maneras que las diferentes capas. Si bien es muy útil poder copiar y pegar el estilo de capa en 1.8+, sería bueno poder seleccionar una capa y hacer clic derecho para copiarla o duplicarla directamente.

¿Alguna forma fácil de hacer esto, como un comando de Python?


Actualización: la sugerencia de @ dakcarto funciona perfectamente. Como necesitaba agregar muchas capas duplicadas, lo adapté para repetir tantas veces como fuera necesario:

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

El único problema es que la nueva capa se convierte en activeLayer, por lo que agrega "_clone" y el número al nombre anterior, terminando con example_clone1, example_clone1_clone2, hasta el difícil ejemplo_clone1_clone2_clone3_clone4_clone5. Necesita descubrir cómo duplicar desde la capa seleccionada originalmente, ahora.

Simbamangu
fuente
Esto no es realmente una respuesta, pero a QGIS no le importa si agrega la misma capa vectorial a un proyecto dos veces.
L_Holcombe
sí, he agregado muchos duplicados más tarde, pero solo "agregando capa" y navegando para seleccionar la capa cada vez. Mínimo 4 clics y un poco de desplazamiento, lo que se vuelve pesado con la necesidad de duplicar una capa 20 veces.
Simbamangu 01 de
1
@Simbamangu Hay diferentes puntos de vista sobre esto, revisé el wiki de SIG. Definitivamente aprecio tu opinión, déjame compartir la mía. Considero que el título de la pregunta es una guía sobre la esencia de la pregunta. Dado que todo se trata de preguntas, luego las introducciones "¿Cómo ...?", "Por qué es ..." no agregan nada nuevo, ya que está claro que se trata de una pregunta. Puede hacer que la pregunta sea más legible, pero de todos modos hay que mirar el cuerpo de la pregunta para ver de qué se trata. Ver una página completa de preguntas que comienzan con "¿Cómo ...?" Es al menos para mí improductivo.
TomazicM
1
¿Y la razón por la que cambié el título de tu vieja pregunta? Apareció en la página de inicio de GIS debido a la acción de alguien y admito que tengo la (mala) costumbre de eliminar las partes de las preguntas "Cómo" y "Por qué".
TomazicM
1
@Simbamangu Personalmente prefiero preguntas sin "Cómo" y "Por qué" porque estas palabras no agregan nada al contenido. Pueden hacer que el título sea más legible, pero no veo ningún problema si el título es un poco ambiguo, ya que de todos modos hay que leer el cuerpo de la pregunta para ver de qué se trata. Y admito que comencé a eliminar esas palabras después de ver que PolyGeo lo hacía y luego leía algunos metaartículos sobre buenas prácticas al publicar / editar preguntas.
TomazicM

Respuestas:

10

Hay dos solicitudes de funciones con respecto a esto ( # 5899 y # 1483 ). Esta es ciertamente una característica factible, y probablemente podría incluirse en la versión 2.0, si un desarrollador estuviera interesado en agregarla; o, un desarrollador de complementos de Python le dio alguna consideración.

El problema # 5899 también incluye algún código de Python para duplicar una capa (presentado por el desarrollador Giuseppe Sucameli):

Mientras tanto, seleccione la capa vectorial, luego abra la consola QGis python y ejecute:

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

El código anterior agrega al mapa la misma subcapa.

Es difícil hacerlo usando un script en Python de una línea igual que el anterior, pero si se conoce el nombre de subcapa que sólo puede reemplazar vl.source()con vl.source().split("|")[0] + "|layername=my_sublayer_name"donde my_sublayer_name es el nombre de su subcapa.

Aparece después de ejecutar el código de duplicación, tendrá que copiar / pegar el estilo de la capa original.

dakcarto
fuente
Funciona perfectamente. Al agregar 'v' como clave para pegar el estilo de capa, la duplicación de la capa y el estilo solo lleva unos segundos.
Simbamangu 01 de
Esta característica se implementa en la revisión c11df1aa79. hub.qgis.org/projects/quantum-gis/repository/revisions/…
Vladimir
2
El enlace de Python para ese commit a la rama maestra funciona así: iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()donde my_layer es un QgsMapLayer que se establece en la capa activa y seleccionada en la leyenda; luego, actionDuplicateLayer () se activa para trabajar en las capas seleccionadas en la leyenda (su valor predeterminado).
dakcarto
1

Las versiones recientes de QGIS ahora tienen la opción "Duplicar capa". Haga clic con el botón derecho en la capa que desea duplicar e insertará una nueva copia justo debajo.

Nota al margen: Parece que debe presionar View --> Refreshpara que los cambios realizados en una capa se propaguen a la siguiente.

usuario94812
fuente