Answers:
确定您可以从处理工具箱中获取该功能。使用方法如下:按照http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html
从控制台中,您可以通过键入以下内容获取所有可用算法的列表,这些算法包含单词“ clip”:
import processing
processing.alglist("clip")
然后,您可以找出如何使用最合适的功能:
processing.alghelp("qgis:clip")
然后只需在脚本中使用算法,如下所示:
processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")
注意:该算法仅适用于选定的特征”
请注意,对于您可以执行的alglist示例,以上代码对于3.0+无效:
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中将这两层与clip函数一起使用,则输出层将包含来自裁剪的线。谁会出错?我没有任何错误。
假设您有一个称为“ 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")