วิธีการกรองเลเยอร์ QGIS จากไพ ธ อน?


9

การใช้คอนโซล Python ของ QGIS 2.4 ฉันพยายามแสดงเฉพาะเซ็ตย่อยของคุณสมบัติเลเยอร์ ฉันจัดการเพื่อรับคุณสมบัติทั้งจากเลเยอร์:

featuresIterator = layer.getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4'))

และจาก dataProvider:

featuresIterator = layer.dataProvider().getFeatures(QgsFeatureRequest().setFilterExpression ( u'"field"=4'))

(ฉันไม่แน่ใจที่จะเข้าใจความแตกต่าง)

สิ่งที่ฉันต้องการบรรลุในตอนนี้คือการแสดงเฉพาะคุณสมบัติเหล่านี้ ในลักษณะเดียวกับที่ใช้ในการสร้างแบบสอบถามจาก GUI ฉันไม่ทราบว่าจะต้องมีการจัดการที่ระดับการแสดงผล (ซึ่งจะทำให้คุณลักษณะบางอย่างและไม่ใช่คุณสมบัติอื่น ๆ ) หรือในระดับผู้ให้บริการข้อมูล (ซึ่งจะให้มุมมองข้อมูลที่มีเพียงชั้นเท่านั้น เซตย่อยที่ต้องการ) หรือที่อื่น ๆ ในระหว่างนั้น


คำตอบจาก @Nathan นั้นถูกต้อง นอกจากนี้เรายังสามารถรับสิ่งที่กำหนดโดย setSubsetString () หรือตัวสร้างแบบสอบถามโดยใช้ layer.subsetString () ถ้ามันว่างเปล่าจะมีการส่งคืนสตริงว่าง ''
Zac

คำตอบ:


13

วิธีการที่คุณค้นหาเรียกว่าsetSubsetString

layer.setSubsetString("field=4")

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