Tạo tuyên bố có điều kiện trong Máy tính trường QGIS


15

Tôi đã tìm kiếm một số câu hỏi và trả lời khác về chủ đề này, tuy nhiên, không có câu hỏi nào tôi muốn làm.

Tôi có một tập dữ liệu lớn và tôi muốn tìm kiếm một trường cho bất kỳ giá trị nào trên một số tiền nhất định (trong trường hợp này là 20) và nếu giá trị lớn hơn 20, tôi muốn trả về giá trị 1 trong trường khác, nếu không trả về giá trị 0.

Tôi đã thử viết một cái gì đó không có may mắn.

Tôi đang sử dụng QGIS 2.8.


Tôi đang cố gắng tìm ra biểu hiện này trong Qgis nhưng nó không có kết quả. Trường hợp KHI "A" = '1' và "LENGHT" <= 1 thì "C" = '4' ELSE ERROR END
giss

Câu trả lời:


29

Cách dễ dàng

Cách đơn giản nhất để làm điều này là tạo một trường mới với biểu thức

"cat" > 20

Biểu thức này sẽ ước tính thành Boolean Đúng / Sai sẽ được biểu diễn dưới dạng số nguyên 1 hoặc 0.

Trường ảo

Bạn cũng có thể tạo một trường ảo, nó sẽ tự động trả về một giá trị được cập nhật trong trường hợp các giá trị catthay đổi (ví dụ: bạn chỉnh sửa lớp). Hãy nhớ rằng các giá trị của các trường ảo sẽ không được lưu trong tập dữ liệu và chỉ hiển thị trong dự án QGIS này.

Nhiều hơn boolean

Nếu bạn có nhiều hơn một "lớn hơn" đơn giản, bạn cần sử dụng

CASE 
  WHEN "cat" > 100 THEN 2
  WHEN "cat" > 10 THEN 1
  ELSE 0
END

6

Tôi vừa thử nghiệm điều này: Bạn có thể sử dụng điều kiện nhiều lần:

WHEN    cat =   1   THEN    205
WHEN    cat =   2   THEN    215
WHEN    cat =   3   THEN    225
WHEN    cat =   4   THEN    235
...

....


4

Một cái gì đó như thế này có lẽ:

case 
when "FIELD" > 20 then 1
else 0 
end

Máy tính trường

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.