Ответы:
Конечно, вы можете получить функцию из панели инструментов обработки. Вот как это использовать: Согласно http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html
Из консоли вы можете получить список всех доступных алгоритмов, которые содержат слово «клип», набрав:
import processing
processing.alglist("clip")
Тогда вы можете узнать, как использовать то, что кажется наиболее подходящей функцией с:
processing.alghelp("qgis:clip")
Затем просто используйте алгоритм в вашем скрипте следующим образом:
processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")
Примечание: алгоритм будет работать только на отдельных функциях »
Примечание выше код недействителен для 3.0+ для примера alglist, который вы можете сделать:
print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])
для примера alghelp вы можете сделать:
processing.algorithmHelp("qgis:clip")
Для QGIS3 см. Этот вопрос:
Layer = qgis.utils.iface.activeLayer()
и InputLayer = qgis.utils.iface.activeLayer()
. Затем я использую processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")
и новый слой добавляется в меню слоев с именем Clipped . Но слой пуст. Если я использую эти два слоя с функцией клипа в Qgis, выходной слой содержит строки из отсечения. Кто-нибудь, кто может быть не так? Я не получаю никаких ошибок.
Предполагая, что у вас есть слой с именем «overlay» и загружен еще один «layer_to_clip».
# 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")