กำลังรับรายการค่าที่แตกต่างจากฟิลด์รูปร่างไฟล์โดยใช้ QGIS?


18

ฉันมีรูปร่างไฟล์ที่คุณสมบัติฉันสามารถกรองได้โดยระบุส่วนคำสั่งที่ไหนในกล่องโต้ตอบแบบสอบถาม Fx ฉันมีฟิลด์ชื่อ 'city_name' และโดยระบุ 'city_name = "London"' ในตำแหน่งที่แสดงเฉพาะลอนดอนเท่านั้น สิ่งที่ฉันต้องการทำตอนนี้คือดึงค่าทั้งหมดใน 'city_name' จากตารางคุณลักษณะ

อะไรแบบนั้น:

select distinct city_name from [attribute table]

ฉันพบเครื่องมือหลายอย่างใน QGIS ที่เห็นได้ชัดว่าเกี่ยวข้องกับ SQL และฉันก็ดูที่ปลั๊กอินต่าง ๆ อย่างรวดเร็ว แต่ฉันไม่สามารถเชื่อมต่อกับฐานข้อมูลหรือชื่อตาราง ... ฐานข้อมูลใดหรือตารางใดในกรณีนั้น

ในที่สุดฉันต้องการส่งออกรายการผลลัพธ์และใช้เพื่อการประมวลผลเพิ่มเติม

ฉันใช้ QGIS 1.8

คำตอบ:


32

อัปเดตคำตอบ (เวอร์ชั่น QGIS> = 2.14)

ตั้งแต่ QGIS 2.14คุณสามารถใช้คำสั่ง SQL วิ่งบนเลเยอร์เวกเตอร์ใด ๆ ที่โหลดโดยใช้ชั้นเสมือน

  1. มีชั้นโหลดใน QGIS ไปที่ชั้น> เพิ่มเลเยอร์> เพิ่ม / แก้ไขเลเยอร์เสมือน ;
  2. ในกล่องโต้ตอบสร้างเลเยอร์เสมือนให้ป้อนคำสั่ง SQL ในฟิลด์คิวรี สิ่งที่ต้องการ:

    เลือก DISTINCT city_name จาก layer_name

  3. สำหรับชุดรูปทรงเรขาคณิต No Geometry

  4. คลิกตกลงและตารางจะโหลดใน QGIS ด้วยค่าที่ไม่ซ้ำกันที่ต้องการ

หมายเหตุ: ตารางนี้จะได้รับการอัปเดตหากมีการเพิ่มค่าใหม่ในคอลัมน์ city_name

คำตอบเดิม (รุ่น QGIS <2.14)

คุณมีทางเลือกน้อยที่จะทำสิ่งที่คุณถาม

  1. นำเข้า shapefile ของคุณในฐานข้อมูล Spatialite หรือ Postgis จากนั้นคุณสามารถสืบค้นตารางของคุณโดยใช้คำสั่ง SQL ที่สมบูรณ์
  2. ใช้เครื่องมือละลาย (Vector> เครื่องมือประมวลผลทางภูมิศาสตร์> ละลาย) เพื่อละลายรูปร่างไฟล์ของคุณโดยใช้ฟิลด์ "city_name" แม้ว่าจะเป็นวิธีที่แปลก แต่ไฟล์ dbf ของ shapefile ที่ได้จะให้รายชื่อที่คุณต้องการ
  3. ดูปลั๊กอินสถิติกลุ่ม (1.6)คุณสามารถใช้ "city_name" เป็นฟิลด์การจัดหมวดหมู่และกดคำนวณ มันจะคำนวณสถิติบางอย่างเกี่ยวกับแต่ละเมืองคุณสามารถคัดลอกผลลัพธ์และแยกรายชื่อเมือง

ฉันเพิ่งสังเกตเห็นว่าในVector> เครื่องมือวิเคราะห์มีเครื่องมือค่าเฉพาะรายการที่มีความแม่นยำสิ่งที่ต้องการสำหรับงานนี้ ง่ายมาก ... ไม่มีวิธีแก้ปัญหาและไม่จำเป็นต้องใช้ปลั๊กอิน


6

ใช้ QGIS DB Manager และเข้าถึง shapefile ของคุณผ่าน 'เลเยอร์เสมือน'

จากนั้นคุณสามารถใช้หน้าต่าง SQL และเขียนแบบสอบถามของคุณ:

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


1
นี่คือตอนนี้ (QGIS 2.14+) คำตอบที่ถูกต้อง
Alexandre Neto


-1

ใช้ตัวสร้างแบบสอบถามใน QGIS ไปที่ฟิลด์ชื่อเมืองในฟิลด์ในตัวสร้างแบบสอบถาม ไปที่ค่าเพิ่มทั้งหมด ลบ nulls ใด ๆ

สร้างสคริปต์ที่คล้ายกับชื่อเมือง = "london" และชื่อเมือง = "ปารีส" จนกว่าคุณจะมีรายชื่อทั้งหมดและเรียกใช้สคริปต์ ตอนนี้ชื่อเมืองทั้งหมดจะถูกเลือก คุณสามารถส่งออกสิ่งที่เลือกเป็นไฟล์รูปร่างและนำเข้าสู่ฐานข้อมูล postgresql

หากต้องการใช้แบ็กเอนด์ postgresql เพื่อ QGIS ให้ติดตั้งสแต็ก postgresql ด้วย geoserver, postgresql และ databse ที่เปิดใช้งาน postgis ใน postgresql คุณจะต้องเชื่อมต่อ QGIS กับเซิร์ฟเวอร์ เล่นรอบเล็กน้อยและคุณจะคิดออก

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