Як я можу дублювати шар у QGIS?


9

Я хотів би відображати однакові векторні дані різними способами, як різні шари. Хоча дуже зручно копіювати та вставляти стиль шару у версії 1.8+, було б непогано мати можливість вибрати шар та клацнути правою кнопкою миші, щоб скопіювати чи дублювати його безпосередньо.

Будь-який простий спосіб зробити це, як команда Python?


Оновлення: пропозиція @ dakcarto прекрасно працює. Оскільки мені потрібно було додати багато повторюваних шарів, я адаптував його до циклу стільки разів, скільки потрібно:

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

Єдина проблема полягає в тому, що новий шар стає activeLayer, тому він додає "_clone" та число до попереднього імені, що закінчується example_clone1, example_clone1_clone2, аж до непростих example_clone1_clone2_clone3_clone4_clone5. Потрібно розібратися, як дублювати з початково вибраного шару.


Це насправді не відповідь, але QGIS не проти, якщо два рази додати один і той же векторний шар до проекту.
L_Holcombe

так, пізніше я додав багато дублікатів, але лише "додаючи шар" і переглядаючи, щоб вибирати шар щоразу. Мінімум 4 кліки та деяка прокрутка, яка стає стомленою, коли потрібно дублювати шар 20 разів.
Simbamangu

1
@Simbamangu На це є різні погляди, я пройшов вікі GIS. Я безумовно ціную вашу думку, дозвольте мені поділитися своїм. Я розглядаю назву питання як напрямок, що стосується суті питання. Оскільки мова йде про питання, то вступи «Як я ...», «Чому так ...» не додають нічого нового, оскільки зрозуміло, що це питання. Це може зробити питання більш читабельним, але як би там не було, слід подивитися на частину питання, щоб побачити, про що йдеться. Подивитись цілу сторінку питань, що починаються з "Як я ...", принаймні для мене непродуктивно.
TomazicM

1
І чому я змінив назву вашого старого питання? Він зіткнувся на головній сторінці GIS через дію somebodyys, і я визнаю, що має (погану) звичку знімати "Як" та "Чому" частини питань.
TomazicM

1
@Simbamangu Я особисто віддаю перевагу питанням без "Як" і "Чому", оскільки ці слова нічого не додають до змісту. Вони можуть зробити заголовок більш читальним, але я не бачу жодної проблеми, якщо заголовок трохи неоднозначний, оскільки треба все-таки прочитати частину запитань, щоб побачити, про що йдеться. І я визнаю, що я почав видаляти це слово після того, як побачив, як це робить PolyGeo, а потім прочитав деякі мета-статті про добрі практики під час публікації / редагування питань.
TomazicM

Відповіді:


10

З цього приводу є два запити на функції ( №5899 та №1483 ). Це, безумовно, виконується функція, і, ймовірно, вона може бути включена у версію 2.0, якщо розробник зацікавлений у її додаванні; або, розробник плагінів Python розглядав це питання.

Випуск № 5899 також містить деякий код Python для дублювання шару (поданий розробником Джузеппе Сукамелі):

Тим часом виберіть векторний шар, потім відкрийте консоль пітона QGis і запустіть:

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

Попередній код додає на карту той же підшар.

Це важко зробити, використовуючи однорядковий скрипт python, як попередній, але якщо ви знаєте ім'я підшару, його можна просто замінити vl.source()на те, vl.source().split("|")[0] + "|layername=my_sublayer_name"де my_sublayer_name - це ім'я підшару.

Він з’являється після запуску коду дублювання, вам доведеться скопіювати / вставити стиль оригінального шару.


Працює чудово. Додавши "v" як ключ для вставки стилю шару, дублювання шару та стилю займає лише кілька секунд.
Simbamangu

Ця функція реалізована в редакції c11df1aa79. hub.qgis.org/projects/quantum-gis/repository/reitions/…
Володимир

2
Прив'язка Python для цього iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()комітету для управління гілкою працює так: де my_layer - це QgsMapLayer, який встановлений на активному обраному шарі в легенді; тоді запускається actionDuplicateLayer () для роботи над обраними шарами в легенді (за замовчуванням).
dakcarto

1

Останні версії QGIS тепер мають опцію "Дублікат шару". Клацніть правою кнопкою миші шар, який потрібно дублювати, і він вставить нову копію трохи нижче.

Бічна примітка: Здається, вам потрібно вдарити, View --> Refreshщоб зміни, внесені в один шар, перейшли до наступного.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.