Câu trả lời:
Chắc chắn Bạn có thể nhận được chức năng từ hộp công cụ xử lý. Dưới đây là cách sử dụng: Theo http://docs.qgis.org/2.8/en/docs/user_manual/ Processing / console.html
Từ bảng điều khiển, bạn có thể nhận được danh sách tất cả các thuật toán có sẵn có chứa từ "clip" bằng cách nhập:
import processing
processing.alglist("clip")
Sau đó, bạn có thể tìm hiểu cách sử dụng chức năng phù hợp nhất với:
processing.alghelp("qgis:clip")
Sau đó, chỉ cần sử dụng thuật toán trong tập lệnh của bạn như sau:
processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")
Lưu ý: Thuật toán sẽ chỉ hoạt động trên các tính năng bị trượt "
Lưu ý mã trên không hợp lệ cho 3.0+ cho ví dụ về đại số bạn có thể làm:
print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])
ví dụ về alghelp bạn có thể làm:
processing.algorithmHelp("qgis:clip")
Đối với QGIS3 xem câu hỏi này:
Layer = qgis.utils.iface.activeLayer()
và InputLayer = qgis.utils.iface.activeLayer()
. Sau đó, tôi sử dụng processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")
và lớp mới được thêm vào menu Lớp với tên Clipped . Nhưng lớp trống rỗng. Nếu tôi sử dụng hai lớp này với chức năng clip trong Qgis, lớp đầu ra có các dòng từ cắt. Bất cứ ai có thể sai? Tôi không nhận được bất kỳ lỗi nào.
Giả sử rằng bạn có một lớp được gọi là "lớp phủ" và một lớp khác gọi là "layer_to_clip" được tải.
# 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")