Я хотел бы отображать одни и те же векторные данные по-разному в разных слоях. Хотя очень удобно иметь возможность копировать и вставлять стиль слоя в 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())
Единственная проблема состоит в том, что новый слой становится активным слоем, поэтому он добавляет «_clone» и номер к предыдущему имени, заканчиваясь на example_clone1, example_clone1_clone2, до громоздкого example_clone1_clone2_clone3_clone4_clone5. Нужно выяснить, как дублировать изначально выбранный слой, сейчас.
Ответы:
По этому поводу есть два запроса ( # 5899 и # 1483 ). Это, безусловно, выполнимая функция, и она может быть включена в версию 2.0, если разработчик заинтересован в ее добавлении; или разработчик плагина Python уделил этому внимание.
В выпуске # 5899 также содержится некоторый код Python для дублирования слоя (предоставленный разработчиком Джузеппе Сукамели):
Появляется после запуска кода дублирования, вам придется скопировать / вставить стиль исходного слоя.
источник
iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()
где my_layer - это QgsMapLayer, который установлен на активный выбранный слой в легенде; затем actionDuplicateLayer () запускается для работы с выбранными слоями в легенде (по умолчанию).В последних версиях QGIS теперь есть опция «Duplicate Layer». Щелкните правой кнопкой мыши слой, который вы хотите дублировать, и он вставит новую копию чуть ниже.
Примечание: кажется, вам нужно нажать,
View --> Refresh
чтобы изменения, сделанные на одном слое, распространялись на следующий.источник