เลือก feature ที่มี Attribute บางตัวตรงกัน โดยอัตโนมัติ แบบเร็ว ๆ ใน QGIS ทำอย่างไร? ตัวอย่าง ถ้าคลิกที่รูปแปลงที่ดินใดแล้ว หากค่า Attribute ในฟิลด์ ST_Value ตรงกันกับแปลงที่เลือก ก็ให้เลือกขึ้นมาทั้งหมด จะได้รู้ว่าอยู่ตรงไหนบ้าง

ท้าวความ…เมื่อไม่กี่วันก่อน ได้พูดคุยกับผู้ร่วมงาน ซึ่งกำลังทำงานใน QGIS แล้วต้องค้นหาว่า ข้อมูลที่ดินซึ่งต้องการนั้นมีแปลงอื่นที่มีข้อมูลแบบเดียวกัน อยู่ตรงไหนบ้าง สมมติ จะดูว่าแปลงที่ดินนี้ มีข้อมูล St_Value เท่าไหร่ แล้วแปลงอื่น ๆ ที่มีข้อมูล ST_Value นี้เท่ากัน อยู่ตรงไหนบ้าง

ซึ่งวิธีที่ผู้ร่วมงานท่านนี้ใช้คือ คลิกเลือกแปลงที่ต้องการ เปิด Attribute Table มาดูว่า ST_Value เป็นเท่าไหร่ แล้วใช้ Query หา แปลงที่ดินที่มี ST_Value เท่ากัน

เลือก Attribute ที่เหมือนกัน

ตอนแรก ก็สอบถามไปว่า ทำไมไม่กำหนด Symbology แยกตามค่าของ ST_Value ที่ต้องการเลยล่ะ จะได้เห็นชัด ๆ โดยไม่ต้องคลิกเลือกอะไรด้วยซ้ำ ก็ได้รับคำตอบว่าเนื่องจากข้อมูลในฟิลด์ ST_Value นี้มีความหลากหลายมาก ถ้ากำหนดสีตามค่า น่าจะมีความลายพร้อยลานตาไปหมด และอาจจะเห็นสีที่ใกล้เคียงกันเป็นสีเดียวกันหรือเปล่า?

พอเอาข้อมูลมาดู ค่า ST_Value มีความหลากหลายตั้งแต่ 500 จนถึงหลักล้าน น่าจะแยกด้วย Symbology ไม่ไหวจริง ๆ

ก็โอเค พอจะเข้าใจอยู่ว่าทำไมถึงต้องมาคลิกเลือกทำ Query กันทีละครั้ง

คือจริง ๆ วิธีนี้มันก็ง่ายอยู่แล้วแหละ แต่จะหาวิธีที่ง่ายกว่านี้อีก มีหรือไม่? ก็ค้นไปจนเจอ https://docs.qgis.org/3.16/en/docs/training_manual/create_vector_data/actions.html (ตอนที่เขียนอยู่นี้ ใช้ QGIS 3.16.6 นะจ๊ะ) วิธีนี้เป็นการสร้าง Actions หรือ “ชุดกลุ่มคำสั่ง” (อันนี้เรียกเอง ไม่รู้ภาษาไทยใช้อะไร) คืออะไรที่เราทำซ้ำ ๆ แบบเดิม เราก็สร้าง Action มาใช้ แบบเดียวกับ macro ใน excel หรือ access นั่นแล สาธุชน

วิดีโอแสดงตัวอย่าง

สร้าง Actions เลือก feature ที่มี Attribute บางตัวตรงกัน

ทำความเข้าใจกันก่อน ครั้งนี้จะกำหนดว่า ถ้าคลิกที่รูปแปลงที่ดินใดแล้ว หากค่า Attribute ใน ST_Value ตรงกันกับรูปแปลงที่เลือก ก็ให้เลือกขึ้นมาทั้งหมด จะได้รู้ว่าอยู่ตรงไหนบ้าง

ตัวอย่างนี้ จะทำงานกับ layer ชื่อ parcel_10050000_47

  1. คลิกขวา Properties ตรงชื่อ Layer
  2. ดูตรงฝั่งซ้ายมือ เลือกหัวข้อ Actios
  3. คลิกเครื่องหมาย + (เพิ่ม Action ใหม่ – Add a New Action)
  4. เลือก Type เป็น Python ใส่ คำอธิบาย (Description) และชื่อเรียก (Shot Name) อย่างที่ต้องการ (แนะนำอย่างจริงใจอย่าใส่ 1234 หรืออะไรแบบนั้น ควรเขียนเพื่อให้รู้ว่า Action นี้ใช้ทำอะไร)

ตรงช่อง Action Text ใส่โค้ด

layer = QgsProject.instance().mapLayer('[% @layer_id %]')
layer.selectByExpression('"ST_VALUE"=\'[%ST_VALUE%]\'')

หมายเหตุ ใส่ชื่อฟิลด์ให้ถูก (ในที่นี้คือ ST_VALUE) ถ้าไม่แน่ใจ ดูตัวเลือกด้านล่าง จะมีช่องให้กดสามเหลี่ยมเพื่อเลือกชื่อฟิลด์ แล้วกด insert เพื่อแทรกได้

อ่านเพิ่มเติมเกี่ยวกับการใช้คำสั่ง python ได้ที่ เอกสารของ QGIS

คลิก OK

ใช้งาน

เวลาใช้งาน เจ้า Action ที่เราสร้างมานี้ จะไปอยู่ในเมนูด้านบน รูปหน้าตาจะเป็นฟันเฟือง (ถ้าไม่พบ ลองคลิกขวาที่เมนูบาร์ด้านบน เรียก Attribute Toolbar ขึ้นมา)

ลองคลิกปุ่มที่เราสร้างขึ้นมา อย่างในนี้เราเรียก Select_Attribute ที่สร้างไว้ แล้วมาคลิกเลือกแปลงที่ต้องการ หลังจากนั้น แปลงใดก็ตามที่มีข้อมูลในฟิลด์ ST_VALUE ตรงกับรูปแปลงที่เราคลิกก็จะโดนเลือกมาพร้อมกัน

อันนี้ก็เป็นวิธีหนึ่งที่หวังว่าจะเป็น Trick ในการทำงาน


Discover more from Data Revol

Subscribe to get the latest posts sent to your email.

Published by Data Revol

ไม่ต้องรู้จักผมหรอก

Exit mobile version