ไวยากรณ์เคียวรี QGIS แตกต่างกันระหว่างตารางแอ็ตทริบิวต์และตัวกรองคุณลักษณะ


11

การใช้ QGIS 2.16.2 ฉันสามารถเลือกบันทึกจากตารางแอ็ตทริบิวต์ shapefile ได้สำเร็จโดยใช้นิพจน์ต่อไปนี้:

left("start_time", 10) = '2015-08-01'

โปรดทราบว่า start_time เป็นเขตข้อมูลสตริง

อย่างไรก็ตามเมื่อฉันคัดลอกและวางนิพจน์เดียวกันลงในคุณสมบัติชั้นของ Shapefile> ทั่วไป> ตัวกรองคุณสมบัติ> ตัวสร้างแบบสอบถามฉันได้รับข้อผิดพลาดดังต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันคาดหวังว่าการแสดงออกเดียวกันจะทำงานได้ทุกที่ใน QGIS ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


12

การสังเกตของคุณถูกต้องตัวสร้างแบบสอบถามไม่ได้ใช้ไวยากรณ์เดียวกับส่วนที่เหลือของ QGIS

ตลอด QGIS ไวยากรณ์จะขึ้นอยู่กับQGIS นิพจน์ภาษา SQL ที่กำหนดเอง นี่เป็นแบบพกพาระหว่างเกือบทุกส่วนของ QGIS ที่คุณสามารถป้อนตัวกรองคำนวณค่า ... ไวยากรณ์นี้จะถูกวิเคราะห์และประเมินโดยตรงใน QGIS (และบางส่วนของมันอาจถูกส่งไปยังผู้ให้บริการ)

กรองคุณสมบัติผู้ให้บริการที่กำหนดไว้ผ่านทางสร้างแบบสอบถาม (ยังมักจะเรียกว่าสตริงเซต ) สำหรับชั้นทำงานที่แตกต่างกันในทางที่ QGIS ไม่ได้ดูเลย สิ่งที่มันทำคือส่งให้ผู้ให้บริการ ในกรณีนี้ผู้ให้บริการคือOGR ซึ่งสนับสนุนชุดย่อยของไวยากรณ์ SQLเท่านั้น แต่บางครั้งก็มีประสิทธิภาพมากเช่นเมื่อเข้าถึงฐานข้อมูล postgres / postgis


ดีแล้วที่รู้. ฉันใช้คิวรีต่อไปนี้ในตัวกรองและแทนที่การเลือกที่ฉันพยายามก่อนหน้านี้อย่างถูกต้อง: "start_time" ชอบ '2015-08-01%'
Stu Smith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.