Sử dụng Máy tính trong Trình tạo mô hình đồ họa của QGIS


8

máy tính mô hình hóa đồ họa của QGIS không dẫn đến câu trả lời, tôi sẽ thử vận ​​may của mình ở đây một lần nữa. Tôi đã tạo một mô hình đơn giản trong QGIS 2.18.16 để tính khoảng cách dựa trên phạm vi của raster và một số phép chia nhất định, được người dùng đặt làm tham số. Về cơ bản, nó sẽ giống với công cụ Fishnet từ ArcGIS. Mô hình trông như thế này:

Mô tả trong máy tính cho tôi biết như sau:

Theo đó, tôi thiết lập công thức của mình như sau:

(e - d) / b    # this should give me the segment length
(g - f) / a    # this should give me the segment height

Nhật ký từ mô hình chạy sau đó cung cấp cho tôi thông báo lỗi sau:

Parameters: 
    FORMULA =(g-f)/a, 
    NUMBER0 =2, 
    NUMBER1 =3125884.941, 
    NUMBER2 =3135324.941, 
    NUMBER3 =None, NUMBER4 =None, NUMBER5 =None, NUMBER6 =None, NUMBER7 =None, NUMBER8 =None, NUMBER9 =None
Failed
Error executing algorithm Calculator Wrong formula: (None-None)/2

Thật không may, Tài liệu trống rỗng. Bất cứ ai có thể cho tôi biết làm thế nào để thiết lập các biến chính xác?


Trên thực tế, câu hỏi KHÔNG phải là về cách tạo ra một fishnet, mà là về việc sử dụng máy tính một cách chính xác
s6hebern

Câu trả lời:


3

Tôi nghĩ rằng đây là một vấn đề với mã trong tệp (đối với tôi đường dẫn là /QGIS 2.18/apps/qgis/python/plugins/processing/modeler/CalculatorModelerAlgorithm.py:). Có vẻ như khi chạy thuật toán, mã lặp qua tất cả các biến có sẵn (đó là 10) và gán cho chúng giá trị tương ứng của chúng.

Nhưng điều này dường như chỉ hoạt động nếu tất cả các biến được nêu trong công thức của bạn, nếu không, chỉ các biến có trong công thức của bạn sẽ được cung cấp một tham số ( NUMBERX). Tức là từ nhật ký của bạn:

Parameters: 
    FORMULA =(g-f)/a, 
     NUMBER0 =2,   --> a
     NUMBER1 =3125884.941,   --> f
     NUMBER2 =3135324.941,   --> g

Biện pháp khắc phục nhanh là viết công thức của bạn và bao gồm tất cả các biến không được sử dụng bằng cách nhân chúng với 0.


  • Vì vậy, đối với máy tính đầu tiên của bạn, hãy thử thay thế:

    (e - d) / b
    

    với:

    (e - d) / b + (a+c+f+g)*0
    
  • Và đối với máy tính thứ hai của bạn, hãy thử thay thế:

    (g - f) / a
    

    với:

    (g - f) / a + (b+c+d+e)*0
    

1
Đúng, đó là nó. Mặc dù tôi không biết tại sao nó lại phức tạp
s6hebern

@ s6hebern - Tôi nghĩ với một chút chỉnh sửa mã, vấn đề này có thể được giải quyết nhưng rất vui vì cách giải quyết này :)
Joseph

Bây giờ tôi đang gặp phải một vấn đề khác liên quan gián tiếp đến vấn đề này ... thuật toán Tạo lưới cần CRS, nhưng tôi không thể sử dụng nó làm tham số. Bất kỳ đề xuất? Hoặc đăng một câu hỏi mới?
s6hebern

@ s6hebern - Bài đăng tốt hơn là một câu hỏi mới (với mức độ chi tiết tương tự bạn đã đăng ở đây) và hy vọng những người khác có thể tư vấn vì nó nghe có vẻ lạ.
Joseph

1

Tôi nghĩ plugin này "Tạo lưới Vector được lập chỉ mục" có thể giúp bạn.


Tôi biết chức năng đó, nhưng như đã nêu trong câu hỏi và nhận xét bên dưới nó, nó không phải là về việc tạo lưới nói riêng, mà là về ký hiệu chính xác trong máy tính.
s6hebern
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.