การสร้างคำสั่งแบบมีเงื่อนไขในเครื่องคำนวณภาคสนามของ QGIS


15

ฉันค้นหาคำถาม & คำตอบอื่น ๆ ในหัวข้อนี้ แต่ไม่มีใครได้พูดถึงสิ่งที่ฉันต้องการจะทำ

ฉันมีชุดข้อมูลขนาดใหญ่และฉันต้องการค้นหาเขตข้อมูลหนึ่งสำหรับค่าใด ๆ ในจำนวนที่กำหนด (ในกรณีนี้ 20) และหากค่ามากกว่า 20 ฉันต้องการส่งคืนค่า 1 ในสาขาอื่นมิฉะนั้น ส่งคืนค่า 0

ฉันได้ลองเขียนบางอย่างโดยไม่มีโชค

ฉันใช้ QGIS 2.8


ฉันพยายามที่จะคิดออกด่วนนี้ใน Qgis แต่มันไม่มีผลลัพธ์ กรณีเมื่อ "A" = '1' และ "LENGHT" <= 1 จากนั้น "C" = '4' อื่น ๆ ข้อผิดพลาดปลาย
giss

คำตอบ:


29

วิธีง่ายๆ

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการสร้างเขตข้อมูลใหม่ด้วยนิพจน์

"cat" > 20

นิพจน์นี้จะประเมินเป็นบูลีน True / False ซึ่งจะแสดงเป็นจำนวนเต็ม 1 หรือ 0

เขตข้อมูลเสมือน

คุณยังสามารถสร้างเขตข้อมูลเสมือนซึ่งจะส่งคืนค่าที่อัปเดตโดยอัตโนมัติในกรณีที่มีcatการเปลี่ยนแปลงค่า(เช่นคุณแก้ไขเลเยอร์) โปรดจำไว้ว่าค่าของเขตข้อมูลเสมือนจะไม่ถูกบันทึกในชุดข้อมูลและจะปรากฏเฉพาะในโครงการ QGIS นี้

มากกว่าบูลีน

หากคุณมีมากกว่า "ง่ายกว่า" คุณต้องใช้

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

6

ฉันเพิ่งทดสอบสิ่งนี้: คุณสามารถใช้เงื่อนไขได้หลายครั้ง:

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

....


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.