ตัวเรนเดอร์คลัสเตอร์ QGIS 3.0 จุดเป็นไปได้หรือไม่ที่จะควบคุมลำดับการเรนเดอร์ (ลำดับ z)


19

ฉันได้เล่นกับตัวแสดงคลัสเตอร์จุดใหม่ใน QGIS 3.0.2 และมันยอดเยี่ยมมากง่ายกว่าและเร็วกว่าการทำคลัสเตอร์ด้วยตัวคุณเอง

เพื่อแสดงสิ่งที่ฉันหมายถึงนี่คือตัวอย่างของอุบัติเหตุบนท้องถนนในเอดินบะระโดยใช้ข้อมูล STATS19 และรัศมี 30 เมตร

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

ฉันไม่สามารถหาวิธีตั้งค่า z-order เพื่อให้กลุ่มที่ใหญ่ที่สุดถูกดึงออกมาต่อหน้ากลุ่มที่เล็กกว่า

ฉันรับรู้ถึงตัวแปร@cluster_size - เป็นสิ่งที่ฉันใช้เพื่อปรับขนาดและสีสัญลักษณ์ สำหรับสิ่งนี้ฉันใช้ผู้ช่วยขนาดและสี ฉันลบเครื่องหมายแบบอักษรเพื่อลบข้อความออกจากแต่ละคลัสเตอร์

ขนาดของเครื่องหมายถูกกำหนดดังนี้: -

coalesce(scale_exp(@cluster_size, 0, 50, 1, 200, 0.57), 0)

สีของเครื่องหมายถูกกำหนดดังนี้: -

coalesce(ramp_color('custom ramp',scale_linear( @cluster_size, 0, 50, 0, 1), '#000000')

สิ่งที่ฉันได้ลองไปแล้ว: -

  • ระดับสัญลักษณ์ - ไม่มีโชค; ไม่สามารถเลือกชื่อตัวแปร
  • การสร้างเลเยอร์> ลำดับการแสดงผลคุณลักษณะการควบคุมและเลือก@cluster_sizeเป็นการจัดเรียง ดูเหมือนจะไม่มีผลกระทบ
  • สไตล์ที่สำเร็จการศึกษาโดยใช้@cluster_sizeเนื่องจากนิพจน์ไม่ทำงาน

ไม่มีใครรู้ว่าสิ่งนี้เป็นไปได้หรือเป็นข้อ จำกัด กับ renderer นี้โดยเฉพาะ?

ฉันรู้ว่ามีวิธีอื่นอีกมากมายในการทำเช่นนี้ (การรวมบัฟเฟอร์ / พื้นที่การเพิ่มปลั๊กอิน) แต่ตัวเรนเดอร์ใหม่ควรเร็วขึ้นมาก หรือว่าฉันมองข้ามบางสิ่งที่เห็นได้ชัด? :)


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

ขอบคุณ @Revo ดูเหมือนว่าจะเป็นไปได้ที่จะกำหนดขนาด & จัดเรียงในแอตทริบิวต์ (รวมถึง Cluster Point renderer) แต่ใช้งานได้ในระดับเดียวเท่านั้น ฉันพยายามใช้ cluster_size เนื่องจากขนาดของคลัสเตอร์เปลี่ยนแบบไดนามิกเมื่อฉันซูมเข้า / ออกโดยใช้ตัวแสดงจุดของคลัสเตอร์ ฉันจะดู MMQGIS (มีให้สำหรับ QGIS 3)
Steven Kay

คำตอบ:


2

ดูเหมือนว่าการใช้งานคลัสเตอร์จุดไม่อนุญาตให้กำเนิดนี้

พิจารณาตัวจัดทำคลัสเตอร์จุด - เป็นหลักในการวิเคราะห์และจัดกลุ่มข้อมูลชี้ ณ เวลาที่สร้างการสร้างเลเยอร์หลอกใหม่ ผู้ใช้ไม่สามารถเข้าถึงเลเยอร์นี้ หนึ่งไม่สามารถสอบถามจุดคลัสเตอร์ ฟิลด์หนึ่งไม่สามารถคำนวณแอตทริบิวต์@cluster_size

ตัวแสดงคลัสเตอร์จุดจะสืบทอดการแสดงผลคำสั่งจากแหล่งที่มาโดยใช้คำสั่งการแสดงผลคุณลักษณะการควบคุม ( QgsFeatureRequest :: OrderByClause) ปล่อยให้เปิดความเป็นไปได้ของวิธีแก้ปัญหาที่ชาญฉลาดบางอย่างโดยใช้คุณลักษณะและการแสดงออกอย่างไรก็ตามแผนการสั่งซื้อบางอย่าง

ยกตัวอย่างเช่นพิจารณาเลเยอร์จุดที่มีการแสดงผลที่สั่งจากน้อยไปมากโดยแอตทริบิวต์ "Latitude" ยิ่งมีการแสดงผลคะแนนเหนือมากขึ้นบนจุดใต้มากขึ้น ตัวแสดงจุดคลัสเตอร์ไม่มีแอตทริบิวต์ "Latitude" สำหรับคุณลักษณะใหม่แม้ว่ามันจะสืบทอดลักษณะบางส่วนของคำสั่งนั้นจากแหล่งที่มา อาจมีอินสแตนซ์เมื่อคลัสเตอร์ทางใต้เพิ่มเติมแสดงผลบนคลัสเตอร์ทางเหนือมากขึ้นเนื่องจากลำดับของคะแนนดั้งเดิม


ขอบคุณ นั่นเป็นคำอธิบายที่ชัดเจนมากซึ่งตอบคำถามของฉันด้วยว่าเป็นไปได้หรือไม่ที่จะคำนวณแอตทริบิวต์จากจุดที่เป็นกลุ่มกล่าวคือจำนวนผลรวมของประชากรที่เกี่ยวข้องกับจุดเริ่มต้นแต่ละจุด เห็นได้ชัดว่ายังไม่ .... มันจะเป็นคุณสมบัติที่มีประโยชน์มากแม้ว่า ความคิดเกี่ยวกับวิธีการนี้สามารถทำได้ด้วยวิธีการแก้ปัญหาบางอย่างสมาร์ท (ซึ่งไม่จำเป็นต้องมีการเข้ารหัสแม้ว่าฉันไม่ได้ (ยังอีกครั้ง?) ดีที่มัน) แม้ในทางคงที่? ฉันกำลังดิ้นรนเพื่อค้นหาเครื่องมือในการจัดกลุ่มจุดคล้ายกับวิธีที่มันทำโดย cluster-renderer
dorakiara

โดยทั่วไปคุณสามารถเข้าถึงสิ่งนี้ได้โดยการทำซ้ำสิ่งที่ตัวแสดงผลของคลัสเตอร์ทำร่วมกับฟังก์ชัน 'ลำดับการแสดงผลคุณลักษณะการควบคุม' โดยใช้แอตทริบิวต์ การผ่านครั้งแรกอย่างหยาบอาจเป็นการบัฟเฟอร์เลเยอร์จุดนับคะแนนในรูปหลายเหลี่ยมบัฟเฟอร์เป็นคุณลักษณะในเลเยอร์จุด ควบคุมลำดับการเรนเดอร์โดยคุณลักษณะนี้จากน้อยไปหามาก ค่อนข้างยุ่งยากและไม่จำเป็นว่าจะต้องทำงานในระดับที่แตกต่างกัน
CrystallineEntity

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