Sử dụng lớp bộ nhớ làm đầu vào và / hoặc đầu ra với runache?


9

Một lớp bộ nhớ có thể được sử dụng làm đầu vào và / hoặc đầu ra với runache không?

Với runandload tôi có thể làm việc này:

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

Tham số 2 và 3 là các lớp đầu vào, đã có trong bộ nhớ và tham số 3 là lớp đầu ra, được ghi vào bộ nhớ và được sử dụng trong công cụ sau (Hòa tan). Điều này hoạt động tốt, nhưng khi tôi cố gắng sử dụng cùng một logic với runache , thì lớp hợp nhất của tôi trong bộ nhớ dường như không được tạo ra, vì công cụ Dissolve không bao giờ chạy. Ví dụ, sau đây sẽ không hoạt động:

 processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")

Tôi có thể giả sử rằng runache không chấp nhận các lớp trong bộ nhớ hoặc nó không thể xuất ra bất kỳ?


Câu trả lời:


4

Không hoàn toàn chắc chắn tại sao phương thức của bạn không hoạt động nhưng phương pháp khác là sử dụng Nonekhi sử dụng runalgvì điều này cũng sẽ tạo ra một đầu ra trong bộ nhớ. Dưới đây tôi đã xác định quy trình đầu tiên là output_0và gọi kết quả của quy trình này là đầu vào cho quy trình thứ hai:

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

Kết quả:

Kết quả


Đã thử nghiệm trên QGIS 2.16.0-Nødebo với Xử lý plugin v2.12.2.

Lưu ý rằng qgis:mergevectorlayers bây giờ yêu cầu một danh sách các lớp đầu vào.


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.