Извините за то, что снова оживил эту тему, но никогда не делал эту работу, и теперь мне это нужно снова. В консоли Pyhton я получаю два слоя Layer = qgis.utils.iface.activeLayer()и InputLayer = qgis.utils.iface.activeLayer(). Затем я использую processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")и новый слой добавляется в меню слоев с именем Clipped . Но слой пуст. Если я использую эти два слоя с функцией клипа в Qgis, выходной слой содержит строки из отсечения. Кто-нибудь, кто может быть не так? Я не получаю никаких ошибок.
Ток
Это работает, если я использую два многоугольника, но один из моих слоев - это линия, а не многоугольник. Он содержит несколько строк, и я могу использовать этот слой для отсечения, когда делаю это в Qgis.
Ток
2
Вы должны иметь выбранные функции, которые вы хотите обрезать. Я отредактировал ответ, чтобы отразить это.
Мистер Пурпур,
Как сделать это без создания шейп-файлов? У меня есть слой с сотнями многоугольников в форме диска, который я хочу перебрать, используя каждый в качестве наложения для одного слоя точечных данных. Могу ли я просто получить список объектов QgsFeature?
Дж. Тейлор
Вы должны задать это как отдельный вопрос
г-н Пурпур
5
Предполагая, что у вас есть слой с именем «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")
Ответы:
Конечно, вы можете получить функцию из панели инструментов обработки. Вот как это использовать: Согласно http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html
Из консоли вы можете получить список всех доступных алгоритмов, которые содержат слово «клип», набрав:
Тогда вы можете узнать, как использовать то, что кажется наиболее подходящей функцией с:
Затем просто используйте алгоритм в вашем скрипте следующим образом:
Примечание: алгоритм будет работать только на отдельных функциях »
Примечание выше код недействителен для 3.0+ для примера alglist, который вы можете сделать:
для примера alghelp вы можете сделать:
Для QGIS3 см. Этот вопрос:
Что такое новый alglist и alghelp в обработке QGIS 3.0?
источник
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».
источник