Bắt phạm vi lớp trong PyQGIS?


10

Tôi đang cố gắng viết một kịch bản xử lý bằng r.neighborsthuật toán cỏ cho các trình quét. Khi bạn sử dụng Gui cho thuật toán này, bạn có thể để lại phạm vi trường phạm vi lớp GRASS để sử dụng phạm vi tối thiểu. Ngược lại, khi được sử dụng trong bảng điều khiển python, tôi không thể tìm thấy cách nhập loại giá trị "mặc định" này.nhập mô tả hình ảnh ở đây

Tôi thấy trên https://docs.qgis.org/2.2/en/docs/user_manual/ Processing / console.html rằng dường như bắt buộc phải nhập bốn tọa độ cho một tham số phạm vi. Tôi đã thử sử dụng iface.mapCanvas().extent()nhưng đối tượng trả về không được chấp nhận làm tham số và tôi không thể tìm cách lấy tọa độ của nó ..

Có cách nào để có được xmin, ymin, xmax, ymaxlớp trong PyQGIS để nhập chúng vào thuật toán không? Tôi đang làm điều đó hoàn toàn sai?


Cám ơn câu trả lời của bạn, tôi thấy giải pháp này ở bên cạnh tôi quá ... Trong thực tế nó đã được cũng đã trả lời trong một cách tương tự trong gis.stackexchange.com/questions/213428/... nhưng ngoặc sau khi extentbị thiếu nên nó không hoạt động .. .
Clement

Câu trả lời:


12

Câu trả lời gần như hoàn toàn có trong một bài đăng tôi mới viết.

Phạm vi được trả về dưới dạng đối tượng QssRonymous () với mã sau:

layer = iface.activeLayer() # load the layer as you want
ext = layer.extent()

Để lấy tọa độ của các đỉnh cho lớp hiện tại, bạn có thể chạy mã này:

xmin = ext.xMinimum()
xmax = ext.xMaximum()
ymin = ext.yMinimum()
ymax = ext.yMaximum()
coords = "%f,%f,%f,%f" %(xmin, xmax, ymin, ymax) # this is a string that stores the coordinates

Cuối cùng, bạn có thể chạy mã sau để sử dụng r.neighborsmô-đun từ Bảng điều khiển Python:

processing.runalg("grass7:r.neighbors",layer,0,3,False,False,"",coords,0,None)

5

bạn đã đi đúng hướng bạn chỉ cần tiến thêm một bước. Xem tài liệu của QGIS cho QssR chữ nhật

Về cơ bản, bạn làm:

  • lấy lớp hiện tại

    layer = iface.activeLayer()
  • có được mức độ là một đối tượng QSSR chữ nhật

    ex = layer.extent()
  • và ở đó trích xuất các Giá trị với:

    xmax = ex.xMaximum()
    ymax = ex.yMaximum()
    xmin = ex.xMinimum()
    ymin = ex.yMinimum()
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.