Przepraszam, że ożywiłem ten temat, ale nigdy nie sprawiłem, że działa, a teraz potrzebuję go ponownie. W konsoli pyhonona dostaję dwie warstwy przez Layer = qgis.utils.iface.activeLayer()i InputLayer = qgis.utils.iface.activeLayer(). Następnie używam processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")i nowa warstwa jest dodawana do menu Warstwy o nazwie Obcięty . Ale warstwa jest pusta. Jeśli użyję tych dwóch warstw z funkcją klipu w Qgis, warstwa wyjściowa ma linie z wycięcia. Ktoś, kto może być nie tak? Nie otrzymuję żadnych błędów.
Toke
Działa, jeśli używam dwóch wielokątów, ale jedna z moich warstw to linia, a nie wielokąt. Zawiera kilka linii i mogę użyć tej warstwy do przycinania podczas robienia tego w Qgis.
Toke
2
Musisz wybrać funkcje, które chcesz przyciąć. Zredagowałem odpowiedź, aby to odzwierciedlić.
Mr Purple
Jak można to zrobić bez tworzenia plików kształtów? Mam warstwę z setkami wielokątów w kształcie dysku, które chcę iterować, wykorzystując każdą z nich jako nakładkę dla pojedynczej warstwy danych punktowych. Czy zamiast tego mogę w jakiś sposób uzyskać listę obiektów QgsFeature?
J. Taylor,
Powinieneś zadać to jako osobne pytanie
Mr Purple
5
Zakładając, że masz warstwę o nazwie „nakładka” i kolejną o nazwie „warstwa_do_clipa”.
# get the overlay layer in the console
overlay_layer =[x for x in iface.legendInterface().layers()if x.name()=='overlay'][0]# get the layer to clip in the console
layer_to_clip =[x for x in iface.legendInterface().layers()if x.name()=='layer_to_clip'][0]# run the algorithm and output the results in /tmp/output.shp
processing.runalg("qgis:clip", overlay_layer, layer_to_clip,"/tmp/output.shp")
Odpowiedzi:
Jasne, możesz uzyskać tę funkcję z przybornika przetwarzania. Oto jak z niego korzystać: zgodnie z http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html
Z konsoli można uzyskać listę wszystkich dostępnych algorytmów zawierających słowo „klip”, wpisując:
Następnie możesz dowiedzieć się, jak korzystać z najbardziej odpowiedniej funkcji za pomocą:
Następnie po prostu użyj algorytmu w skrypcie w następujący sposób:
Uwaga: algorytm będzie działał tylko na wybranych funkcjach ”
Uwaga: powyższy kod jest nieprawidłowy dla wersji 3.0+ dla przykładu alglist, który możesz wykonać:
na przykład alghelp możesz zrobić:
W przypadku QGIS3 zobacz to pytanie:
Co to jest nowa alglist i alghelp w przetwarzaniu QGIS 3.0?
źródło
Layer = qgis.utils.iface.activeLayer()
iInputLayer = qgis.utils.iface.activeLayer()
. Następnie używamprocessing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")
i nowa warstwa jest dodawana do menu Warstwy o nazwie Obcięty . Ale warstwa jest pusta. Jeśli użyję tych dwóch warstw z funkcją klipu w Qgis, warstwa wyjściowa ma linie z wycięcia. Ktoś, kto może być nie tak? Nie otrzymuję żadnych błędów.Zakładając, że masz warstwę o nazwie „nakładka” i kolejną o nazwie „warstwa_do_clipa”.
źródło
W najnowszej wersji PyQGIS powinien on działać w następujący sposób
Uwaga: Dane wyjściowe algorytmu będą miały tę samą geometrię co warstwa główna
Bibliografia:
źródło