Gọi chức năng clip trong pyQGIS từ bảng điều khiển python?


10

Có cách nào để gọi chức năng clip trong QQGIS từ bảng điều khiển python không? Nó được tìm thấy dưới các công cụ xử lý địa lý trong menu vector.


Ok tôi đã sửa nó bằng cách sử dụng hàm multarts to singleparts trước. Sau đó, nó hoạt động.
Toke

Câu trả lời:


10

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:

Alglist và alghelp mới trong Xử lý QGIS 3.0 là gì?


Xin lỗi vì đã đưa chủ đề này vào cuộc sống một lần nữa, nhưng không bao giờ thực hiện được công việc này, và bây giờ tôi cần nó một lần nữa. Trong bảng điều khiển pyhton, tôi nhận được hai lớp Layer = qgis.utils.iface.activeLayer()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.
Toke

Nó hoạt động nếu tôi sử dụng hai đa giác, nhưng một trong các lớp của tôi là một dòng và không phải là đa giác. Nó chứa một vài dòng và tôi có thể sử dụng lớp này để cắt khi thực hiện nó trong Qgis.
Toke

2
Bạn cần phải có các tính năng mà bạn muốn chọn clip. Tôi đã chỉnh sửa câu trả lời để phản ánh điều này.
Mr Purple

Làm thế nào một người sẽ làm điều này mà không thực sự tạo ra shapefiles? Tôi có một lớp với hàng trăm đa giác hình đĩa mà tôi muốn lặp lại, sử dụng mỗi lớp như một lớp phủ cho một lớp dữ liệu điểm duy nhất. Thay vào đó bằng cách nào đó tôi có thể nhận được một danh sách các đối tượng QssFeature không?
J. Taylor

Bạn nên hỏi như một câu hỏi riêng biệt
Mr Purple

5

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")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.