Jak mogę powielić warstwę w QGIS?


9

Chciałbym wyświetlić te same dane wektorowe na różne sposoby jak różne warstwy. Chociaż bardzo przydatne jest kopiowanie i wklejanie stylu warstwy w wersji 1.8+, dobrze byłoby wybrać warstwę i kliknąć prawym przyciskiem myszy, aby skopiować lub powielić ją bezpośrednio.

Jakikolwiek prosty sposób, jak na przykład polecenie Python?


Aktualizacja: sugestia @ dakcarto działa idealnie. Ponieważ musiałem dodać wiele zduplikowanych warstw, dostosowałem go do zapętlania tyle razy, ile potrzeba:

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

Jedynym problemem jest to, że nowa warstwa staje się activeLayer, więc dodaje „_clone” i numer do poprzedniej nazwy, kończąc na example_clone1, example_clone1_clone2, aż do niewygodnego example_clone1_clone2_clone3_clone4_clone5. Musisz teraz dowiedzieć się, jak powielić z pierwotnie wybranej warstwy.


To naprawdę nie jest odpowiedź, ale QGIS nie ma nic przeciwko, jeśli dwukrotnie dodasz tę samą warstwę wektorową do projektu.
L_Holcombe

tak, dodałem wiele duplikatów później, ale tylko poprzez „dodanie warstwy” i przeglądanie w celu wybrania warstwy za każdym razem. Minimum 4 kliknięcia i przewijanie, co staje się męczące z powodu konieczności powielania warstwy 20 razy.
Simbamangu,

1
@Simbamangu Istnieją różne poglądy na ten temat, przeszedłem przez GIS wiki. Zdecydowanie doceniam twój pogląd, pozwól, że podzielę się moim. Uważam tytuł pytania za wskazówkę dotyczącą istoty pytania. Ponieważ chodzi tylko o pytania, a następnie wprowadzenie „Jak to zrobić ...”, „Dlaczego to jest…” nie dodawaj nic nowego, ponieważ jest jasne, że jest to pytanie. Może to uczynić pytanie bardziej czytelnym, ale w każdym razie musisz spojrzeć na treść pytania, aby zobaczyć, o co chodzi. Widok całej strony pytań rozpoczynających się od „Jak to zrobić ...” jest dla mnie co najmniej bezproduktywny.
TomazicM

1
A dlaczego zmieniłem tytuł twojego starego pytania? Wystąpił na stronie głównej GIS z powodu działań niektórych osób i przyznaję, że mam (zły) nawyk usuwania części pytań „Jak” i „Dlaczego”.
TomazicM

1
@Simbamangu Osobiście wolę pytania bez słów „Jak” i „Dlaczego”, ponieważ słowa te nie dodają nic do treści. Mogą sprawić, że tytuł stanie się bardziej czytelny, ale nie widzę żadnego problemu, jeśli tytuł jest nieco niejednoznaczny, ponieważ i tak trzeba przeczytać pytanie, aby zobaczyć, o co w tym wszystkim chodzi. Przyznaję, że zacząłem usuwać te słowa po tym, jak zobaczyłem, jak robi to PolyGeo, a potem przeczytałem kilka artykułów na temat dobrych praktyk podczas publikowania / edycji pytań.
TomazicM

Odpowiedzi:


10

Istnieją dwa żądania funkcji dotyczące tego ( # 5899 i # 1483 ). Jest to z pewnością możliwa do wykonania funkcja i prawdopodobnie mogłaby zostać uwzględniona w wersji 2.0, gdyby deweloper był zainteresowany jej dodaniem; lub deweloper wtyczek Python zastanowił się nad tym.

Numer # 5899 zawiera także kod Pythona do duplikowania warstwy (przesłany przez programistę Giuseppe Sucameli):

W międzyczasie wybierz warstwę wektorową, a następnie otwórz konsolę python QGis i uruchom:

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

Poprzedni kod dodaje do mapy tę samą podwarstwę.

Trudno to zrobić za pomocą jednowierszowego skryptu pythonowego, takiego jak poprzedni, ale jeśli znasz nazwę podwarstwy, możesz po prostu zastąpić vl.source()vl.source().split("|")[0] + "|layername=my_sublayer_name"nazwą gdzie moja_ podwładna_nazwa to nazwa podwarstwy.

Pojawia się po uruchomieniu kodu powielania, będziesz musiał skopiować / wkleić styl oryginalnej warstwy.


Działa świetnie. Dodając „v” jako klucz do wklejenia stylu warstwy, duplikacja warstwy i stylu zajmuje teraz tylko kilka sekund.
Simbamangu,

Ta funkcja jest zaimplementowana w wersji c11df1aa79. hub.qgis.org/projects/quantum-gis/repository/revisions/…
Vladimir

2
Wiązanie Python dla tego zatwierdzenia do gałęzi master działa w następujący sposób: iface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()gdzie my_layer jest QgsMapLayer ustawionym na aktywną, wybraną warstwę w legendzie; następnie actionDuplicateLayer () jest uruchamiany do pracy na wybranych warstwach w legendzie (domyślnie).
dakcarto

1

Najnowsze wersje QGIS mają teraz opcję „Duplikuj warstwę”. Kliknij warstwę prawym przyciskiem myszy, a nowa kopia zostanie wstawiona tuż poniżej.

Uwaga dodatkowa: Wydaje się, że musisz naciskać View --> Refreshzmiany wprowadzone w jednej warstwie, aby przejść do następnej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.