มีวิธีกำหนดหมายเลขแถวสำหรับตารางที่เรียงตามคอลัมน์ใน QGIS หรือไม่?


13

เครื่องคิดเลขภาคสนามมีฟังก์ชั่นที่ยอดเยี่ยมภายใต้ "บันทึก" เรียกว่า "$ rownum" ซึ่งส่งกลับ (กำหนด) จำนวนแถวปัจจุบัน

มีวิธีที่จะทำให้มันทำงานร่วมกับการเรียงลำดับได้หรือไม่? ให้บอกว่าฉันต้องการจัดเรียงตารางตามคอลัมน์ "ความยาว" และรับลำดับ (ลำดับ) ของเส้นตามความยาวจากสั้นที่สุดไปยาวที่สุด

ฉันรู้ว่าฉันสามารถใช้ซอฟต์แวร์สเปรดชีต office ได้อย่างง่ายดายเพื่อเรียงลำดับตามคอลัมน์และเติมคอลัมน์ใหม่พร้อมลำดับ (ลำดับ) แต่ฉันต้องการทำงานทั้งหมดใน QGIS

อัปเดต: เนื่องจากวิธีแก้ไขปัญหายังมีวิธีเปลี่ยนลำดับของคุณลักษณะใน Shapefile อย่างไร - การใช้ปลั๊กอิน mmqgis และฟังก์ชั่นแก้ไข / เรียงลำดับและหลังจากนั้นใช้ "$ rownum" ในไฟล์ที่บันทึกใหม่

คำตอบ:


20

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

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


มันดูยอดเยี่ยม ฉันจะทดสอบปลั๊กอินนี้ตอนนี้ขอบคุณ
Miro

เมื่อติดตั้งเป็นครั้งแรกใน 2.8 มันเกิดข้อผิดพลาดบางส่วน แต่หลังจากการทดสอบใน 2.14 และย้อนกลับไปใน 2.8 มันทำงานได้ดี ขอบคุณ.
Miro

@Miro: ยินดีต้อนรับ ฉันหวังว่ามันจะเป็นประโยชน์สำหรับคนอื่นด้วย
ArMoraer

@ArMoraer - ปลั๊กอินที่ยอดเยี่ยม!
Joseph

1
คุณสามารถบันทึกสิ่งนี้ให้กับ Bonn 3 ได้ -> ฉันชอบเครื่องมือนี้
lowsparked

7

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

SELECT 
    * ,
    (SELECT count(*) FROM your_layer AS b WHERE a.length >= b.length) AS length_position
FROM your_layer AS a 
ORDER BY a.length

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